aboutsummaryrefslogtreecommitdiffhomepage
path: root/inc/3rdparty/libraries/mpdf
diff options
context:
space:
mode:
Diffstat (limited to 'inc/3rdparty/libraries/mpdf')
-rw-r--r--inc/3rdparty/libraries/mpdf/CHANGELOG.txt2895
-rw-r--r--inc/3rdparty/libraries/mpdf/CREDITS.txt92
-rw-r--r--inc/3rdparty/libraries/mpdf/FONT INFO.txt164
-rw-r--r--inc/3rdparty/libraries/mpdf/LICENSE.txt340
-rw-r--r--inc/3rdparty/libraries/mpdf/README.txt148
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/barcode.php1966
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/bmp.php248
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/cssmgr.php1572
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/directw.php408
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/form.php1498
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/gif.php700
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/grad.php723
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/indic.php433
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/meter.php224
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/svg.php2703
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/tocontents.php467
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/ttfontsuni.php2065
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/ttfontsuni_analysis.php463
-rw-r--r--inc/3rdparty/libraries/mpdf/classes/wmf.php236
-rw-r--r--inc/3rdparty/libraries/mpdf/compress.php172
-rw-r--r--inc/3rdparty/libraries/mpdf/config.php572
-rw-r--r--inc/3rdparty/libraries/mpdf/config_cp.php153
-rw-r--r--inc/3rdparty/libraries/mpdf/config_fonts.php304
-rw-r--r--inc/3rdparty/libraries/mpdf/font/ccourier.php9
-rw-r--r--inc/3rdparty/libraries/mpdf/font/ccourierb.php9
-rw-r--r--inc/3rdparty/libraries/mpdf/font/ccourierbi.php9
-rw-r--r--inc/3rdparty/libraries/mpdf/font/ccourieri.php9
-rw-r--r--inc/3rdparty/libraries/mpdf/font/chelvetica.php20
-rw-r--r--inc/3rdparty/libraries/mpdf/font/chelveticab.php21
-rw-r--r--inc/3rdparty/libraries/mpdf/font/chelveticabi.php21
-rw-r--r--inc/3rdparty/libraries/mpdf/font/chelveticai.php21
-rw-r--r--inc/3rdparty/libraries/mpdf/font/csymbol.php21
-rw-r--r--inc/3rdparty/libraries/mpdf/font/ctimes.php21
-rw-r--r--inc/3rdparty/libraries/mpdf/font/ctimesb.php21
-rw-r--r--inc/3rdparty/libraries/mpdf/font/ctimesbi.php21
-rw-r--r--inc/3rdparty/libraries/mpdf/font/ctimesi.php21
-rw-r--r--inc/3rdparty/libraries/mpdf/font/czapfdingbats.php21
-rw-r--r--inc/3rdparty/libraries/mpdf/graph.php721
-rw-r--r--inc/3rdparty/libraries/mpdf/graph_cache/dummy.txt2
-rw-r--r--inc/3rdparty/libraries/mpdf/iccprofiles/SWOP2006_Coated5v2.iccbin2747744 -> 0 bytes
-rw-r--r--inc/3rdparty/libraries/mpdf/iccprofiles/sRGB_IEC61966-2-1.iccbin3052 -> 0 bytes
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/CJKdata.php101
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/functions.php152
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/ind_bn_1_001.volt.php3164
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/ind_gu_1_001.volt.php3314
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/ind_hi_1_001.volt.php4169
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/ind_kn_1_001.volt.php2994
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/ind_ml_1_001.volt.php1769
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/ind_or_1_001.volt.php2149
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/ind_pa_1_001.volt.php1444
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/ind_ta_1_001.volt.php394
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/ind_te_1_001.volt.php1489
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/no_image.jpgbin7888 -> 0 bytes
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/out.php59
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/subs_core.php454
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/subs_win-1252.php308
-rw-r--r--inc/3rdparty/libraries/mpdf/includes/upperCase.php975
-rw-r--r--inc/3rdparty/libraries/mpdf/mpdf.css20
-rw-r--r--inc/3rdparty/libraries/mpdf/mpdf.php32805
-rw-r--r--inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php98
-rw-r--r--inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php154
-rw-r--r--inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php363
-rw-r--r--inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php78
-rw-r--r--inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php690
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/NOTES.txt5
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/de.php9
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/dictionary.txt1
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/en.php10
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/es.php11
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/fi.php9
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/fr.php12
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/it.php11
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/nl.php11
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/pl.php9
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/ru.php12
-rw-r--r--inc/3rdparty/libraries/mpdf/patterns/sv.php12
-rw-r--r--inc/3rdparty/libraries/mpdf/progbar.css66
-rw-r--r--inc/3rdparty/libraries/mpdf/tmp/dummy.txt2
-rw-r--r--inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt2
-rw-r--r--inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt21488
-rw-r--r--inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php218
-rw-r--r--inc/3rdparty/libraries/mpdf/utils/font_collections.php72
-rw-r--r--inc/3rdparty/libraries/mpdf/utils/font_coverage.php255
-rw-r--r--inc/3rdparty/libraries/mpdf/utils/font_dump.php222
-rw-r--r--inc/3rdparty/libraries/mpdf/utils/font_names.php200
-rw-r--r--inc/3rdparty/libraries/mpdf/utils/index.php26
86 files changed, 0 insertions, 99320 deletions
diff --git a/inc/3rdparty/libraries/mpdf/CHANGELOG.txt b/inc/3rdparty/libraries/mpdf/CHANGELOG.txt
deleted file mode 100644
index 2e6a5f8f..00000000
--- a/inc/3rdparty/libraries/mpdf/CHANGELOG.txt
+++ /dev/null
@@ -1,2895 +0,0 @@
1===========================
2mPDF 5.7
314/07/2013
4===========================
5
6Files changed
7-------------
8config.php
9mpdf.php
10classes/tocontents.php
11classes/cssmgr.php
12classes/svg.php
13includes/functions.php
14includes/out.php
15examples/formsubmit.php [Important - Security update]
16
17Updated Example Files in /examples/
18-----------------------------------
19All example files
20mpdfstyleA4.css
21
22
23config.php
24----------
25Removed:
26 $this->hyphenateTables
27 $this->hyphenate
28 $this->orphansAllowed
29Edited:
30 "hyphens: manual" - Added to $this->defaultCSS
31 $this->allowedCSStags now includes '|TEXTCIRCLE|DOTTAB'
32New:
33 $this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-');
34 $this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2);
35 $this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2);
36 $this->CJKforceend = false; // Forces overflowng punctuation to hang outside right margin (used with CJK script)
37
38
39Backwards compatability
40-----------------------
41Changes in mPDF 5.7 may cause some changes to the way your documents appear. There are two main differences:
421) Hyphenation. To retain appearance compatible with earlier versions, set the CSS property "hyphens: auto" whenever
43 you previously used $mpdf->hyphenate=true;
442) 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:
45 - No indent (previous default of 5mm) - ($tocindent is ignored)
46 - Any font, font-size set ($tocfont or $tocfontsize) will not work
47 - HyperLinks will appear with your default appearance - usually blue and underlined
48 - line spacing will be narrower (can use line-height or margin-top in CSS)
49
50
51New features / Improvements
52---------------------------
53Layout of Table of Content ToC now controlled using CSS styles
54Text alignment on decimal mark inside tables
55Automatically generated bookmarks and/or ToC entries from H1 - H6 tags
56Support for unit of "rem" as size e.g. font-size: 1rem;
57Origin and clipping for background images and gradients controlled by CSS i.e. background-origin, background-size, background-clip
58Text-outline controlled by CSS (compatible with CSS3 spec.)
59Use of <dottab> enhanced by custom CSS "outdent" property
60Image HTML attributes <img> added: max-height, max-width, min-height and min-width
61Spotcolor can now be defined as it is used e.g. color: spot(PANTONE 534 EC, 100%, 85, 65, 47, 9);
62Lists - added support for "start" attribute in <ol> e.g. <ol start="5">
63Hyphenation controlled using CSS, consistent with CSS3 spec.
64Line breaking improved to avoid breaks within words where HTML tags are used e.g. H<sub>2<sub>0
65Line breaking in CJK scripts improved (and ability to force hanging punctuation)
66Numerals in a CJK script are kept together
67RTL improved support for phrases containing numerals and \ and /
68Bidi override codes supported - Right-to-Left Embedding [RLE] U+202B, Left-to-Right Embedding [LRE] U+202A,
69 U+202C POP DIRECTIONAL FORMATTING (PDF)
70Support for <base href=""> in HTML - uses it to SetBasePath for relative URLs.
71HTML tag - added support for <wbr> or <wbr /> - converted to a soft-hyphen
72CSS now takes precedence over HTML attribute e.g. <table bgcolor="black" style="background-color:yellow">
73
74
75
76Added CSS support
77-----------------
78- max-height, max-width, min-height and min-width for images <img>
79- "hyphens: none|manual|auto" as per CSS3 spec.
80- Decimal mark alignment e.g. text-align: "." center;
81- "rem" accepted as a valid (font)size in CSS e.g. font-size: 1.5rem
82- text-outline, text-outline-width and text-outline-color supported everywhere except in tables (blur not supported)
83- background-origin, background-size, background-clip are now supported everywhere except in tables
84- "visibility: hidden|visible|printonly|screenonly" for inline elements e.g. <span>
85- Colors: device-cmyk(c,m,y,k) as per CSS3 spec. For consistency, device-cmyka also supported (not CSS3 spec)
86- "z-index" can be used to utilise layers in the PDF document
87- Custom CSS property added: "outdent" - opposite of indent
88
89The HTML elements <dottab> and <textcircle> can now have CSS properties applied to them.
90
91
92Bug fixes
93---------
94- SVG images - path including e.g. 1.234E-15 incorrectly parsed (not recognising capital E)
95- Tables - if a table starts when the Y position on page is below bottom margin caused endless loop
96- Float-ing DIVs - starting a float at bottom of page and it causes page break before anything output, second new page is forced
97- Tables - Warning notice now given in Table footer or header if <tfoot> placed after <tbody> and table spans page
98- Columns - block with border-width wider than the length of the border line, line overflows
99- Columns - block with no padding containing a block with borders but no backgound colour, borders not printed
100- Table in Columns - when background color set by surrounding block element - colour missing for height of half bottom border.
101- TOCpagebreakByArray() when called by function was not adding the pagebreak
102- Border around block element - dashed not showing correctly (not resetting linewidth between different edges)
103- Double border in table - when background colour set in surrounding block element - shows as black line between the 2 bits of double
104- Borders around DIVs - "double" border problem if not all 4 sides equally - fixed
105- Borders around DIVs - solid (and double) borders overlap as in tables - now fixed so mitred joins as in browser
106 [Inadvertently improves borders in Columns because of change in LineCap]
107- Page numbering - $mpdf->pagenumSuffix etc not suppressed in HTML headers/footers if number suppressed
108- Page numbering - Page number total {nbpg} incorrect - e.g. showing decreasing numbers through document, when ToC present
109- RTL numerals - incorrectly reversing a number followed by a comma
110- Transform to uppercase/lowercase not working for chars > ASCII 128 when using core fonts
111- TOCpagebreak - Not setting TOC-FOOTER
112- TOCpagebreak - toc-even-header-name etc. not working
113- Parsing some relative URLs incorrectly
114- Textcircle - when moved to next page by "page-break-inside: avoid"
115- Bookmarks will now work if jump more than one level e.g. 0,2,1 Inserts a new blank entry at level 1
116- Paths to img or stylesheets - incorrectly reading "//www.domain.com" i.e. when starting with two /
117- data:image as background url() - incorrectly adjusting path on server if MPDF_PATH not specified (included in release mPDF 5.6.1)
118- Image problem if spaces or commas in path using http:// URL (included in release mPDF 5.6.1)
119- Image URL parsing rewritten to handle both urlencoded URLs and not urlencoded (included in release mPDF 5.6.1)
120- <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
121- Table {colsum} summed figures in table header
122- list-style-type (custom) colour not working
123- <tocpagebreak> toc-preHTML and toc-postHTML can now contain quotes
124
125
126
127===========================
128mPDF 5.6
12920/01/2013
130===========================
131
132Files changed
133-------------
134mpdf.php
135config.php
136includes/functions.php
137classes/meter.php
138classes/directw.php
139
140
141config.php changes
142------------------
143$this->allowedCSStags - added HTML5 tags + textcircle AND
144$this->outerblocktags - added HTML5 tags
145$this->defaultCSS - added default CSS properties
146
147
148New features / Improvements
149---------------------------
150CSS support added for for min-height, min-width, max-height and max-width in <img>
151
152Images embedded in CSS
153 <img src="data:image/gif;base64,...."> improved to make it more robust, and
154 background: url(data:image... now added to work
155
156HTML5 tags supported
157- as generic block elements: <article><aside><details><figure><figcaption><footer><header><hgroup><nav><section><summary>
158- as in-line elements: <mark><time><meter><progress>
159- <mark> has a default CSS set in config.php to yellow highlight
160- <meter> and <progress> support attributes as for HTML5
161- custom appearances for <meter> and <progress> can be made by editing classes/meter.php file
162- <meter> and <progress> suppress text inside the tags
163
164Textcircle/Circular
165font: "auto" added: automatically sizes text to fill semicircle (if both set) or full circle (if only one set)
166 NB for this AND ALL CSS on <textcircle>: does not inherit CSS styles
167attribute: divider="[characters including HTML entities]" added
168<textcircle r="30mm" top-text="Text Circular Text Circular" bottom-text="Text Circular Text Circular"
169 divider="&nbsp;&bull;&nbsp;" style="font-size: auto" />
170
171&raquo; &rsquo; &sbquo; &bdquo; are now included in "orphan"-management at the end of lines
172
173Improved CJK line wrapping (if CJK character at end of line, breaks there rather than previous wordspace)
174
175NB mPDF 5.5 added support for <fieldset> and <legend> (omitted from ChangeLog)
176
177Bug fixes
178---------
179- embedded fonts: Panose string incorrectly output as decimals - changed to hexadecimal
180 Only a problem in limited circumstances.
181 *****Need to delete all ttfontdata/ files in order for fix to have effect.
182- <textCircle> background white even when set to none/transparent
183- border="0" causing mPDF to add border to table CELLS as well as table
184- iteration counter in THEAD crashed in some circumstances
185- CSS color now supports spaces in the rgb() format e.g. border: 1px solid rgb(170, 170, 170);
186- CJK not working in table following changes made in v5.4
187- images fixed to work with Google Chart API (now mPDF does not urldecode the query part of the src)
188- CSS <style> within HTML page crashed if CSS is too large (? > 32Kb)
189- SVG image nested int eht HTML failed to show if code too large (? > 32Kb)
190- cyrillic character p &#1088; at end of table cell caused cell height to be incorrectly calculated
191
192
193===========================
194mPDF 5.5
19502/03/2012
196===========================
197
198Files changed
199-------------
200mpdf.php
201classes/ttfontsuni.php
202classes/svg.php
203classes/tocontents.php
204config.php
205config_fonts.php
206utils/font_collections.php
207utils/font_coverage.php
208utils/font_dump.php
209
210Files added
211-----------
212classes/ttfontsuni_analysis.php
213
214config.php changes
215------------------
216To avoid just the border/background-color of the (empty) end of a block being moved on to next page (</div></div>)
217$this->margBuffer = 0; // Allow an (empty) end of block to extend beyond the bottom margin by this amount (mm)
218
219config_fonts.php changes
220------------------------
221Added to (arabic) fonts to allow "use non-mapped Arabic Glyphs" e.g. for Pashto
222 'unAGlyphs' => true,
223
224Arabic text
225-----------
226Arabic text (RTL) rewritten with improved support for Pashto/Sindhi/Urdu/Kurdish
227 Presentation forms added:
228 U+0649, U+0681, U+0682, U+0685, U+069A-U+069E, U+06A0, U+06A2, U+06A3, U+06A5, U+06AB-U+06AE,
229 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
230 Joining improved:
231 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,
232 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
233
234Note -
235Some characters in Pashto/Sindhi/Urdu/Kurdish do not have Unicode values for the final/initial/medial forms of the characters.
236However, some fonts include these characters "un-mapped" to Unicode (including XB Zar and XB Riyaz, which are bundled with mPDF).
237 'unAGlyphs' => true,
238added to the config_fonts.php file for appropriate fonts will
239
240This requires the font file to include a Format 2.0 POST table which references the glyphs as e.g. uni067C.med or uni067C.medi:
241 e.g. XB Riyaz, XB Zar, Arabic Typesetting (MS), Arial (MS)
242NB 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"
243 - if it exists, it may work!
244Using "unAGlyphs" forces subsetting of fonts, and will not work with SIP/SMP fonts (using characters beyond the Unicode BMP Plane).
245
246mPDF maps these characters to part of the Private Use Area allocated by Unicode U+F500-F7FF. This could interfere with correct use
247 if the font already utilises these codes (unlikely).
248
249mPDF now deletes U+200C,U+200D,U+200E,U+200F zero-widthjoiner/non-joiner, LTR and RTL marks so they will not appear
250 even though some fonts contain glyphs for these characters.
251
252
253Other New features / Improvements
254---------------------------------
255Avoid just the border/background-color of the (empty) end of a block being moved on to next page (</div></div>)
256 using configurable variable: $this->margBuffer;
257
258
259The TTFontsUni class contained a long function (extractcoreinfo) which is not used routinely in mPDF
260 This has been moved to a new file: classes/ttfontsuni_analysis.php
261 The 3 utility scripts have been updated to use the new extended class:
262 - utils/font_collections.php
263 - utils/font_coverage.php
264 - utils/font_dump.php
265
266
267Bug fixes
268---------
269- Border & background when closing 2 blocks (e.g. </div></div>) incorrectly being moved to next page because incorrectly
270 calculating how much space required
271- Fixed/Absolute-positioned elements not inheriting letter-spacing style
272- Rotated cell - error if text-rotate set on a table cell, but no text content in cell
273- SVG images, text-anchor not working
274- Nested table - not resetting cell style (font, color etc) after nested table, if text follows immediately
275- Nested table - font-size 70% set in extenal style sheet; if repeated nested tables, sets 70% of 70% etc etc
276- SVG setting font-size as percent on successive <text> elements gives progressively smaller text
277- mPDF will check if magic_quotes_runtime set ON even >= PHP 5.3 (will now cause an error message)
278- not resetting after 2 nested tags of same type e.g. <b><b>bold</b></b> still bold
279- When using charset_in other than utf-8, HTML Footers using tags e.g. <htmlpageheader> do not decode correctly
280- ToC if nested > 3 levels, line spacing reduces and starts to overlap
281
282
283
284
285===========================
286mPDF 5.4
28714/02/2012
288===========================
289Files changed
290-------------
291mpdf.php
292config.php
293compress.php
294classes/ttfontsuni.php
295classes/barcode.php
296classes/indic.php
297classes/svg.php
298examples/show_code.php ----- SECURITY RISK**
299examples/example49_changelog.php
300examples/example57_new_mPDF_v5-3_active_forms_b (replace example57_new_mPDF_v5-3_active_forms)
301includes/out.php
302mpdfi/fpdi_pdf_parser.php
303
304Files added
305-----------
306classes/bmp.php
307classes/directw.php
308classes/form.php
309classes/grad.php
310classes/tocontents.php
311classes/wmf.php
312examples/example58_new_mPDF_v5-4_features
313
314config.php changes
315------------------
316Edited: $this->allowedCSStags, $this->innerblocktags, $this->defaultCSS; (CAPTION added in each case)
317Moved: Numerous $form_.. variables are now in /classes/form.php
318
319New config variables
320--------------------
321$this->bookmarkStyles = array();
322$this->cacheTables = true;
323
324New methods
325-----------
326function CircularText()
327function SetVisibility()
328
329New/Extended CSS
330----------------
331box-shadow (block elements - does NOT support "inset")
332text-shadow (all text elements - does NOT support "blur")
333visibility: visible|hidden|printonly|screenonly (block-level elements and images IMG only)
334text-transform: capitalize|uppercase|lowercase (extended to support TD/TH)
335tr|td|th:nth-child(odd|even|2n+1)
336color, strikethrough, underline and background-color (extended to support rotated TD/TH)
337underline and strike-through (extended to support TD/TH)
338underline (line colour) (extended to work correctly in watermark)
339page-break-after: left|right|always (block elements and tables)
340 NB respects $mpdf->restoreBlockPagebreaks = true; i.e. will make pagebreak act like formfeed
341background[-color]: extended to support rgba|cmyka|cmyk|hsla|hsl|spot
342border(extended to support inline elements)
343
344
345New HTML
346--------
347<caption>
348<textcircle />
349
350
351New features / Improvements
352---------------------------
353Tables - Zebra Stripes
354Tables: overlapping rowspans (partially) supported
355Tables - Disk caching
356Using progress bars (or $showStats) now reports 'real' memory usage i.e. get_memory_usage(true)
357Support for query string in the URLs for external stylesheets e.g. @import url("style.css?ltcyy7");
358Table caption partially supported
359CircularText
360BookMark styling
361Spread tables i.e. can split table (columns) across several pages width.
362Can use chelvetica, ctimes and ccourier to specify core fonts in a non-core font document
363Spread tables i.e. can split table (columns) across several pages width.
364{colsum} in <tfoot> cell will insert a column total per page.
365SVG embedded as island in HTML supported
366Active Forms
367 textarea and input (text types) now accept javascript as:
368 onKeystroke, onValidate, onCalculate and onFormat
369 onChange is depracated but works as onCalculate (for textarea and input)
370 (PS Select still accepts onChange cf. 5.3.37)
371Ledger and Tabloid added as page formats recognised. NB Ledger is same as tabloid but landscape. In mPDF, both give the same size (portrait)
372so need to add -L e.g. Ledger-L for landscape.
373
374
375Internal script changes
376-----------------------
377Changed this->k to _MPDFK throughout all scripts
378Changes to color (packed binary data in string rather than array) to reduce memory usage esp in tables
379Internal variables Removed
380 $usetableheader;
381 $tableheadernrows;
382 $tablefooternrows;
383vars $ChangePage, $p_bottom_border, $img_margin_top(+) $issetcolor + other similar removed
384
385Removed a whole load of // comments
386Updates to remove some more Warning Notices (not all marked in text)
387Border set on TR - changed so set on each cell, rather than retrospectively at end of TR
388All references to table['text'] removed as not needed - uses ['textbuffer'] instead
389OpenTag(TD) changes to reduce memory usage with tables
390Includes different method to set a default timezone
391fn _smallCaps does not need (undefined) $space
392this->chrs and this->ords replaced by chr() and ord()
393Headers in out.php updated to match those used in Output()
394Change to SetFont() to improve performance time
395Change to GetStringWidth() to improve performance time
396Corrected copying of Glyphs 0,1,2, to all subset fonts (non-SMP/SIP), and only setting 32->127 in subset
397Subset fonts (non-SMP/SIP) have additionally Unicode CMap tables (0,0,4 and 0,3,4) as well as Microsoft (3,1,4)
398Subset fonts (SMP/SIP) have CMap tables (1,0,6 and 3,0,4) - rather than 1,0,6 and 3,0,6
399Subset fonts (SMP/SIP) have 'name' table changed to give 1,0 and 3,0. As it is a symbol font (not Unicode encoded) :
400 needs to have a name entry in 3,0 (e.g. symbol) - original font will have 3,1 (i.e. Unicode)
401Automatically checks for HTML code length > 100000 characters and gives error warning if
402 PHP < 5.2.0 (as not configurable) or increases pcre.backtrack_limit if PHP < 5.3.7
403
404Removed/Depracated
405------------------
406function UseTableHeader($opt=true) fn removed / depracated
407function UsePRE($opt=true) removed
408$attr['REPEAT_HEADER'] == true CSS removed / depracated
409$this->usepre=true; removed / depracated as never needed - always respects PRE whitespace
410
411ToC: NB Values can no longer be set directly e.g. as in example
412 $mpdf->TOCheader = array(); // array as for setting header/footer
413 $mpdf->TOCfooter = array(); // array as for setting header/footer
414 $mpdf->TOCpreHTML = '<h2>Contents - Portrait</h2>'; // HTML text to appear before table of contents
415 $mpdf->TOCpostHTML = ''; // HTML text to appear after table of contents
416 $mpdf->TOCbookmarkText = 'Content list'; // Text as it will appear in the Bookmarks (leave blank for none)
417Need to use TOCpagebreak either direct (or array version) or as HTML
418OR if absolutley necessary, could use:
419 $mpdf->tocontents->TOCheader = array(); // array as for setting header/footer
420 $mpdf->tocontents->TOCfooter = array(); // array as for setting header/footer
421 $mpdf->tocontents->TOCpreHTML = '<h2>Contents - Portrait</h2>'; // HTML text to appear before table of contents
422 $mpdf->tocontents->TOCpostHTML = ''; // HTML text to appear after table of contents
423 $mpdf->tocontents->TOCbookmarkText = 'Content list'; // Text as it will appear in the Bookmarks (leave blank for none)
424
425
426
427Further Details
428===============
429
430CSS border on inline elements
431-----------------------------
432Support for CSS border (and variants) on inline elements e.g. <span style="border-bottom: 1px dashed #000000;">
433Border styles solid|dotted|dashed|double only are supported. Border radius not supported.
434Nested inline elements will have repeat left|right borders on the nested content (unlike browsers)
435
436Tables - Zebra Stripes
437----------------------
438TABLE - striped rows cf. http://dev.opera.com/articles/view/zebra-striping-tables-with-css3/
439tr:nth-child(odd) { background-color: #99ff99; }
440thead tr:nth-child(3n+2) { background-color: #FFBBFF; }
441td:nth-child(2n+1) { background-color: #BBBBFF; }
442table.zebraTable td:nth-child(2n+1) { background-color: #BBBBFF; }
443table.zebraTable th:nth-child(2n+1) { background-color: #BBBBFF; }
444
445NB mPDF does NOT correctly apply specificity to all CSS
446table.zebra tbody tr:nth-child(2n+1) td { background-color: #FFFFBB; }
447table.zebra tbody td:nth-child(odd) { background-color: #BBBBFF; }
448
449should make every odd row yellow, and every odd coloumn blue, but with the row/yellow overriding the column/blue.
450In 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
451table.zebra tbody tr:nth-child(2n+1) td:nth-child(1n+0) { background-color: #FFFFBB; }
452
453(The :nth-child(1n+0) selector just selects every td cell.)
454
455
456
457Tables - Disk caching
458---------------------
459TABLES: using disk caching
460// Using disk to cache table data can reduce memory usage dramatically, but at a cost of increased
461// executon time and disk access (read and write)
462$this->cacheTables = true;
463NB $this->packTableData will be overridden to => true; // required for cacheTables
464 $this->simpleTables will be overridden to => false; // Cannot co-exist with cacheTables
465
466
467Table caption
468-------------
469Must come immediately after <table...>
470CSS caption-side and HTML align attribute of top|bottom supported (not attribute left|right)
471Handled as a separate block element brought outside the table, so:
472 CSS will not cascade correctly on the table
473 width of caption block is that of page or of the block element containing the table
474 so alignment will be to the page-width not the table width
475 if table page-break-after: always, the caption will follow the pagebreak.
476This does work:
477<style>
478.tablecaption { caption-side: bottom; text-align: left; font-weight: bold; color: green; }
479</style>
480...
481<table>
482<caption class="tablecaption">Caption title here</caption>
483<tbody>
484
485CSS visibility: printonly, screenonly
486-------------------------------------
487Roughly based on CSS
488
489Works on Block elements P, DIV etc, or Image
490Cannot nest / layer.
491Inner blocks/image with set visibility are ignored if already set on enclosing block element.
492(Block element) does not work inside table (image does)
493So 'visible' does nothing but is set as default
494(NB Changes output to PDF version 1.5)
495Incompatible with PDFA / PDFX
496
497'visibility'
498 Value: visible | hidden | (collapse | inherit)
499 Initial: visible
500 Applies to: all elements
501 Inherited: yes
502
503The 'visibility' property specifies whether the boxes generated by an element are rendered.
504Invisible boxes still affect layout (set the 'display' property to 'none' to suppress box generation altogether).
505Values have the following meanings:
506
507visible
508 The generated box is visible.
509hidden
510 The generated box is invisible (fully transparent, nothing is drawn), but still affects layout.
511 Furthermore, descendants of the element will be visible if they have 'visibility: visible'.
512collapse | inherit
513 NOT supported in mPDF
514
515CUSTOM:
516printonly | screenonly
517
518
519Added VISIBILITY function
520$mpdf->SetVisibility('screenonly'); or 'printonly' 'visible' or 'hidden'
521(NB Changes output to PDF version 1.5)
522Incompatible with PDFA / PDFX
523
524CircularText
525------------
526function CircularText($x, $y, $r, $text, $align='top', $kerning=120, $fontwidth=100) {
527x: abscissa of center
528y: ordinate of center
529r: radius of circle
530text: text to be printed
531align: text alignment: top or bottom. Default value: top
532kerning: spacing between letters in percentage. Default value: 120. Zero is not allowed.
533fontwidth: width of letters in percentage. Default value: 100. Zero is not allowed
534
535- now uses Kerning between letters if useKerning == true (set manually see example)
536
537BookMark styling
538----------------
539New configurable variable to control appearance of Bookmarks e.g.
540$this->bookmarkStyles = array(
541 0 => array('color'=> array(0,64,128), 'style'=>'B'),
542 1 => array('color'=> array(128,0,0), 'style'=>''),
543 2 => array('color'=> array(0,128,0), 'style'=>'I'),
544);
545
546Column sums
547-----------
548(Also changed some preg_replace to str_replace to improve performance)
549To use: just add {colsum} to any cells of the table footer <tfoot>
550Add a number to specify a fixed number of decimal points e.g. <td>£{colsum2}</td> will give you £123.40
551The width of the column will be calculated using the actual string {colsum} as a placeholder.
552If you need the column to be wider, use underscores "_" to pad it e.g. {colsum2_____}
553
554
555Spread tables
556-------------
557i.e. can split table (columns) across several pages width.
558CSS <table style="overflow: visible">
559Cannot use with:
560$this->kwt - ignored
561$this->table_rotate - ignored
562$this->table_keep_together - ignored
563$this->ColActive - cancels spread tables
564
565Messes up with:
566$mpdf->forcePortraitHeaders = true;
567$mpdf->forcePortraitMargins = true;
568Problems with CJK, and RTL
569
570Will do no resizing of fonts at all.
571Maximum width of column = page width i.e. will not split columns across pages - NB will keep colspan>1 on one page
572If table row too high for page will die with error message.
573Will override some specs for width if this creates conflicts
574Recommended to specify absolute value of width on each column.
575
576
577
578
579Bug fixes
580=========
581Dottab - if text after dottab is hyperlinked <a></a> then dots are underlined
582
583page-break-before now respects $mpdf->restoreBlockPagebreaks = true; i.e. will make pagebreak act like formfeed
584Annotation() function called directly with colorarray(r,g,b)
585
586Added urldecode to _getImage to cope with ../name%20of%20image.jpg
587Added 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
588[barcode.php] Allow &nbsp; in C39 codes - will be changed to spaces
589
590<table> inside a <div position:fixed, left:300px;> not calculating table width correctly
591 - leading to either upside down table or error width less than 1 character
592
593Depracated magic_quotes_runtime() in compress.php
594
595DIRECTW included twice in compress.php
596FORMS mark up for compress.php corrected
597
598double backslashes not preserved inside <pre> or <textarea>
599
600font-weight and font-style not recognised in <pageheader>
601
602Progress bars causing corrupt PDF file (out.php) changed fopen from "r" mode to "rb" (binary)
603Target around image - <a href="#internaltarget"><img ... /></a> - not working
604
605SmallCaps in <thead> error
606
607Fonts with "name" table in format 1 not recognised correctly
608Rotated table which does not fit on remaining page, forces a new page even if already at top of page
609
610Locale causing problems - all instances of sprintf() using %.3f changed to %.3F so not locale aware
611
612CSS border radius not implemented on fixed/absolute positioned block element
613
614Background color in rotated table extending way beyond bottom of table
615
616Nested table containing <thead> or <tfoot> was confused with <thead> or <tfoot> of parent table
617
618Correct handling of spaces, < or & in textarea
619
620<option> and <input ..> attributes value/title decoded with fn lesser_entity_decode instead of htmlspecialchars_decode to include &apos;
621
622line width not restored to correct value after "line-through" text in Cell()
623
624Kannada - incorrect positioning of Reph
625
626Forms - In <input> or <option> (select) not correctly handling HTML named entities e.g. &lt; in value or title
627Active forms - &nbsp; as Value or Title incorrectly showing as Euro - PDFDocEncoding fixed
628
629Unicode data in embedded fonts not encrypted when doc encrypted
630
631Nested block elements which are empty including innermost one, top margin of innermost block was ignored
632
633font-size: xx% inside a block was setting on block's parent font-size
634
635Active forms - radio buttons (removed name from Widget - leave on Radio group)
636 causing problems accessing field for radio buttons
637
638When using simple tables and border-collapse, if table border set, but cell borders not set, should display table border (fixed)
639position:fixed block - if neither top nor bottom nor height specified, was positioned incorrectly (y)
640Leave - if top, bottom, margin-top, margiin-bottom and height are all left unspecified (or auto), will centre vertically
641on the page (specific to mPDF - not consistent with CSS2.1)
642But if any one of them are specified (including e.g. margin-top=0), follows CSS spec, so top is the current "static" position
643
644background-image-opacity=0 not working on BODY or BLOCK
645
646Lists - if LI continues after a nested List, would add as a new LI item (should continue as part of earlier LI item)
647
648fn WriteCell() converts to 'windows-1252' when required
649if multiple calls to mPDF used, cannot redefine function cmp()
650internal link targets <a name="xx" /> in ToC not moved when using: page-break-inside:avoid
651internal link targets <a name="xx" /> not moved when using: columns, page-break-inside:avoid, keep-with-table or table rotate
652
653Active 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
654Bug is fixed, but example file needed updating to onCalculate for the display field.
655
656Table cell: if height set as %, currently sets it as % of page-width; instead this now ignores it.
657
658Bengali letter Khanda Ta (U+09CE) character not recognised; was added in Unicode v4.1 and prior to this, (U+09A4 U+09CD U+200D)
659 so mPDF converts to this string and seems to work.
660
661OCR characters wrong size in barcodes if using different ocr font - fixed
662
663===========================
664mPDF v5.3 (21/07/2011)
665===========================
666
667New Features
668------------
669- Active forms (see on-line manual for details)
670- 128-bit encryption (optional) with additional user-permissions (see on-line manual)
671
672PLEASE READ - Change in Font management
673---------------------------------------
674The font name imported from the font and included by mPDF in the PDF file was stripping any '-' in the name.
675This is the PostScript name which is utilised by some PostScript programmes.
676mPDF has been changed to leave the PostScript font name unchanged. In 99% cases no difference will be noted, but
677you MUST delete all the temporary font data files cached in the /ttfontdata/ folder for this to be effective.
678
679
680Minor changes
681-------------
682If @page CSS is used to select a first page with settings different from the default, mPDF did create a blank page
683 then pagebreak to the new @page settings - this has been changed so it now will start with the new page settings.
684
685New function added: DeletePages($start_page, $end_page=-1) e.g. $mpdf->DeletePages(1);
686 Can be used just before calling Output()
687
688compress.php utility extended to exclude active forms and images-svg
689
690
691Bug fixes
692---------
693- list-style-type: (custom version, user-defined bullet) colour change not working if colour is set on the list item line
694- background-image: SVG or WMF images as background-images in tables/tr/cells not working
695- font-weight: bold font not always reset after inline <b>...</b> thus miscalculating width
696- forms (inactive) in 'c' core fonts using unicode characters 127-255 incorrect display in input text and button text
697- form elements (inactive) if in-line with mixed size fonts, error in vertical positioning of text related to box
698- ToC: wrapped lines in ToC not retaining formatting e.g. bold style
699- HTMLHeaders: using setAutoTopMargin="pad"; not correctly setting top margin for first page
700- output headers changed: Content-length not used if server uses output compression
701- embedded font subsets from fonts which contain non-BMP plane 0 characters (incl. e.g. dejavusanscondensed)
702 - causing Adobe Reader to create a CJK encoded font subset internally when loading interactive Forms
703 - Changed so unsets the flag in the subset font to show no non-BMP characters.
704
705
706Configurable variables added (see config.php file):
707--------------------------------------------------
708All for Active Forms:
709$this->useActiveForms
710$this->formExportType
711$this->formSubmitNoValueFields
712$this->formSelectDefaultOption
713$this->form_border_color
714$this->form_background_color
715$this->form_border_width
716$this->form_border_style
717$this->form_button_border_color
718$this->form_button_background_color
719$this->form_button_border_width
720$this->form_button_border_style
721$this->form_radio_color
722$this->form_radio_background_color
723
724PLUS: see additional values added to $this->allowedCSStags close to bottom of file - required for Active forms
725
726
727Updated files
728-------------
729mpdf.php
730config.php (NB as well as form stuff at top, 5.2.07 $this->allowedCSStags close to bottom of file)
731compress.php
732classes/ttfontsuni.php
733examples/example57...
734examples/formsubmit.php
735
736
737
738===========================
739mPDF v5.2 (18/06/2011)
740===========================
741
742New Features
743------------------
744Improvements in font handling resulting in clearer display of fonts on screen, and improved compatibility with PostScript drivers
745 (e.g. use with GSView/GhostScript, see below)
746
747CJK line-breaking implemented (roughly) according to rules. Configurable variables allow control of behaviour (except in tables).
748
749Viewer preferences: added options for initial 2 page display where you can specify whether
750 1st page is on left or right (cf. SetDisplayMode).
751
752Custom 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:
753 list-style-type: U+263Argb(255,0,0); - where U+263A is the Unicode HEX value of the character you want for the bullet
754 - character MUST be included in the font used for that list item. rgb() bit is optional
755
756
757Bug fixes
758---------
759- Fonts: embedding a BMP TTC font (e.g. Cambria) as a full font caused error
760- Table: If cell width set by CSS as %, and page-break-inside avoid requires a new page, was losing the sizing
761- Table: table borders CSS parsing error; if border-width, border-style, border-color set, not inherited correctly
762- Table: Table background image or gradient not working in HTMLHeader/Footer
763- Table: background color set on table (anywhere) will overwrite image/gradient
764- Table Background image/gradient: If left/right margin is set on table, gradient/image set on table is too wide
765- Table: rotated table - height (after first page does not correctly allow for thead i.e. too much)
766- Table: blank <tr></tr> causes error
767- Table/Letter-spacing: If letter-spacing set inside table, not calculating table width correctly, and if oversized, freezes
768- ToC: ToC at top of page (non-mirrored or already ODD) did not reset page_number if told
769- Character subsititutions: characters missed if first element in a $html code e.g. WriteHTML('Not in a tag &#10003;');
770- Kerning: kerning info: if reading font file for first time (or if not cached in ttfontdata/) did not register kerning info
771- Textarea: multiple new lines run into only one newline
772- QRCode - colors wrong because QRcode class only accepts RGB input (hardcoded now to always give black on white)
773- QRCode always producing "Your message here"
774- Columns: if transforming height of column, not always closing transform Q
775- CakePHP compatibility
776- compress.php - error due to markup comments in mpdf.php script file
777
778Backwards compatibility
779-----------------------
780Changes in mPDF 5.2 are backwards compatible with version 5.1
781Your document fonts may appear slightly different in the PDF viewer because of the changes to embedded font subsets (cf.)
782The new Indic fonts may result in a change in spacing (due to the different character width of the space character from the original font)
783
784PostScript e.g. GSView/GhostScript
785----------------------------------
786A number of errors have been reported when opening mPDF-created PDF files with a PostScript programme. Some of the errors were due to mPDF,
787but others were due to peculiarities of GSView/GhostScript.
788- Diacritic Characters were not displayed when embedding a font subset
789- Fonts containing SIP/SMP characters (supplementary Unicode planes) caused errors
790- Error with text justification (word-spacing) when embedding a full font can occur in some fonts*
791The first 2 problems should now be fixed in v5.2
792*The error with text justification can be optionally fixed by setting the configurable variable in config.php:
793 $this->repackageTTF = true;
794 When mPDF embeds a full font, it simply embeds the whole original TTF file into the PDF document. For some fonts (containing
795 a GSUB table) this was causing problems. $this->repackageTTF forces mPDF to repackage the original TTF file excluding some of
796 the tables like GSUB.
797(See ADDITIONAL INFO FONTS.txt in downloaded files)
798
799
800Font appearance in PDF viewer
801-----------------------------
802Font subsetting has been improved to include additional information in the embedded file. Overall the effects are of greater clarity
803when viewing the document on a screen (it will not affect print output), but the changes are dependent on:
804- the original TTF font i.e. the options that the font's author has built into the file
805- the PDF viewer i.e. whether the programme chooses to use the available information
806- the resolution (zoom) of the page you are viewing
807(See ADDITIONAL INFO FONTS.txt in downloaded files)
808
809
810Indic fonts
811-----------
812A new set of Indic fonts (ind_xx_1_001) is distributed with version 5.2 containing the additional font information as described above.
813In addition, some changes have been made to the ASCII characters in the font from the files previously distributed:
814The 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,
815ALL of the ASCII characters (32-127) were inserted/overwritten from DejaVuSansCondensed to make the font more usable.
816In the latest version, only the missing characters are taken from DejaVuSansCondensed, leaving punctuation and numerals from the original
817fonts. This also means that the space character has a different width, and this will cause slight changes to the word spacing in documents.
818(See ADDITIONAL INFO FONTS.txt in downloaded files)
819
820
821CJK line-breaking (text wrapping)
822---------------------------------
823CJK (chinese-japanese-korean) text often contains no spaces. mPDF previously has wrapped text whenever a character reached the end of
824the line. mPDF version 5.2 attempts to follow the line-breaking rules described for each of the languages. Configurable variables
825allow some control over this behaviour, especially whether to squeeze a character into the space available at the end of a line, or
826whether to allow it to overflow the right margin.
827
828
829Configurable variables (see config.php file):
830----------------------
831Control wrapping of CJK text:
832 $this->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow
833 $this->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only selected)
834When Embedding full TTF font files, remakes the font file using only core tables
835May improve function with PostScript printers
836 $this->repackageTTF = false;
837
838Updated files
839-------------
840mpdf.php
841compress.php
842utils/font_dump.php
843classes/ttfontsuni.php
844config.php (3 new variables - see above)
845
846All ttfonts/ind_*
847New set of Indic fonts for PostScript compatibilty - and clearer font display
848
849
850
851===========================
852mPDF v5.1 (27/02/2011)
853===========================
854
855New Features
856------------
857- CSS background (images, colours or gradients) on <TR> and <TABLE>
858- CSS border on <TR> (only in border-collapsed mode)
859- support for Mozilla and CSS3 gradient syntax:
860 -moz-linear-gradient, linear-gradient
861 -moz-radial-gradient, radial-gradient
862 -moz-repeating-linear-gradient, linear-repeating-gradient
863 -moz-repeating-radial-gradient, radial-repeating-gradient
864- expanded support for gradients (including in SVG images):
865 - multiple colour 'stops'
866 - opacity (transparency)
867 - angle and/or position can be specified
868- gradient can be used as an image mask (custom mPDF styles: gradient-mask)
869- image-orientation supported for <IMG> (similar to existing custom mPDF attribute: rotate) [CSS3]
870- image-resolution supported for <IMG> [CSS3]
871- background-image-resolution (custom mPDF CSS-type style) to define resolution of background images
872- improved support for SVG images
873- SVG and WMF images supported in background-image
874- file attachments
875- numeric list-styles added e.g. arabic-indic, bengali, devanagari, persian, thai [CSS3]
876- font kerning supported (inter-character spacing between specific pairs)
877- letter-spacing and word-spacing supported [CSS3]
878- colors supported as rgb(), rgba(), hsl(), hsla(), cmyk(), cmyka(), or spot()
879- spot colors supported e.g PANTONE 310 EC
880- PDF/X compatible files
881- optionally force use of grayscale, RGB or CMYK colorspace
882- automatic colour conversion for most objects between grayscale, RGB and CMYK
883
884Backwards compatibility
885-----------------------
886Most changes in mPDF 5.1 are backwards compatible with version 5.0 i.e. your documents should
887look the same running 5.1 However some changes may alter display from previous versions:
888- RTL (right-to-left) languages - see below
889- bleed margins when using @page CSS - see below
890- Default distance for "cross" from inner margin changed 10->5mm [hardcoded in fn. Footer()]
891- If height set on a block element, will force a new page if set-height will not fit on page
892- If table rotated, 5mm margin at bottom is now reduced to 1mm
893- If image is too big for page and automatically sixed to maximum height of page, 10mm margin at bottom reduced to 1mm
894
895Colours may appear more vibrant
896-------------------------------
897Unless specifically set, Adobe Reader uses the RGB colorSpace by default when displaying documents. However
898if an image or gradient using transparency (or alpha channel) is included in the document, Adobe Reader
899automatically sets the default colorSpace to CMYK - which makes the colours look less vibrant/bright on screen.
900mPDF 5.1 now specifies by default a colorSpace RGB for each page, and this will maintain the more
901vibrant colours. This is overridden if you use on of the options to restrict the colorSpace (cf.)
902
903RTL
904---
905**** IMPORTANT - PLEASE READ IF USING RTL SCRIPTS ****
906Handling of RTL (right-to-left) languages has been significantly rewritten, and is likely to cause
907changes to the resulting files if you have previously been using mPDF. The changes have made mPDF
908act more like a browser, respecting the HTML/CSS rules.
909Changes include:
910- the document now has a baseline direction; this determines the
911 - behaviour of blocks for which text-align has not been specifically set
912 - layout of mirrored page-margins, columns, ToC and Indexes, headers and footers
913 - base direction can be set by any of:
914 - $mpdf->SetDirectionality('rtl');
915 - <html dir="rtl" or style="direction: rtl;">
916 - <body dir="rtl" or style="direction: rtl;">
917 - base direction is an inherited CSS property, so will affect all content, unless...
918- direction can be set for all HTML block elements e.g. <DIV><P><TABLE><UL> etc using
919 - CSS property < style="direction: rtl;">
920 - direction can only be set on the top-level element of nested lists
921 - direction can only be set on <TABLE>, NOT on THEAD, TBODY, TD etc.
922 - nested tables CAN have different directions
923- NOTE that block/table margins/paddings are NOT reversed by direction
924 NB mPDF <5.1 reversed the margins/paddings for blocks when RTL set.
925- language (either CSS "lang", using Autofont, or through initial set-up e.g. $mpdf = new mPDF('ar') )
926 no longer affects direction in any way.
927 NB config_cp.php has been changed as a result; any values of "dir" set here are now ineffective
928- default text-align is now as per CSS spec: "a nameless value which is dependent on direction"
929 NB default text-align removed in default stylesheet in config.php
930- once text-align is specified, it is respected and inherited
931 NB mPDF <5.1 reversed the text-align property for all blocks when RTL set.
932- the configurable value $rtlcss is depracated, as it is no longer required
933- improved algorithm for dtermining text direction
934 - english word blocks are handled in text reversal as one block i.e. dir="rtl"
935 [arabic text] this will not be reversed [arabic text]
936 - arabic numerals 0-9 handled correctly
937
938Although the control of direction for block elements is now more configurable, the control of
939text direction (RTL arabic characters) remains fully automatic and unconfigurable.
940<BDO> etc has no effect. Enclosing text in silent tags can sometimes help e.g.
941 content<span>[arabic text]</span>content
942
943Justified text
944--------------
945Text-align: justify - no longer uses configurable variable $jSpacing= C | W | ''
946The default value is for mixed letter- and word-spacing, set by jSWord and jSmaxChar
947If a line contains a cursive script (RTL or Indic [devanagari, punjabi, bengali]) then it prevents letter-spacing
948for justification on that line - effectively the same as setting letter-spacing:0
949Spacing values have been removed from the config_cp.php configuration file, so the "lang" property
950(in config_cp) no longer determines justification behaviour (this includes the use of Autofont()).
951When using RTL or Indic [devanagari, punjabi, bengali] scripts, you should set CSS letter-spacing:0
952whenever you use text-align:justify.
953
954
955@page media
956-----------
957When using @page to create a print publication with page-size less than sheet-size
958- bleed margin is now configurable (also crop- and cross-mark margins)
959- backgrounds/gradients/images now use the bleed box as their "container box"
960- odd-header-name: supports the value "_default" - allows current non-HTML header to remain unchanged
961- marks: crop cross; i.e. both together supported
962- background-image-opacity and background-image-resize now work with @page CSS
963
964
965SVG images - extended support
966-----------------------------
967- support for spreadMethod property for gradients (repeat and reflect)
968- support for style="font-family; font-size; font-style; font-weight" i.e. inline CSS
969- when viewPort="" and width="" height="" all specified, uses width to set SVG size of a "pixel"
970- support for opacity and multiple "stops" (and colorspace) in gradients
971
972
973
974Minor Enhancements
975------------------
976- support for colors as rgb(87%, 56%, 25%) [used especially in SVG]
977- added option of "NoPrintScaling" in SetDisplayPreferences
978- compress.php - now combines BACKGROUND-IMAGES and GRADIENTS as BACKGROUNDS, and added PROGRESS-BAR
979- table with THEAD row will force a new page if no room for the THEAD AND a row from TBODY
980- Small-Caps now works properly together with text-align justify
981- embedded font subsets restructured (minor) for greater compatibility e.g. with Postscript printers
982- PDF/A will convert everything except grayscale to RGB (by default) or CMYK (optionally)
983
984
985
986
987Bug fixes
988---------
989- Display changed to CMYK colour gamut when document contained an object with transparency set.
990 Now will retain RGB colorspace (brighter colours)
991- If using dir="rtl", tables containing nested tables were not properly reversed
992- "text-rotate: 0" set in CSS stylesheet did not 'undo' any text-rotate set on the row (TR)
993- Malayalam - character re-ordering
994- If height set on a block element, was not taking account of padding top/bottom
995- embedded font subsets: error in array of Font Widths fixed
996- <style>..</style> containing /* import url() */ the comments were not ignored
997- If call mPDF class more than once, error using multiple barcodes or gif files because classes not reinstantiated
998- Floating blocks were collapsing bottom/top margins - incorrectly
999- Table: if colspan>1 contents are wider than the width of the included columns, did not increase column width(s) to accommodate
1000- Resizing table - script hanging and new page forced when not required (still)
1001- 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
1002- End of 2 blocks (e.g. </div></div>) at very bottom of page, forcing unwanted pagebreak
1003- Corrected handling of tags inside <pre>
1004- RTL left-aligned text - line ending with <br /> not correctly left-aligned
1005- <input type=submit|reset etc name="xxx" e.g. Google button showed as I&039;m feeling lucky
1006- Annotations all linked to Page 1 (parent object)
1007- Error "division by zero" using columns
1008- MultiCell() and Write() [direct writing functions] - miscalculating length of line in non-core fonts (+ other bugs)
1009- error if CJK space at end or beginning of line with 0x20 spaces in as well
1010
1011Configurable variables (see config.php file):
1012----------------------
1013$this->printers_info
1014$this->bleedMargin
1015$this->crossMarkMargin
1016$this->cropMarkMargin
1017$this->cropMarkLength
1018$this->nonPrintMargin
1019$this->restrictColorSpace
1020$this->PDFX
1021$this->PDFXauto;
1022$this->useKerning
1023[$this->rtlcss removed]
1024
1025Updated files
1026-------------
1027mpdf.php
1028config.php
1029config_cp.php (removed references to dir - but not essential to update - just redundant information)
1030compress.php
1031includes/out.php
1032includes/functions.php
1033classes/svg.php
1034classes/ttfontsuni.php
1035classes/indic.php
1036/font/helvetica*.php and /times*.php
1037
1038Added CSS support
1039=================
1040All Block elements including <BODY> <TABLE> <TR>
1041------------------------------------------------
1042background-image-resolution: normal | [ from-image || <dpi> ]
1043direction: [ rtl | ltr ] (HTML attribute dir also supported)
1044background: [ gradients ]
1045background-image: [gradients ]
1046
1047For [ gradients ] syntax see:
1048- Mozilla linear - https://developer.mozilla.org/en/CSS/-moz-linear-gradient
1049- Mozilla radial - https://developer.mozilla.org/en/CSS/-moz-radial-gradient
1050- Mozilla gradients use - https://developer.mozilla.org/en/Using_gradients
1051- CSS3 linear gradients - http://dev.w3.org/csswg/css3-images/#linear-gradients
1052- CSS3 radial gradients - http://dev.w3.org/csswg/css3-images/#radial-gradients
1053
1054
1055Almost all elements - block and in-line
1056---------------------------------------
1057font-kerning: auto | normal | none // need to set $mpdf->useKerning = true;
1058letter-spacing: normal | <length>
1059word-spacing: normal | <length>
1060
1061Colours
1062-------
1063Anywhere that color is specified (e.g. color, background-color, borders)
1064- rgb(255,255,255)
1065- rgba(255,255,255,1) // last value is transparency (alpha) - between 0-1
1066- rgb(100%,100%,100%)
1067- hsl(360,100%,100%) // H: 0-360; S/L: 0-100%; a:0-1
1068- hsla(360,100%,100%,1)
1069- cmyk(100,100,100,100) // or 0-100%
1070- spot(COLOR NAME, 100%) // e.g PANTONE 310 EC; use AddSpotColor() to define first
1071
1072<TR>
1073border:
1074
1075<TABLE> <TR>
1076background:
1077background-color:
1078background-image:
1079
1080<IMG>
1081gradient-mask: [can use any of the gradient syntax]
1082image-orientation: <angle> - supports deg, rad or grad
1083image-resolution: normal | [ from-image || <dpi> ]
1084
1085<OL|UL>
1086list-style: arabic-indic | bengali | devanagari | gujarati | gurmukhi | kannada | malayalam | oriya |
1087 persian | telugu | thai | urdu | tamil
1088
1089
1090@page
1091marks: [ crop || cross ] - i.e. crop and cross can be used together
1092odd-header-name: "_default" - allows current non-HTML header to remain unchanged
1093background-image-opacity: [ 0-1 ]
1094background-image-resize: [ 1-6 ] - see Manual
1095
1096
1097===========================
1098mPDF v5.0 (30/09/2010)
1099===========================
1100
1101New Features
1102------------
1103- Font handling simplified, reads TrueType font files directly
1104
1105
1106Minor Enhancements
1107------------------
1108- rotation of fixed-position block elements (see example 10 and manual for supported CSS)
1109- support for CSS Small-Caps font-variant added
1110- utility scripts in /utils/ folder to help font management
1111- new simplified functions AddPageByArray() and TOCPageBreakByArray() added
1112- progress bar simplified and customisable
1113- improved word-wrapping for CJK langauges
1114- improved recognition of CJK/Indic/Arabic characters
1115- invalid UTF-8 input now outputs a meaningful error by displaying input html with errors marked
1116- GIF or PNG images with transparency/interlaced/non-standard compression handled as internal data
1117 if /tmp/ folder is not present or writeable
1118- support for <html dir="rtl">
1119- support for "display: none" on inline elements
1120- annotations supported in fixed-position block elements
1121
1122
1123Bug fixes
1124---------
1125- <br /> preceded by space does not correctly text-align to right
1126- zero-width character in middle of line caused line-break (e.g. diacritic or U+200C = ZWNJ)
1127- HTML attributes not recognised if spaces e.g. 'src = "..."'
1128- Headers changed for output - problem reported on IE8 64-bit using SSL
1129- using SetAutoPageBreak(false) used caused unexpected behaviour with table rows at page break
1130- (from Beta) incorrect check for temporary font data folder causing errors
1131- artificial Bold/Italic not working in table cell when using rotated text
1132- allow <dottab> to inherit font color correctly
1133- SVG now works with Adobe 7
1134- background in header overwriting text
1135- vertical text in table header not correctly horizontally positioned when repeated
1136- compatibility with PHP >= 4.3 (htmlspecialchars_decode, stripos)
1137- updated depracated script PHP 5.3.0 ($string{1} to $string[1], $var =& new Object(), set_magic_quotes_runtime)
1138- index (CreateIndex) number string incorrect if arabic(rtl) text anywhere in document
1139- MultiCell incorrectly calculate string length/width when using core fonts
1140- page-break-inside:avoid - used with non-HTML footer had space inserted for footer height
1141- page-break-inside:avoid - error if more than 1 page height but not enough to trigger second pagebreak
1142- page-break-inside:avoid - incorrectly layering page backgrounds (headers and content brought forward)
1143
1144
1145Changes from 5.0 Beta
1146---------------------
1147If you are upgrading from the Beta version - you MUST delete all files in the /ttfontdata/ temporary directory
1148- config.php file has been changed (extra CJK characters to recognise CJK blocks)
1149- $this->backupSubsFont (in config_fonts.php) optionally now takes an array
1150- no need to define 'cjk'=>true or 'sip|smp'=>true in config_fonts.php (ignored; cf. $this->BMPonly)
1151- Indic language fonts have been altered to add Latin and Latin-1 Supplement characters
1152- progress bars now has an external progbar.css and configurable main heading
1153- added initial parameter new mPDF('+aCJK') or '-aCJK' to override default useAdobeCJK at runtime
1154- QRCode is not included in main download (but as an extra package)
1155
1156BACKWARD COMPATIBILITY
1157----------------------
1158If you have been using earlier versions of mPDF, most scripts should work as before. But note:
1159- Arial, Helvetica, Times and Courier are now treated like any other font
1160- the whole CSS font string is parsed e.g. style="font-family:'Lucida Grande';" will look for a font 'lucidagrande'
1161and not 'lucida'
1162
1163Configurable variables (see config.php file):
1164----------------------
1165- $mpdf->useSubstitutionsMB is now depracated, but will work as an alias for $mpdf->useSubstitutions
1166The initial parameters e.g. new mPDF('utf-8') have all changed. Old ones may be recognised, or will be ignored.
1167- $mpdf->useOnlyCoreFonts is now depracated and is ignored. Use new mPDF('c')
1168- $this->use_CJK_only is now depracated and is ignored. See $this->useAdobeCJK and new mPDF('+aCJK') or '-aCJK'
1169Control SmallCaps appearance
1170- $mpdf->smCapsScale = 0.75; // Factor of 1 to scale capital letters
1171- $mpdf->smCapsStretch = 115; // % to stretch small caps horizontally
1172Customisable Progress bar
1173- $mpdf->progbar_heading = 'mPDF file progress';
1174- $mpdf->progbar_altHTML = '';
1175Control fonts/subsetting
1176- $mpdf->maxTTFFilesize = 2000;
1177- $mpdf->percentSubset = 30;
1178- $mpdf->debugfonts // show font errors and warnings
1179Replaceable alias
1180- $mpdf->iterationCounter = false; // Allow use of {iteration varname} in THEAD
1181
1182
1183===========================
1184mPDF v5.0Beta (21/07/2010)
1185===========================
1186
1187New features
1188------------
1189The main change in mPDF v5 is the handling of TTF and TTC fonts directly.
1190See README.txt and FONT INFO.txt for more information
1191
1192
1193QR-code (2-dimensional barcode) Added
1194-------------------------------------
1195type="QR"
1196Size=1 is an arbitrary 25mm widthxheight. error="L|M|H|Q"
1197text="" can be numeric, alphanumeric or binary(?)
1198Required whitespace is always included around it
1199
1200
1201Enhancements
1202------------
1203- progress-bar is simplified (no javascript class)
1204- dir="rtl" supported in <html> or <body> tag
1205
1206Bug fixes
1207---------
1208- artificial Bold/Italic now working in table cells with rotated text
1209- "-" is now allowed in a font name e.g. sun-exta
1210- <dottab> now inherits font color correctly
1211- SVG class bugs fixed (was crashing in Adobe Reader v 7)
1212- background color/image in header no longer overwrites the header text
1213
1214Changed Config variables
1215------------------------
1216$this->useSubstitutionsMB is depracated
1217Character substitution always occurs when using core fonts.
1218Use $this->useSubstitutions for all cases.
1219
1220
1221New Configurable variables
1222--------------------------
1223$this->useAdobeCJK = true; // Uses Adobe CJK fonts for CJK languages
1224 // default TRUE; only set false if you have defined some available fonts that support CJK
1225 // If true this will not stop other CJK fonts if specified by font-family:
1226 // and vice versa i.e. only dictates behaviour when specified by lang="" incl. AutoFont()
1227
1228// Set maximum size of TTF font file to allow non-subsets - in kB
1229// Used to avoid e.g. Arial Unicode MS (perhaps used for substituteCharsMB) to ever be fully embedded
1230// NB Free serif is 1.5MB, most files are <= 600kB (most 200-400KB)
1231$this->maxTTFFilesize = 2000;
1232
1233// If not -s (i.e. forced subset) this value determines whether to subset or not
1234// 0 - 100 = percent characters
1235// i.e. if ==40, mPDF will embed whole font if >40% characters in that font
1236// or embed subset if <40% characters
1237// 0 will force whole file to be embedded
1238// 100 will force always to subset
1239$this->percentSubset = 30;
1240
1241$this->debugfonts - show errors and warnings for font parsing
1242
1243Config variables removed
1244------------------------
1245$this->use_CJK_only
1246$this->useOnlyCoreFonts
1247
1248================================================================================
1249
1250====
12514.6
1252====
1253
1254mPDF
1255
1256files changed:
1257mpdf.php
1258config.php
1259makefonts/makefonts.php
1260class/t1asm.php
1261class/svg.php
1262graph.php
1263
1264examples_04 (images)
1265
1266config var added:
1267$this->tableMinSizePriority
1268
12694.5.015
1270Bug fix:
1271Complex page with ToC entries ++ (example_ToC_bug4_5_015.php) caused Apache to crash
1272AdjustHTML() preg_pattern for matching <hx>... </hx> <table for keep-together - altered and fixed ? matching
1273Seemed to crash when content="Graph 12" between the <h> - 2 numbers (12) crash, 1 didn't!!!
1274
1275
12764.5.014
1277Bug fix:
1278Using TrueType fonts, unused font is not embedded in the PDF doc. This was fine except an error message appeared after printing in Adobe Reader,
1279because Font reference /F1 still present in doc pointing to non-existent resource.
1280Edited so that the reference is now removed from the page if font unused.
1281
1282
12834.5.013
1284Enhancement
1285TrueTypeUnicode fonts width array inserted as shortened form array (smaller file size)
1286
12874.5.012
1288Bug fix: Incorrect handling orphan characters in table
1289(cf. http://mpdf.bpm1.com/forum/comments.php?DiscussionID=193 fixed in 4.2 - but going back to it still problems)
1290If xxxxx. fits but xxxxx.. doesn't: WriteFlowingBlock wraps it to next line, TableWordWrap sqeezed it onto one line
1291TableWordWrap fixed to only allow one orphan char. even if it fits with that one.
1292
1293
12944.5.011
1295Added Windows BMP image support
1296
12974.5.010
1298SVG class:
1299- improved recognition of lineargradients/radialgradients referenced by xlink:href
1300- does not die if empty text string
1301- support for many text properties as style="" as well as currently as attributes (bold, fill etc)
1302- if using MB font, was respecting "Times" and "Courier" from the SVG file but using as ANSI not utf-8
1303
13044.5.009
1305graph.php updated to include SVG - need to define in graph.php (as well as set up TTF fonts)
1306(SVG graph does not include CSIM, 3D skew.)
1307
13084.5.008
1309t1asm.php has an error in the error message if .dat fontfile not found (".char.dat")
1310
13114.5.007
1312Bug fix: Using page-break-inside:avoid, if nothing would have been printed on page 1 before next page, elements going all over the place!
1313 Also problem shifting images - fixed
1314 Also wasn't shifting WMF/SVG images - fixed
1315
13164.5.006
1317New config var
1318$this->tableMinSizePriority = false;
1319If page-break-inside:avoid but cannot fit on full page without
1320exceeding autosize; setting this value to true will force respsect for
1321autosize, and disable the page-break-inside:avoid
1322[NB edit Manual Table>>autolayout algorithm]
1323
1324
13254.5.005
1326Bug fix
1327Table set to avoid page-break-inside: in some circumstances entered loop with recalculating size
1328Fudge factor added of 0.001 in tbsqrt to calculate shrink factor
1329
13304.5.004
1331Bug fix
1332If table set to avoid page-break-inside and table height (resized) exactly==remaining page - was triggering page break
1333Fudge factor added of 0.001 in tablewrite to query pagebreak
1334
13354.5.003
1336Bug fix in makefonts/makefonts.php
1337Also changed the links in Step4 & 8 which move the newly created files to the font directory - will now show error message if error -
1338will NOT overwrite existing files. (Put in manual already)
1339
13404.5.002
1341Bug fix in class/t1asm.php
1342If you have magic_quotes_runtime set On - problems using embedded subset.
1343
13444.5.001
1345JPG "Exif" file recognised from header, and handled much more quickly and efficiently (not using GD)
1346
1347
1348
1349===========================
1350mPDF v4.5 (21/04/2010)
1351===========================
1352
1353New Features
1354------------
1355The main change in 4.5 is the improved class for importing SVG images. (See details below)
1356
1357Font files
1358----------
1359Some bugs in the "makefonts" utility caused some errors in the files produced for embedding font subsets.
1360Surprisingly these are not easily detectable (I have yet to find one!).
1361All the font files used for embedding font subsets (the .dat and .dat.php files in /unifont/ folder)
1362have been re-generated. Download them if you are having problems with any fonts - otherwise, you probably
1363don't need to bother.
1364
1365Minor Enhancements
1366------------------
1367If keepColumns = true (i.e. disable readjustment of column length), mPDF will now reproduce
1368table header/footer rows in each column [4.4.015]
1369
1370A number of changes to improve processing time [4.4.012]
1371[Thanks to carlholmberg http://mpdf.bpm1.com/forum/comments.php?DiscussionID=274&page=1#Item_3]
1372
1373JPG files with header marked as "progressive DCT-based JPEG" are now supported [4.4.004]
1374
1375Configurable variable (config.php) $dpi can be set to vary size interpreted from "px" values in HTML/CSS
1376NB Recommended that $dpi should always be set the same as $img_dpi
1377
1378Support added for "ex" as a size value (approximates "ex" as half of font height)
1379
1380Configurable variable (config.php) $watermarkImgAlphaBlend will determine how watermark images
1381will blend with underlying objects.
1382
1383
1384Bug fixes
1385---------
1386- Make-fonts utility : makefonts/makefonts.php [4.4.016]
1387 (All font files have been updated)
1388- Table header of only one column width - not printing right border [4.4.014]
1389- WMF and SVG images not rotating correctly to 90 or -90 degrees [4.4.013]
1390- Using templates, error if imported doc contains templates itself [4.4.001]
1391
1392
1393Updated Files
1394-------------
1395mpdf.php
1396config.php
1397classes/svg.php
1398makefonts/makefonts.php
1399ALL subset font files (/unifont/ .dat and .dat.php files), and all garuda and norasi files
1400
1401New files
1402---------
1403None
1404
1405New config variables
1406--------------------
1407$this->watermarkImgAlphaBlend
1408$this->dpi
1409
1410BACKWARD COMPATIBILITY
1411----------------------
1412All but one changes in mPDF 4.5 are fully backwards compatible.
1413The configurable variable $this->watermarkImgBehind was introduced in v4.4 and was unintentionally set to TRUE
1414In v4.5 this is set to FALSE in the config.php file.
1415
1416
1417SVG Images
1418----------
1419[svg.php CHANGED]
1420- Text stroke-width default changed to 1 [4.4.011]
1421- Text stroke - line-join type changed [4.4.010]
1422- Default value for fill changed to "black" [4.4.008]
1423- Bug fixes:
1424 * to correct calculation of text-length (and therefore alignment R and C) [4.4.009]
1425 * Corrected errors in path implementation esp. quadratic Bezier curves
1426 * rounded corners to rectangles - error corrected
1427 * Recognition of font-family improved
1428 * remove \n (and other non-printable chars) from text
1429 * zero length shapes are not output e.g. zero-width rectangle, zero-length line, zero-radius circle
1430- Support added for:
1431 * gradient stop offsets and gradientUnits="userSpaceOnUse" [4.4.007]
1432 In mpdf.php enabled define inner radius for radial gradients - only used internally by SVG at present
1433 * user defined <ENTITY /> cf. 'render-elems-03-t.svg' in SVG Test Suite [4.4.006]
1434 * "color" attribute and "currentColor" value for fill and stroke [4.4.005]
1435 * fill:url(#...) in a style as well as attribute
1436 * xlink:href for gradients
1437 * 1.3002e-005 in svg path
1438 * text-style changes (e.g. text-anchor) set on <g> element - not just on <text>
1439 * fill-rule=evenodd|nozero
1440 * dashed lines / stroke-dasharray & stroke-dashoffset
1441 * gradientUnits=userSpaceOnUse;
1442 * units e.g. 3mm or 14pt in Rectangle, Circle, Ellipse, Line and Text position
1443 * transform on <text> element
1444 * stroke as well as fill on text
1445
1446NB The following are still NOT supported for SVG
1447- filters
1448- <marker>
1449- images
1450- DOM
1451- <pattern>
1452- textlength; lengthadjust; tspan, tref, toap, textPath;
1453- <use ../>
1454- gradient on stroke/text;
1455- <clipPath>
1456- text-underline and strikethrough
1457- text opacity
1458- colors as rgb(87%, 56%, 25%)
1459- rect using units for dimensions
1460- Only uses default spreadMethod = "pad" for gradients
1461
1462
1463
1464
1465
1466===========================
1467mPDF v4.4 (24/03/2010)
1468===========================
1469
1470New Features
1471------------
1472- Support SVG image files (partial)
1473- Rotate images or graphs (by multiples of 90 degrees)
1474- Set opacity (transparency) for background images
1475- Control resizing of background images
1476- Set whether to print watermark images behind or in front of page contents
1477- Reduced memory usage when printing tables (partly configurable)
1478- Option to set path to folder for temporary files
1479- Improved compliance for CSS text-align justify
1480- Increased support for CSS "media"
1481- Improved performance when accessing local image files
1482
1483
1484Minor Enhancements
1485------------------
1486- Allows space in output file name e.g. $mpdf->Output('t est.pdf','D'); [4.3.007B]
1487- Header changed in Output to improve compatability with IE6 (affects 'D' and 'I') [4.3.012B]
1488- background-images do not show noimage.jpg if missing [4.3.012D]
1489- simpleTables (which improves performance) now also allows: background-color, -gradient and -image, padding
1490 and rotated text to be set for each cell. Only borders are not supported cell-by-cell. [4.3.006]
1491
1492
1493Bug fixes
1494---------
1495- Page width not correctly reset when defining default page margins (L/R) by @page [4.3.007C]
1496- Table row <TR> with a background-color, paints the whole row, including the spaces between cells [4.3.005]
1497 NB This should have been fixed in [4.2.028] but got left out!
1498- UseSubstitutionsMB causes errors inside <textarea> and <select> so now disabled in these 2 situations [4.3.004]
1499- CSS background: 'none' did not cancel background-image/background-color if it comes later [4.3.002, 4.3.011]
1500- Warning message 'depracated' (as of PHP 5.3) when using Templates [4.3.007]
1501- AutoFont incorrectly altering multibyte characters ending in \xa0 [4.3.012C]
1502- "Initial" default value for border-width changed from 1px to 'medium' e.g. border-top: solid #000000; [4.3.010]
1503- WMF image sometimes inverted [4.3.016]
1504
1505Updated Files
1506-------------
1507mpdf.php
1508config.php
1509changelog.txt
1510
1511
1512New files
1513---------
1514classes/svg.php
1515
1516
1517New config variables
1518--------------------
1519$this->justifyB4br=false;
1520$this->CSSselectMedia='print';
1521$this->watermarkImgBehind = false;
1522
1523BACKWARD COMPATIBILITY
1524----------------------
1525All changes are backwards compatible except the handling of some background-images - please see notes below.
1526
1527
1528Watermark Image z-order
1529-----------------------
1530By default mPDF prints watermarks on top of the page contents to ensure that they are not hidden by backgrounds
1531(especially table cells).
1532You can specify watermark images to be printed behind page contents by setting a configurable variable:
1533$this->watermarkImgBehind = true; // default=false
1534[4.3.018]
1535
1536
1537Rotating Images and Graphs
1538--------------------------
1539Images or graphs can be rotated (by multiples of 90 degrees) using a custom HTML attribute e.g.
1540<img rotate="90|-90|180" ... />
1541<jpgraph rotate="90" ... />
1542Valid options are: 90|-90|180.
1543Positive values are clockwise.
1544If width is specified e.g. width="3cm" this is applied to the rotated image i.e. will be width 3cm after rotating
1545[4.3.016]
1546
1547
1548Background Image Opacity
1549------------------------
1550A custom CSS property "background-image-opacity": is now supported on BODY, DIV+ (block elements) and TD
1551Takes values between 0 and 1.0
1552
1553
1554Resizing Background Images
1555--------------------------
1556A custom CSS property "background-image-resize": is now supported on BODY, DIV+ (block elements) and TD
15570 - No resizing (default)
15581 - Shrink-to-fit w (keep aspect ratio)
15592 - Shrink-to-fit h (keep aspect ratio)
15603 - Shrink-to-fit w and/or h (keep aspect ratio)
15614 - Resize-to-fit w (keep aspect ratio)
15625 - Resize-to-fit h (keep aspect ratio)
15636 - Resize-to-fit w and h
1564
1565N.B. Prior to v4.4 background-images were incorrectly constrained to maximum width of the containing block.
1566The default is now to do NO resizing on background-images. Setting "background-image-resize:3" should be used
1567for backwards compatibility.
1568[4.3.015, 4.3.012D]
1569
1570
1571SVG Image files
1572---------------
1573SVG image files are now partially supported (but as for WMF - not as background-images).
1574viewBox (preserveAspectRatio is not supported) viewBox="0 0 400 200" width="400" height="200"
1575Takes viewBox in preference to width/height if present on <svg>
1576If neither present, will size to width of page (square) as the containing box.
1577Units are interpreted as pixels if undefined.
1578Doesn't recognise internal CSS <style> elements
1579Gradients only take 2 colours which are taken as stop-offset 0% and 100%
1580[4.3.013 & 4.3.017]
1581
1582
1583Reduced Memory Usage printing Tables
1584------------------------------------
1585mPDF uses a lot of memory when processing large tables. Parts of the script have been rewritten to
1586reduce memory consumption when writing tables which use collapsed borders (10-25% saving).
1587
1588Memory usage can be reduced further by setting a configurable variable:
1589$this->packTableData = true; // default=false
1590but note that this causes a significant increase in processing time.
1591[4.3.008, 4.3.019, 4.3.014]
1592
1593
1594
1595User-defined path to Temporary folder
1596-------------------------------------
1597mPDF uses a folder to write and store temporary files when processing images. By default this is the
1598[your_path_to_mpdf]/tmp/
1599This is now user-definable by defining the constant _MPDF_TEMP_PATH before including mpdf.php script.
1600
1601
1602Text Justification
1603------------------
1604In a justified text block, an inline image, textarea, input, or select causing a new line will now force
1605the previous line to be justified. HR and BR do NOT force justification (as in browsers).
1606For optional compliance of MS Word behaviour, there is a new configurable variable:
1607$this->justifyB4br = false; // Change to true to force justification before a <BR> (as in MS Word)
1608[4.3.003]
1609
1610
1611CSS support for @media
1612----------------------
1613Now supports media-dependent CSS styles e.g.
1614@media print {
1615 p { color: red; }
1616}
1617as well as
1618<style media="...">...</style> and
1619<link rel="stylesheet" media="print" href="..." />
1620Proper matching of CSS media to select using configurable variable:
1621$this->CSSselectMedia='print'; // default="print" set in config.php : screen, print, or any other CSS @media type (not "all")
1622N.B. $this->disablePrintCSS in now depracated
1623[4.3.001]
1624
1625
1626
1627
1628===========================
1629mPDF v4.3 (28/02/2010)
1630===========================
1631
1632NEW FEATURES
1633------------
1634- Page (sheet) size can be reset within document (http://mpdf1.com/manual/index.php?tid=436) [4.2.024, 4.2.025]
1635- PDF/A1-b compliant files (http://mpdf1.com/manual/index.php?tid=420)
1636- Improve performance using simpleTables (http://mpdf1.com/manual/index.php?tid=430)
1637- mPDFI incorporated into main mPDF class (http://mpdf1.com/manual/index.php?tid=432)
1638- <dottab> added as custom HTML tag: inserts dots to the following text, which is right-aligned [4.2.031]
1639
1640See Example files 38 and 39 for PDFA compliant file and <dottab>
1641
1642BACKWARD COMPATIBILITY
1643----------------------
1644All changes are backwards compatible except the use of mPDFI. You will need to make minor changes to your scripts.
1645See the manual http://mpdf1.com/manual/index.php?tid=432 for details.
1646
1647BUG FIXES
1648---------
1649- When using Table of Contents and not resetting page numbers: HTML headers/footers showed incorrect page number [4.2.020]
1650- Table of Contents: last page not printing page background-color [4.2.023]
1651- Image file with space " " in the file name failing [4.2.016]
1652- Image file path unnecessarily resolved to full URI - changed to use relative path if possible [4.2.029] ***
1653- Table - not calculating height of cell correctly [4.2.015, 4.2.012, 4.2.011, 4.2.009]
1654- Table row breaking after/during cell when image in cell taller than font-height [4.2.008]
1655- When Table row(cell) greater height than the page-height but requiring resizing greater than allowed by autosize - not resizing [4.2.005]
1656- Table cell border not resized correctly [4.2.002]
1657- Table row <TR> with a background-color, paints the whole row, including the spaces between cells [4.2.028] ****
1658- Background-image in HTMLFooter not correctly setting 0,0 origin [4.2.014]
1659- Background-image set as an in-line style not working [4.2.013]
1660- Background-image set in CSS @page or <body> was being constrained to less than page size [4.2.032]
1661- Imported Templates overwriting Headers (with images or gradients) [4.2.004]
1662- When using imports/templates, HTML header with background-image causing page to disappear [4.2.001]
1663- block-style element breaking over more than 2 pages incorrectly adjusting L/R margins [4.2.022]
1664- CSS @page property "size" set on :left :right or :first pseudo-selectors - disabled [4.2.022]
1665- Annotations default colour incorrectly set in PDF as [100 100 0] corrected to [1 1 0] (seemed to work ok?) [4.2.026]
1666- Overwrite() now parses input file more tolerantly recognising more source files [4.2.030]
1667
1668**** Bug fix 4.2.028 never got into the release of v4.3 Included in next release [4.3.005]
1669**** Bug fix 4.2.029 never not fully implmented in v4.3 Included in next release [4.3.012]
1670
1671Changed files
1672-------------
1673mpdf.php
1674compress.php
1675config.php
1676classes/t1asm.php
1677includes/functions.php
1678mpdfi/fpdi_pdf_parser.php
1679Added files/folder: /mpdfi/filters/*.*
1680Added file/folder: /iccprofiles/sRGB_IEC61966-2-1.icc
1681mpdfi/mpdfi.php (no longer required)
1682
1683New Configuration variables
1684---------------------------
1685[config.php]
1686$this->enableImports
1687$this->simpleTables
1688$this->PDFA
1689$this->ICCProfile
1690$this->PDFAauto
1691
1692
1693Minor changes
1694-------------
1695Increased PDF file compatibility with spec 1.4
1696- PDF version changed to 1.4
1697- A binary file marker (a comment line with 4 characters > 127 ASCII) is added just after the first line
1698- %%EOF no longer has line break after it [4.2.010]
1699- /ID object is added to trailer object when not encrypted [4.2.010]
1700
1701When using progress bars, one of the JS scripts is now referenced as an external file
1702 to allow it to be cached by user's browser and improve performance for end-user [4.2.007]
1703
1704Importing external PDF files: LZW encoded PDF files are now supported
1705
1706When adding an annotation, the popup window can be set be either open or closed when the document is opened [4.2.027]
1707- size and position of the popup can also be specified
1708
1709
1710
1711===========================
1712mPDF v4.2 (27/01/2010)
1713===========================
1714
1715NEW FEATURES
1716------------
1717- image handling improved
1718- table layout - additional control over resizing
1719- vertical-alignment of images - better support for all CSS types
1720- top and bottom margins collapse between block elements
1721- improved support for CSS line-height
1722- display progress bar whilst generating file
1723- CSS @page selector can be specified when adding a pagebreak
1724- CSS @page selector allows different margins, backgrounds, headers/footers on :first :left and :right pages
1725- PNG images with alpha channel fully supported
1726- ability to generate italic and bold font variants from base font file
1727- CJK fonts to embed as subsets
1728- "double" border on block elements
1729- character substitution for missing characters in UTF-8 fonts
1730- direct passing of dynamically produced image data
1731- background-gradient and background-image can now co-exist
1732
1733
1734
1735Bug fixes
1736---------
1737- empty variable (undefined var, false, null, array() etc.) sent to WriteHTML produced error message "Invalid UTF-8"
1738- CJK in tables when not using CJK (utf-8-s) autosized very small as characters did not word-wrap
1739- parsing stylesheets: background image not recognised if containbed uppercase characters in file name
1740- "double" border on table used white between the lines instead of current background colour
1741- $this->shrink_tables_to_fit = 0 or false caused fatal errors
1742- background color or images not printing correctly when breaking across pages
1743- background not printed for List inside a block element
1744- columns starting near end of page with no room for a line triggering column change (resulting in text misplaced) not page break
1745- table cell not calculating cell height correctly when "orphan" characters (;:,.?! etc.) at end of line
1746- table breaking page in column 2 when col 1 is rowspan'ned
1747- margin-collapse at top of page not working if bookmark/annotation/indexentry/toc
1748- column break triggered by HR triggering a second column break
1749- an empty 'position:fixed' element with no/auto width or height caused fatal error
1750- mPDFI: template documents were overwriting HTML headers
1751- mPDFI: function Overwrite (to change text in existing PDF) - fatal error if using with encrypted file
1752
1753Bug - not fixed
1754- WriteHTML('',2) with '2' parameter not recognising 'margin-collapse:collapse' for DIVs or 'line-height' set in default CSS 'BODY'
1755
1756
1757
1758New or Updated Files
1759--------------------
1760mpdf.php
1761compress.php
1762config.php
1763config_cp.php
1764config_fonts.php
1765mpdf.css
1766classes/gif.php
1767classes/indic.php
1768includes/subs_core.php
1769mpdfi/mpdfi.php
1770unifont/ar_k_001.uni2gn.php
1771All files in new folder: /progress/*.*
1772
1773NEW FOLDER /tmp/ required with read/write permissions - used for temporary image files or progress bars
1774
1775
1776
1777
1778===========================
1779mPDF v4.1.1 (21/12/2009)
1780===========================
1781Error corrected in /makefont/makefonts.php file (moved completed Unicode files to font folder instead of unifont)
1782
1783===========================
1784mPDF v4.1 (20/12/2009)
1785===========================
1786MySQL support for embedded font subsets abandoned, and replaced with file-based.
1787
1788
1789Files no longer required
1790------------------------
1791config_db.php
1792/unifont/RUNME.php
1793/unifont/*.ufm and /unifont/*.t1a font files
1794
1795MySQL Database no longer required
1796
1797Files Updated
1798-------------
1799mpdf.php
1800/classes/t1asm.php
1801/makefont/makefonts.php
1802
1803New files
1804---------
1805/unifont/*.dat and /unifont/*.dat.php font files
1806
1807
1808Bug-fixes
1809---------
1810- Image - If automatically resizing to fit maximum page size incorrectly subtracted margin-header
1811- Annotation and textarea in same HTML chunk causes mPDF to crash (preg_replace textarea with /u modifier in AdjustHTML)
1812- set_magic_quotes_runtime error ($mgr not $mqr)
1813- Table align did not reverse when using RTL document
1814
1815Alteration: Image - if writing Image in fixedpos div position:absolute - to allow Image to be resized to full page size
1816
1817
1818===========================
1819mPDF v4.0 (17/12/2009)
1820===========================
1821
1822Major additions
1823---------------
1824- Ability to embed font subsets (creating much smaller files)
1825- Much improved support for Arabic languages
1826- Support for Indic languages including consonant conjuncts
1827- Support for Fixed position block elements
1828- New utility to help create your own fonts
1829- PNG alpha channel transparency supported
1830- New utility to create smaller mpdf script with reduced functionality (less memory)
1831- Multiple Barcode types supported
1832
1833**********************************************************************************************
1834* For more details see the documentation manual: http://mpdf1.com/manual/index.php?tid=410 *
1835**********************************************************************************************
1836
1837Bug fixes (parsing CSS)
1838-----------------------
1839- <link href="" ... was not recognised if > 1 space between words
1840- #Content p em { font-style:italic; } was applied to "#Content p"
1841- @import url() embedded in a stylesheet file requires path fixed relative to stylesheet file
1842- background-image url() embedded in a stylesheet file requires path fixed relative to stylesheet file
1843- comment tags inside CSS <style> embedded in the HTML were removed
1844 Now fixed so <style><!-- ... --></style> works; <!-- <style>...</style> --> is removed
1845
1846Bug fixes (other)
1847-----------------
1848- clear (CSS property for floating elements) caused properties for that element to reset to defaults
1849- width: auto caused collapse of border and padding on L & R of ordinary block elements
1850- text-indent not inherited correctly (including em and % values)
1851- named colour "steelblue" corrected RRGGBB hex code
1852- table cell widths in %: if width of table cells set to >=100%, and not all columns are set
1853 This was fixed in 3.2 but led to problem where 2 cols: 1) 80% and 2) not set (see Table sizing test)
1854 Now fixed again to work for both(?)
1855- parse PNG error fixed
1856- bachground-image not correctly positioned in HTMLFooter and HTMLHeader (Not fixed properly in 3.2!)
1857- fonts not supported with 0-9 in the name
1858- font list in GetCodepage() in htmltoolkit.php (now config_cp.php) containing space " " not recognised
1859- list number positioning
1860- list font size set in CSS for UL/OL not working for first level list
1861- table width (real value, not %) not working in nested table
1862- GIF file failed if PDF file not compressed
1863- list-style-type incorrectly inherited
1864- line-height inheritance in lists
1865- SetColumns added a new line - not required if at start of document/page
1866- footer_line_spacing did not work
1867- table cellPadding="" overwrote cell padding set on cell CSS
1868- could not turn off Default non-HTML foter LINE
1869- border specified as "em"
1870- default values set in mpdf.css overriden by inherited properties e.g. <div><h1>Here</h1></div> lost font-size for H1
1871
1872
1873
1874===========================
1875mPDF v3.2 (25/10/2009)
1876===========================
1877Bug fixes
1878---------
1879- 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
1880- Ouput download file changed to allow compatability with IE6 (http://mpdf.bpm1.com/forum/comments.php?DiscussionID=120&page=1#Item_4)
1881- 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]
1882- Table: if font changed in cell, font was not retoring properly afterwards causing errors (restoreInlineProperties())
1883- Lists: list items containing <br />, font not restoring after bullet
1884- Graceful support for block elements inside list items e.g. <li><p>... (not supported, but tolerated)
1885- Index: Created dividing letters separately for Uppercase and lowercase
1886- Incorrectly changing input character set when encountering e.g. charset=iso-8859-1 in the text of the document
1887 - Changed so only detects it if within <head>...</head>
1888- 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
1889- Background-image used in HTML footer not appearing (correctly)
1890- RTL tables: nested tables will not automatically transpose L->R
1891- "Keep heading with table" - changed to allow <h1 style=".."> not just <h1>
1892- "Keep heading with table" - backgrounds (bgcolor, image or gradient) incorrectly handled - now removed
1893- Rotated table spread over more than 1 page caused enclosing block background colours to be be rotated along with table
1894- CSS text-indent % now correctly suported (% of containing block width)
1895- CSS width em on a block element e.g. DIV now correctly suported
1896- calculating _tableheight, if remainingpage==0, get error (div by zero)
1897- Table moved to next page with page-break-inside=avoid, produced an enlarged table (font)
1898- RTL text-align override on BODY text was not working consistently
1899- Arab characters: Character &#x647; (HEH) appearing in Final presentation form instead of Isolated
1900- Vertical position of background-image on whole page incorrect
1901- SetProtection can now be used with no permissions set (was not working unless at least one permission set)
1902
1903
1904Developers
1905----------
1906Some more undefined indexes and variables declared (courtesy of DSmart http://mpdf.bpm1.com/forum/comments.php?DiscussionID=117&page=1#Item_0 )
1907Comment lines removed for < v3.0 to tidy up code
1908
1909
1910Enhancements
1911------------
1912CSS style height now partially supported on block elements DIV, P, H1 etc. --IF--
1913 - block is all on one page
1914 - will extend the block but not shorten it
1915 - will not force a pagebreak (max. at bottom of page)
1916 - % is interpreted as % of printable page height (inside margins)
1917<TFOOT> now supported (placed at start as in HTML spec) displays at end of table, and repeats as a footer
1918Background-image and background-gradient now supported in TD and TH (works in all cases except: background-image is not rotated or
1919 positioned correctly if table is rotated)
1920NB Background images and background-gradients do not work if Columns are being used, or if $use_kwt is TRUE (keep-with-table),
1921 or if page-break-inside:avoid is active.
1922
1923
1924Updated files
1925-------------
1926mpdf.php
1927htmltoolkit.php
1928
1929
1930
1931
1932===========================
1933mPDF v3.1 (30/08/2009)
1934===========================
1935
1936Bug fixes
1937---------
1938- Image error if relative path used on domain root (e.g. img src="image.png" and basepath is http://www.yourdomain.com
1939was giving http://www.yourdomain.com//image.png) [3.1]
1940- Errors in parsing background CSS (background-repeat, background-position etc) [3.1]
1941- Textarea did not corectly convert width or height in units relating to font e.g. em [3.0beta_01]
1942- If page margin-bottom set to zero, SetHTMLfooter() crashes with "Division by zero" error [3.0beta_01]
1943- Table with header row and rowspan in tbody, not calculating maxrowheightcorrectly
1944- Prevent Index breaking column just after a dividing letter
1945- Select or input form field when text around it is justified had text in the form field justified
1946- TocBookMarkText needs to be htmlspecialchar-ed - decoded when entered inside <tocpagebreak>
1947- <img src="" /> caused crash
1948- DisplayPreferences used as a variable name and a function: function renamed to SetDisplayPreferences()
1949- Image with src file not including a "." incorrectly parsed (e.g. http://www.domain.com/imagegenerator?params=23)
1950
1951New Features
1952------------
1953- var $debug (true|false) default false; show or hide error reporting at output stage [3.1]
1954- var $autoPageBreak (true|false) default true; allows overriding of automatic page breaks [3.0beta_02]
1955- <indexinsert /> HTML equivalent of CreateIndex() [was CreateReference()]
1956- 2nd attribute/parameter "xref" in IndexEntry() and <indexentry> - works like IndexEntrySee() as cross-reference entry
1957- function SetWatermarkText allows null parameters to be passed i.e. SetWatermarkText() - will clear the WatermarkText
1958- <watermarktext content="" alpha="" /> - HTML equivalent of SetWatermarkText()
1959- <watermarkimage src="" alpha="" position="" size="" /> - HTML equivalent of SetWatermarkImage()
1960
1961Documentation
1962-------------
1963See Manual at http://mpdf.bpm1.com/manual/ for more information - especially:
1964- User's Guide>>What Else Can I Do?>>Backgrounds & Borders
1965- User's Guide>>What Else Can I Do?>>Floating blocks
1966
1967Files updated:
1968-------------
1969mpdf.php
1970htmltoolkit.php
1971graph.php
1972
1973
1974Developers only
1975---------------
1976mPDF<=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.
1977$arr = array();
1978...
1979if ($arr['index'] == 5 ) {...}
1980
1981To prevent this, lines were added at the start of the mpdf.php script to turn error notices OFF.
1982In a move towards making mPDF able to run with full error_reporting on, a large amount of the script has been altered
1983e.g. the line above would be changed to:
1984if (isset($arr['index'] && $arr['index'] == 5 ) {...}
1985
1986Although I have tested this with a number of examples, it is almost certainly not complete. Therefore the error_reporting for Notices is still turned
1987off in mPDF 3.1
1988If you care to test it, please uncomment line 43 (//error_reporting(E_ALL);) and report any warning notices that you get.
1989NB This has added about 40kB to the script size.
1990
1991
1992
1993===========================
1994mPDF v3.0beta (14/06/2009)
1995===========================
1996
1997
1998New Features
1999------------
2000- CSS "float" partially supported (as well as clear:left|right|both)
2001- CSS "background-image" "background-position" "background-repeat" "background-color" "background" supported for block-level elements
2002- CSS background-color and background-image for <body > element added: this covers the whole page i.e. not just inside the "margins"
2003- CSS background-color and background-image can be defined for CSS @page{}
2004- Background gradients (linear or radial) can be defined using a custom CSS style property
2005- Border radius can be defined to give rounded edges to block elements (uses draft CSS3 spec.)
2006- page number can be reset to any value during the document (in AddPage() <pagebreak> etc.)
2007- PNG images: Interlaced and alpha-channel-set PNG images now supported
2008- internal links supported in Indexes (parameter added to CreateIndex()/CreateReference(): $useLinking=true;)
2009- HTML Headers and footers now support hyperlinks
2010- improved handling of <br>, block elements, and text lines inside table - approximates better to browser handling
2011- borders of block-level elements & table cell borders supported (partially) in columns
2012- optional error reporting for problems with Images ($showImageErrors)
2013- ToC will word-wrap long entries
2014- internal links (Bookmarks, IndexEntry and ToCEntry) rewritten to give more accurate positioning (when used as <tag>)
2015- autofont algorithm improved for CJK languages
2016- define text before and after page numbers ($pagenumPrefix; $pagenumSuffix; $nbpgPrefix; $nbpgSuffix;)
2017- Additional color names supported - full list from SVG1.0
2018
2019Bug fixes
2020---------
2021- Column width not resetting after an automatic pagebreak, or after setting HTMLheader
2022- using AutoFont unnecssarily changed htmlspecialchars to code causing errors
2023- Lists inside a table - incorrectly calculating table cell height
2024- CJK - 4-byte utf-8 chars not displaying properly (includes HKCS characters)
2025- mailto: links incorrectly handled
2026- TOCpagebreak() - usePaging default clarified: true unless specified as '', 0, '0' or false; (null ->true)
2027- <tocpagebreak> (as html tag) with no "name" defined, used at start of page, added a further blank page(s)
2028- Lists - inaccurate calculation of space required for numbers in certain circumstances
2029- Generated images (.php) only working if cURL enabled - (fixed, but rquires allow_url_fopen if remote file)
2030- flag added to turn off error reporting when buffering used ($allow_output_buffering = false;)
2031- 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)
2032- TOC - if not using ODD/EVEN paging, did not add extra page and messed up
2033- Rotated table which did not fit on remaining page resized to bigger than default
2034- HR of width less than 100% - text continued on line after it
2035- HR alignment not working (fixed so both CSS text-align and margin: 0 0 0 auto etc work)
2036- HR in table did not correctly re-size when necessary
2037- characters in symbols/zapfdingbats which in non-utf-8 mode are represented as chr(173) incorrectly handled as soft-hyphens
2038 (bug introduced 2.5 with soft-hyphens - affects symbols &#8593; arrow-up and Zapfdingbats &#9313; encircled 2)
2039- Internal links (anchors) - Annotation/Bookmarks etc. incorrectly positioned when page orientation changed
2040- ToC - when using multiple ToCs, internal links were not correctly adjusted
2041- anchor (a name="") used inside a table was incorrectly positioned at the end of table
2042- Tables: cell height calculated incorrectly when BR used
2043- Table rotated with "page-break-inside:avoid" not kept on one page
2044- Table rotated and split over > 1 page - vertical alignment inaccurate
2045- Headers/Footers (non_html) when no style set caused errors
2046- Table: breaking page when using rowspan error (line 17142)
2047- ToC: If no indent defined in HTML tag <tocpagebreak> or defined as 0 gave error
2048
2049Note
2050----
2051In mPDF 3.0 the following sections of code have been significantly rewritten:
2052- painting of borders and background colours for block-elements
2053- table of contents
2054- Index
2055- vertical justification in columns (uses scaling to stretch vertically)
2056
2057NB changed htmltoolkit AdjustHTML - does not now remove <br> before </div>
2058 Warning - may display differently in normal text as well as tables
2059
2060
2061Files updated:
2062-------------
2063mpdf.php
2064htmltoolkit.php
2065
2066
2067Developers only
2068---------------
2069- Background-color handling in CSS changed so only inherited/cascaded when Columns active or Keep-block-together
2070 - otherwise would overwrite background image with inherited color
2071- all %.2f used in sprintf() changed to %.3f in htmltoolkit.php and mpdf.php to increase accuracy of div border lines in columns etc.
2072- variable $use_embeddedfonts_1252 renamed to $useOnlyCoreFonts as more precise: depracated but still supported.
2073- this version included quite abit of tidying up/future-proofing some code:
2074 $var{0} changed to substr($var,0,1) etc. (due to go in PHP6)
2075 ereg_ changed to preg_ (depracated in PHP5.3) - (NB mainly in htmltoolkit.php)
2076
2077
2078
2079===========================
2080mPDF v2.5 (01/05/2009)
2081===========================
2082
2083New Features
2084------------
2085- Automatic Hyphenation added, and support for soft-hyphens
2086- Encryption works now for CJK language documents
2087- Improved text justification
2088- Support for 'generated' images e.g. "../ontheflyimage.php"
2089
2090
2091Bug fixes
2092---------
2093- Tables: cell height did not reduce if font-size used was smaller than table default
2094- Columns: if setcolumns() to the same number already active - did not print out last bit of previous columns
2095- 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)
2096- <HR> in table cell was printing in incorrect position (bug introduced in mPDF 2.4)
2097- Justification
2098 - if only one word on line, did not respect maximum character spacing
2099 - last character of line incorrectly had character spacing applied
2100 - Space at the end of last line of a Right Justify block - e.g. "end. </p>" now correctly ignored
2101 - &nbsp; incorrectly treated as a character when justifying text with word/char spacing
2102 - CJK punctuation (.,) added as 'orphans' to keep at end of line
2103- PNG files - was still buggy reading larger PNG files (due to fread)
2104
2105
2106Files updated:
2107-------------
2108mpdf.php
2109htmltoolkit.php
2110CJKdata.php
2111/patterns/.. (new files)
2112
2113
2114Developers only
2115---------------
2116Variables renamed as more accurate or appropriate:
2117- var $isunicode renamed as $is_MB
2118- var $usingembeddedfonts renamed as $usingCoreFont
2119CJK changed to act internally as UTF-8 encoded
2120- (NB CJK Half-widths not supported from 2.5+ i.e. big5-hw gb-hw)
2121
2122
2123
2124===========================
2125mPDF v2.4 (23/04/2009)
2126===========================
2127Files updated
2128-------------
2129mpdf.php
2130htmltoolkit.php
2131mpdfi/mpdfi.php
2132
2133New files
2134---------
2135graph.php
2136Graphs - Requires new folder: path_to_mpdf/graph_cache/ (must be writeable)
2137
2138New features
2139------------
2140Annotations improved so they appear as a pop-up
2141Re-use Document Templates (cf. RestartDocTemplate() in manual)
2142Limited support for CSS float property on an IMG element allowing text wrapping e.g. <img style="float: right;"> (cf. Images in manual)
2143Utility function PreparePreText() allows output of a text file which may include <pre>
2144Automatic generation of graphs from data in tables (requires integration with JPGraph) (cf. Graphs in manual)
2145
2146Other Changes
2147-------------
2148IMPORTANT - User rights removed as not working with newer version of Adobe Reader 9 (affects Active forms and ability for users to modify annotations)
2149Corrects text alignment when using {nb} or {nbpg} in (non-HTML) headers/footers
2150Sets default timezone if not already set (at top of mpdf.php) to prevent E_STRICT ERROR message
2151Suppresses E_NOTICE error reporting (at top of mpdf.php)
2152Error capture in Output() to avoid PDF header being sent when error messages generated
2153A function str_ireplace added to htmltoolkit to allow PHP4 to function
2154
2155Bug fixes
2156---------
2157WMF images incorrectly positioned when in-line
2158PNG images > 8kB failed to load - (fix in 2.3 didn't work - fixed properly this time)
2159Annotations containing a new line (\n) causing an error
2160Evaluation of <pre> text: "<code>[TAB] " evaluated incorrect number of spaces to follow to align tabs, because < was calculated as 4 chars (&lt;)
2161
2162
2163
2164===========================
2165mPDF v2.3 (22/03/2009)
2166===========================
2167
2168New Features
2169------------
2170- Optionally detect language and when to use special fonts i.e. RTL (arabic), CJK (chinese), Thai (see SetAutoFont() etc.)
2171- Supports HTML attribute "lang" in all tags and uses special fonts when required (see $useLang)
2172- Joins Arabic and Farsi/Persian text into presentation forms
2173- Import another PDF file and use as templates in your document (see UseTemplate() and mPDFI in the manual.)
2174- Replace specified text strings in an existing PDF file (see OverWrite() etc.)
2175- More than one Table of Contents can be used in a document (see tocpagebreak etc.)
2176- Restore properties of open HTML block elements after a page break (variable $restoreBlockPagebreaks or new tag <formfeed>)
2177- <annotation> <bookmark> <indexentry> <tocentry> can now accept characters <>'"& as htmlentities - htmlspecialchars(..., ENT_QUOTES)
2178- <annotation> can now accept "\n" for new line
2179- support for opacity (CSS3 property) for images
2180- specify the number of spaces to substitute for TAB when parsing <pre> tags
2181- greater control over margins and display when changing page orientation during document (see $forcePortraitMargins and $displayDefaultOrientation)
2182
2183
2184
2185Bug fixes
2186---------
2187Fonts in CSS - Not parsing font-family: Trebuchet MS; correctly as trebuchet
2188Fonts in CSS - CSS font-family: [unknown]; setting first $available_unifont rather than ignoring
2189Images - not displaying on IIS platform
2190Images - .wmf not displaying if (allow_url_fopen) not set
2191Table borders - in defaultCSS, 'MARGIN-COLLAPSE'=> collapase not quoted therefore not working
2192Line-break inside table - printing a blank background across page rather than just going down a line
2193Form fields inside tables - will now resize if the table is autosized (shrunk)
2194<pre> containing a '<' was changed to '&lt;'
2195Tabs inside <pre> were all changed to 8 spaces, not the remainder following a string
2196Header on first page was inset by 1mm left and right ($cMarginL and $cMarginR not set to zero)
2197Table nested inside a cell with colspan > 1 was incorrectly handled
2198PNG file crashed (?incorrectly defined PNG file) [adapted _parsepng to account for unexpected]
2199Table or Cell - if font-size not recognised, mPDF set font-size to zero
2200Font-sizes - [xx-small|x-small|small|medium|large|x-large|xx-large] were not recognised in tables
2201
2202
2203===========================
2204mPDF v2.2.1 (17/02/2009)
2205===========================
2206Bug fix - (bug introduced in 2.2)
2207Table - header row did not return to top of page when repeating across pages.
2208
2209
2210===========================
2211mPDF v2.2 (15/02/2009)
2212===========================
2213Updated files from mPDF 2.1
2214mpdf.php
2215htmltoolkit.php
2216mpdf.css (new)
2217===========================
2218New files from mPDF <2.0 (only required for EAN Barcodes)
2219font/ocrb.xx (several)
2220unifont/ocrb.xx (several)
2221IMPORTANT - you need to make sure the ocrb font is added to the config.php file
2222 - add 'ocrb' to the end of 3 arrays: $this->available_fonts $this->available_unifonts and $this->mono_fonts
2223===========================
2224
2225Summary of changes
2226- external stylesheet file (mpdf.css) is used to configure default values ($useDefaultCSS2 and $defaultCSS2 are no longer used)
2227- special comment tags to hide mPDF tags from browsers: <!--mpdf ... mpdf-->
2228- AddColumn() function added (equivalent to <columnbreak>)
2229- annotations - pop-up messages the reader can move or delete (if you set permissions)
2230- support for WMF images as well as GIF, JPG, PNG
2231- watermark image can be set instead of, or as well as text
2232- nested tables can include other content
2233- improved control over table layout
2234- margin: auto now supported for table and block elements
2235
2236A number of methods and variables have been renamed or reCapitalised for consistency.
2237Changes should be backwards comaptible.
2238All user methods start with a Capital, all user-defined variables start with lowercase.
2239Affected:
2240Reference() -> IndexEntry()
2241CreateReference() -> CreateIndex()
2242$TopicIsUnvalidated -> $showWatermark
2243setUnvalidatedText() -> SetWatermarkText()
2244
2245PHP appears at present to be case-insensitive for function/method names
2246All the following functions have been renamed in the script with a capital first letter:
2247setUserRights()
2248setBasePath()
2249setAnchor2Bookmark()
2250setHeader()
2251setFooter()
2252defHeaderByName()
2253defFooterByName()
2254setHeaderByName()
2255setFooterByName()
2256setHTMLHeader()
2257setHTMLFooter()
2258defHTMLHeaderByName()
2259defHTMLFooterByName()
2260setHTMLHeaderByName()
2261setHTMLFooterByName()
2262shaded_box()
2263writeBarcode()
2264
2265Variable names changed to lowercase first letter:
2266(Variables are case-sensitive therefore aliases have been set up)
2267Anchor2Bookmark
2268BiDirectional
2269KeepColumns
2270AliasNbPg
2271AliasNbPgGp
2272
2273=========
2274Bug fixes
2275=========
2276Columns - $keepColumns=true was incorrectly calculating the place to continue printing after 1 and half columns (of 3)
2277Table cell height - incorrectly setting table cell height when cell contained a line of text of large size which wrapped to more than one line
2278HR in Table cell - if table cell contains only HR (and column otherwise empty), HR was printed outside cell
2279HR in Table cell - if table cell ended with a HR, height was one line too much
2280Table page-break-inside:avoid - caused mPDF into permanent loop in some circumstances
2281Paging - Total Pages/Group {nb} and {nbgp} didn't work in CJK
2282CSS - Border size thin, medium and thick were only recognised in lowercase
2283Table-header - rowspan not correctly output in THEAD
2284Default CSS - table empty-cell:hide changed to show (CSS specification)
2285
2286===========================
2287mPDF v2.1 (24/01/2009)
2288===========================
2289
2290New Features in Version 2.1
2291---------------------------
2292- CSS support improved generally (especially for cascading CSS, lists)
2293- TableHeader changed to allow multiple rows in THEAD
2294
2295
2296CSS changes
2297-----------
2298- display: none (block elements only - not lists or tables, nor HR)
2299- width (TD/TH)
2300- list-style-type (will also recognise the list-style-type from list-style) (OL/UL)
2301 recognised values: disc|circle|square|decimal|lower-roman|upper-roman|lower-latin|upper-latin|lower-alpha|upper-alpha|none
2302- 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)
2303- 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
2304
2305
2306Numbered Lists
2307--------------
2308Variables set at the top of mpdf.php can be set to change:
2309- text alignment of numbers in numbered lists (default Right)
2310 var $list_align_style = 'R';
2311- content to follow a numbered list marker e.g. '.' gives 1. or IV. whereas ')' gives 1) or a)
2312 var $list_number_suffix = '.';
2313(These can be altered at run time, but are not changeable through stylesheets or in-line style)
2314
2315
2316Writing broken segments of HTML
2317-------------------------------
23182 new parameters have been added to WriteHTML()
2319function WriteHTML($html,$sub=0,$init=true,$close=true) {
2320$close - Leaves buffers/variables etc. in current state, so that it can continue to write the HTML where it leaves off
2321$init - Clears and resets buffers/variables
2322(N.B. You must end with a WriteHTML that calls $close=true)
2323Example:
2324$mpdf->WriteHTML('<p>This is the beginning...', 2, true, false);
2325$mpdf->WriteHTML('...this is the middle...', 2, false, false);
2326$mpdf->WriteHTML('...and this is the end</p>', 2, false, true);
2327
2328
2329Rotated text in table cells
2330---------------------------
2331NB This UPDATE will change expected output from previous versions******
2332
2333Prior to v2.1 any cell set to rotate text anticlockwise was forced to vertical align = bottom.
2334This 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.
2335
2336
2337=========
2338Bug fixes
2339=========
2340- List - list starting after "<div>Then some text not in a block element<ol>" incorrectly output
2341- Tables - if cell font-size set smaller than default for the table, does not shrink the cell height
2342- Columns (tables) - columns breaking across rows e.g. in the middle of a table cell
2343- Tables - if table width set to e.g. 100% but cols are less, was not making up to set width
2344- Watermark - was not printing if using HTMLFooter
2345- Lists - not aligning numbering correctly if different font sizes used for bullet & text etc.
2346- Lists - indent of text did not correctly allow for Maximum number in <ol> list
2347- Table does not always move correctly to a new page
2348- Table cell incorrectly calculated height causing text to overflow cell when printed
2349- 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)
2350- Table cell width if set as a percent was being downsized when autosizing table
2351- Table CSS was buggy - improved
2352- SetBasePath (when fetching remote website) - now handles string with query string on it e.g. http://www.domain.com/index.php?tid=42
2353- Table cells with Rotated text - text not positioned correctly
2354- Page number totals not working in utf-8 mode
2355
2356
2357============================
2358Code efficiency improvements
2359============================
2360- BIG speed improvement (compared with 2.0) with tables (especially large tables)
2361- considerable increase in speed if writing long HTML segments to mPDF
2362- speed improvement for tables (may be very significant if some cells have a lot of text in them causing uneven column widths)
2363
2364NB To speed up program more, consider setting $mpdf->useSubstitutions=false; if you do not use any characters outside the codepage selected
2365
2366
2367===============
2368Keep-with-table
2369===============
2370(This was introduced in v2.0 but I forgot to document it)
2371If you set $this->use_kwt = true;
2372All 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)
2373See Known Issues re: Using kwt inside a div with border/background (doesn't work)
2374
2375
2376
2377
2378===========================
2379mPDF v2.0 (07/12/2008)
2380===========================
2381Main New Features in Version 2.0
2382- nested tables are supported
2383- supports both models of table border: separate and collapsed
2384- improved parsing of CSS stylesheets, and better handling of styles throughout
2385- additional recognised CSS styles
2386- page orientation, size, and margins can be changed within the document, using PHP script or custom HTML
2387- some limited support for @page CSS to define page-box areas, with crop/cross marks for printing
2388- improved control over headers and footers (including HTML headers/footers)
2389- improved presentation of Form elements including image-type input fields
2390- generates an EAN barcode suitable for a book/printed publication
2391- active forms can be generated - EXPERIMENTAL at present
2392- change document permissions to allow the user to make annotations - EXPERIMENTAL at present
2393
2394NB Lines are commented in mPDF script as changes for mPDF 1.4 - this became v2.0
2395
2396=========
2397UPGRADING
2398=========
2399IMPORTANT - 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.
2400
2401To upgrade from v<=1.3 to v2.0 you only need to copy and overwrite the following 2 files:
2402mpdf.php
2403htmltoolkit.php
2404
2405Plus (optionally) if you want to use the EAN Barcode function, you will also need:
2406font/ocrb.xx (several)
2407unifont/ocrb.xx (several)
2408IMPORTANT - you need to make sure the ocrb font is added to the config.php file
2409 - add 'ocrb' to the end of 3 arrays: $this->available_fonts $this->available_unifonts and $this->mono_fonts
2410
2411
2412==========
2413Bug Fixes
2414==========
2415<columns column-count="0"> did not turn off columns - Fixed
2416
2417Margins as % - e.g. margin-right: 50% set from CSS incorrectly applied 50% of the fontsize
2418(Fixed - adding parameter to fn. ConvertSize in htmltoolkit.php and in calls to that function)
2419
2420DIV Width - e.g. div style="width: 50% was not working
2421(Fixed - fn.SetCSS and OpenTag()'DIV')
2422
2423CSS values as Zero - p { margin: 0; } did not work in stylesheet unless 0 had a unit
2424
2425Multiple Non-breaking spaces collapsed - e.g. "1&nbsp; &nbsp; &nbsp;2" - was contracted to "1 2"
2426(Fixed - fn.adjustHTML in htmltoolkit.php)
2427
2428Table 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
2429(Fixed in fn.WriteFlowingBlock)
2430
2431Font size by inline style for form elements <input> <textarea> gave wrong size when using a relative size 0.9em
2432(Fixed - fn.ConvertSize in htmltoolkit.php)
2433
2434Creation Date not correctly showing
2435(Fixed - did not need to convert to UTF16)
2436
2437New block element started at end of page - block borders not painted
2438(Fixed - fn.AddPage)
2439
2440DL did not close block correctly
2441(Fixed - mistype in fn. CloseTag)
2442
2443Transparent not recognised as color/background-color
2444(Attempted a fix by setting to ignore it! - fn. convertcolor in htmltoolkit.php)
2445
2446Zero (0) not displaying if only thing in table cell or tags e.g. <td>0</td> <p>0</p>
2447(Fixed - fn.WriteHTML)
2448
2449Page Headers/Footers - Simple Headers or Footers defined as e.g. '|{PAGENO}|' were not split into 3 components, but output |6| in the outer margin.
2450(Fixed)
2451
2452Could not copy from a completed PDF doc to clipboard when using a TrueTypeUnicode font
2453(Fixed - fn._puttruetypeunicode - added CIDToGIDMap)
2454
2455Creating an Index (confusing called CreateReference in mPDF) based on only 1 column (i.e. columns off) caused it to print FAIL
2456(Fixed - fn. CreateReference())
2457
2458Table of Contents - If a ToC entry reached other side of page a warning notice was produced
2459Fixed - printing is now suppressed and it is moved down a line (but not when using rtl)
2460
2461"Keep Block Together" (i.e. page-break-inside: avoid for a block element)
2462If 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
2463(Fixed)
2464NB This is now ALWAYS disabled when it meets a table - can use page-break-inside:avoid for the table
2465
2466@import url(style.css) without quotation marks "" was not picked up, although it is valid HTML
2467(Fixed - fn.ReadCSS())
2468
2469Reading CSS from external style sheets included all media
2470Now set by default to ignore media="aural|braille"
2471Allows media="print" but can exclude by: $mpdf->disablePrintCSS = true; (default = false)
2472Works on both <link... and <style media="print">@import...
2473See the web page example - this stops the CSS stylesheets specifically marked for "print" to be ignored
2474
2475Table borders (in collapsed model) incorrectly calculated which border had dominance (mPDF <=1.3 determined the overriding border by its color)
2476(Fixed to follow CSS 2.1 specifications: width >> CSS dominance (cell>table) >> T & L > B & R)
2477In the border-collapse=collapse mode, the following rules determine which border style "wins" in case of a conflict:
24781. Borders with the 'border-style' of 'hidden' take precedence over all other conflicting borders.
24792. narrow borders are discarded in favor of wider ones.
24803. styles are preferred in this order: 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove', and the lowest: 'inset'.
24814. If border styles differ only in color, then a style set on a cell wins over one on a table.
24825. When two elements of the same type conflict, then the one further to the left or top wins out.
2483
2484Parsing CSS, a missed level would not be picked up i.e. CSS = div.refstr1 p {...} would not pick up:
2485<div class="refstr1"> <div class="another"> <p>...
2486(Fixed - fn. MergeCSS by carrying everything forwards)
2487 Note: I removed - && !$this->blk[$this->blklvl-1]['cascadeCSS']['CLASS>>'.$attr['CLASS']]['depth']
2488 Not sure why I put it there in the first place!
2489 In a later bit of function - && $this->blk[$this->blklvl-1]['cascadeCSS'][$tag]['depth']>1
2490 Haven't removed this, but is it needed???
2491
2492CSS 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)
2493(Fixed)
2494
2495CSS properties color, font-weight, and font-style set on a table were not inherited by the table cells
2496(Fixed - var $base_table_properties)
2497
2498When rotating a table, the text following was positioned incorrectly
2499(Fixed - fn. printtablebuffer)
2500
2501When rotating a table, links were not adjusted in position e.g. <a href="">...
2502(Fixed - fn. printtablebuffer)
2503
2504If a larger border-thickness was set for a cell in the middle of a table, cells before that inaccurately calculated the cell wdith needed
2505(Fixed)
2506
2507Text 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>
2508(Fixed - var $listjustfinished;)
2509
2510Setting 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)
2511(Fixed - fn.WriteHTML)
2512
2513<link href="..." rel="stylesheet"> was not recognised (because the href comes before the rel)
2514(Fixed)
2515
2516Read linked CSS stylesheet OR @import stylesheet - now includes both.
2517
2518<tag class="class1 class2"> did not set either class1 or class2. Fixed so that it will now pick out class1 (better than nothing!)
2519
2520CSS line-height as % - interpreted 120% as 120 (x the font-size) - Fixed so it now accepts % and numbers
2521
2522Setting the basepath (used for relative links/external stylesheets etc) with $mpdf->setBasePath() was generally buggy!
2523Now allows a domain e.g. $mpdf->setBasePath("http://www.domain.com"); (previously needed slash on end)
2524(Fixed - hopefully!)
2525
2526If 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(...
2527
2528
2529=============
2530Improvements(?)
2531=============
2532Unsupported image files - mPDF died with an error message if image files didn't meet expected format e.g. an interlaced PNG file
2533Changed so images are now replaced by the NOIMG image.
2534
2535Footer margin (HTML and normal footers) now determines the lowest point that is printed (rather than the place to start printing the footer)
2536NB IMPORTANT CHANGE - not backwards comaptible
2537
2538Tabs 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]
2539
2540To insert the total number of pages in the document anywhere in the doc, just use '{nb}'
2541The line: $mpdf->AliasNbPages();
2542has now been uncommented allowing {nb} to be used
2543NB This will always give the total no. of pages in the whole document regardless of any changes you have made to page numbering.
2544You can change the default placeholder '{nb}' to any string using: $mpdf->AliasNbPages('[**my Chars**]');
2545
2546$mpdf->AliasNbPageGroups(); default="{nbpg}"
2547Can be used to set the total number of pages in the current group i.e. between where page numbering is reset
2548
2549CSS border correctly fixes "solid 3mm #000000" i.e. (style width color) - (not a bug, but this is often incorrectly specified)
2550
2551Can now print div background behind a rotated table.
2552
2553You can keep columns as they are i.e. 1st column will finish page then start on second, by setting
2554$mpdf->KeepColumns = true;
2555
2556Image constrain
2557===============
2558Image size is constrained to current margins and page position. Extra parameter added to end of fn. allows you to override this.
2559$mpdf->Image('files/images/frontcover.jpg',0,0,210,297,'jpg','',true, false); // e.g. the last "false" allows a full page picture
2560Useful for e.g. a cover page for your document
2561
2562Cumulative CSS
2563==============
2564In version <=1.3, if you call:
2565$mpdf->WriteHTML($stylesheet,1);
2566$mpdf->WriteHTML($html); // this one cleared the array $this->cascadeCSS; conatining cascaded CSS information from stylesheets
2567You were meant to call:
2568$mpdf->WriteHTML($html,2); // which doesn't re-parse the CSS information
2569v2.0 changed so that
2570$mpdf->WriteHTML($html); no longers clears the array $this->cascadeCSS and so can be used repeatedly;
2571
2572
2573
2574================================================
2575Additional CSSstyles & HTML attributes supported
2576================================================
2577<BODY> - font-style, font-weight, color
2578
2579<IMG> - html attributes width="" and height=""
2580
2581<TABLE|TD|TH> - border: 'thin' 'medium' and 'thick' are now converted to 1px, 3px and 5px
2582<TABLE|TD|TH> - border now respects all types - e.g. 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove', and 'inset'
2583(NB mPDF only supports a full declaration of border e.g. "border: thin double #000000;")
2584
2585<TD|TH> - CSS style="white-space: nowrap" and HTML attribute nowrap="nowrap"
2586<TABLE> - page-break-inside: avoid
2587<TABLE> - border-collapse: separate|collapse
2588<TABLE> - border-spacing: 2px 2px; (horizontal/vertical) or just one figure (both) NB same as cellSpacing
2589<TABLE> - empty-cells: hide|show (border-collapse:separate only)
2590<TABLE> - margin-left and margin-right (previously only supported top and bottom)
2591<TABLE> - padding: (this was incorrectly used for TD/TH before) (border-collapse:separate only)
2592<TD|TH> - padding:
2593<TABLE|TD|TH> - inline style "background" works (with a color only) the same as "background-color"
2594
2595NB Table page-break-inside, autosize values and rotate are only respected for that set on first level table of nested tables
2596
2597<TABLE> - cellSpacing and cellPadding HTML attributes:
2598NB cellSpacing is the same as CSS style "border-spacing"
2599NB cellPadding is a <table> attribute, but sets the cell padding - not table padding
2600
2601<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)
2602
2603<BLOCK ELEMENTS> - page-break-before: always|left|right - NB any surrounding block tags will be closed before the new page is inserted.
2604
2605@page - see notes on Paged Media
2606
2607==========================
2608Unsupported HTML attribute
2609==========================
2610<TD border="1"> - not valid HTML - no longer supported
2611
2612
2613=========
2614Additions
2615=========
2616"Keep-with-table"
2617$mpdf->use_kwt = true; // default=false
2618If set to true, will force any H1-H6 header immediately preceding a table to be kept together with the table
2619- automatically sets the table to fit on one page (i.e. page-break-inside=avoid) if it is a rotated table
2620- ignored if: Columns on, Keep-block-together active (page-break-inside=avoid for surrounding BLOCK), active Forms
2621
2622
2623=====
2624Notes
2625=====
2626
2627NB Not a change - but note you can use this to allow you to feed html code encoded in other than utf-8:
2628$mpdf->allow_charset_conversion=true;
2629$mpdf->charset_in='windows-1252'; (needs suitable codes for iconv i.e. windows-1252 not win-1252)
2630
2631Fixing Optional tags
2632====================
2633php.net website has illegal nesting of <dt>.. <dd> .. </dd> .. </dt> and <p>.. <div> .. </div> .. </p>
2634The example wich parses the php.net webpage will not show correctly unless you change: $mpdf->allow_html_optional_endtags=false;
2635Trying to fix incorrect (X)HTML with $mpdf->allow_html_optional_endtags==true cancels the P when it meets a DIV etc.
2636
2637
2638
2639EAN barcode
2640===========
2641An EAN barcode can be generated
2642function writeBarcode($code, $showisbn=1, $x='', $y='', $size=1, $border=0, $paddingL=1, $paddingR=1, $paddingT=2, $paddingB=2) {
2643It accepts 12 or 13 digits with or without - hyphens as $code e.g.
2644$mpdf->writeBarcode('978-1234-567-890', 1, $mpdf->x, $mpdf->y);
2645NB - IMPORTANT***
2646A new font - OCR-B font/unifont is required, and needs to be added to the config.php file
2647cf. http://www.gs1uk.org/downloads/bar_code/Bar coding getting it right.pdf
2648Barcode size must be between 0.8 and 2.0 (80% to 200%)
2649
2650CMYK Colors
2651===========
2652Functions - SetDrawColor, SetTextColor and SetFillColor all now take an optional 4th parameter.
2653If defined this will interpret the input as CMYK color i.e.
2654SetDrawColor(15,82,0,10) // NB all values out of 100 - not 255 as for RGB
2655
2656htmltoolkit.php fn.ConvertColor() - now interprets custom color definition: cmyk(15,82,0,10)
2657like rgb(r,g,b) except values out of 100
2658Intended to be used for calling the functions separately - BUT works in a limited way with CSS - does not get reset or inherited correctly
2659<p style="color:cmyk(215,31,15,10)"> does work
2660
2661
2662DEFAULT CSS
2663===========
2664$defaultCSS has been updated to reflect better the standard HTML default e.g. using serif, table borders separate, cell vertical-align top
2665To keep mPDF 1.3 (my favourites) I have introduced:
2666$mpdf->useDefaultCSS2 = true;
2667
2668
2669===================================
2670Permissions - forms and Annotations - Experimental!
2671===================================
2672You can set the Permissions for the PDF file to allow the user to make Comments (annotations)
2673$mpdf->setUserRights($enabled=true[default]|false, $annots="/Create/Delete/Modify/Copy/Import/Export",
2674 $form="/Add/Delete/FillIn/Import/Export/SubmitStandalone/SpawnTemplate", $signature="/Modify") )
2675
2676If you encrypt the file, make sure the permissions match e.g.:
2677$mpdf->setUserRights();
2678$mpdf->SetProtection(array('print','annots'),'yourPassword','myPassword');
2679
2680To allow this, changed the PDF-file version to %PDF1.5 (NB Probably needs PDF version > 1.5 but can't test for this...)
2681
2682NOTE: If you output the PDF file straight to the browser, it will only allow annotations after you save the document
2683
2684
2685===========================
2686Active Forms - Experimental!
2687===========================
2688At present , using active forms will prevent any internal and external links - that appear before active forms(?) - from working (why?)
2689May need to save form for proper use - see example, when scroll forwards and back, the form disappears??
2690Need to set Userrights (see above), and $mpdf->useActiveForms=true;
2691For Output options, see separate notes.
2692
2693
2694
2695============================
2696Internal Programming changes
2697============================
2698NB fn. tablerotate in htmltoolkit no longer used; now uses a 'transform' to shift the whole block of PDF code
2699
2700Graphics State
2701==============
2702ExtGState does not need to be redefined - e.g. if a watermark added on every page, turning on and off alpha/transparency
2703Unnecessary file size.
2704function AddExtGState() edited to check if graphics state already exists before adding new one
2705
2706ASCII-proof code
2707================
2708"»¤¬" 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
2709
2710Images
2711======
27121) When copying remote images locally - incorrectly used "unset" now changed to "unlink"
27132) 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.
2714NB Handling images was updated in v1.3 because my ISP changed allow_url_fopen to false
2715Fixed 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.
2716If not available as a local file (and allow_url_fopen is set) mPDF tries to use fopen/file_get_contents using an http wrapper;
2717Else, if CURL is available and allow_url_fopen is false: then tries using CURL.
2718(Clear as mud???!!)
2719
2720
2721===========================
2722mPDF v1.3 (21/09/2008)
2723===========================
2724--------------
2725Page Numbering
2726--------------
2727Program changes:
2728fn. startPageNums() replaced with blank function
2729fn. stopPageNums() - deleted
2730fn. numPageNo() - deleted (all it did was return this->page anyway).
2731var $_numbering - deleted
2732var $_numberingFooter - deleted
2733var $_numPageNum - deleted
2734
2735NEW
2736New: fn. AddPages() (as for AddPage but with type=NEXT-ODD or NEXT-EVEN see below)
2737Edited: fn. AddPage() - new parameters added
2738AddPage(orientation(NO),type="E|O", resetpagenum="1|0", pagenumstyle="I|i|A|a|1", suppress="on|off")
2739New: fn. docPageNum() - returns the document page number (or '') based on...
2740New : PageNumSubstitutions(array)
2741New attributes:
2742<pagebreak resetpagenum="1" // resets document page numbering to 1 from the new page onwards
2743<pagebreak suppress="on" // turns on suppression of page numbering i.e. in headers and footers, {PAGENO} is replaced by blank string
2744 // ="0" turns suppression off
2745<pagebreak pagenumstyle="I|i|A|a|1" // (re)sets page number stle/type from the new page onwards - as for lists
2746 // 1 - decimal; A/a - alpha (uppercase/lowercase); I/i - Roman (uppercase/lowercase)
2747<pagebreak type="NEXT-ODD" // always adds a page + another if required to make odd
2748<pagebreak type="NEXT-EVEN" // always adds a page + another if required to make even
2749
2750Edited: fn. TOC() // sets the marker for a Table of Contents
2751New parameters allow the page-numbering details to be set
2752NB 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
2753new parameters as above for pagebreak resetpagenum="1|0", pagenumstyle="I|i|A|a|1", suppress="on|off"
2754
2755Can also be set by attribute in the <TOC>
2756<TOC resetpagenum="1" pagenumstyle="I|i|A|a|1", suppress="on|off" />
2757
2758--------------------------------------------
2759Changes to allow Rotated Text in table Cells
2760--------------------------------------------
2761Edited:
2762fn. OpenTag()
2763fn. _tableColumnWidth()
2764fn. _tableHeight()
2765fn. _tableWrite()
2766fn. tableHeader()
2767
2768New custom style or attribute -- "text-rotate" -- can be set for either <tr> or <th|td>
2769Allowed values: 45 - 90 (written as integers) - rotates text anticlockwise, and -90 (clockwise)
2770Positive values less than 90 force cell to: vertical-align:bottom
2771
2772Limitations:
2773Only allows single line of text;
2774Font, font-size, and style are determined by those set fro the cell, and cannot be changed;
2775No changes in font (or any other in-line changes e.g. <sup>) are supported within the text
2776
2777Example: <tr style="text-rotate:90">...
2778
2779---------
2780Bug fixes
2781---------
27821) HTML footer containing table was triggering page break.
2783Added $this->InHTMLFooter as flag to prevent page triggering in footers containing table
2784Set in fn.writeHTMLFooters() -> in fn.tableWrite() stops the pageBreak being reset
2785
27862) Crashing when libcurl not installed.
2787Edited OpenTag() curl_init - added if (function_exists) to exclude crash when libcurl not installed
2788
27893) Single cell with borders not showing the borders.
2790e.g. <table><tr><td style="border:1px solid #000000?>Hi</td></tr></table>
2791Problem: mPDF overrides cell border properties with table border properties for external borders. $defaultCSS had CSS defined for table as '0px solid #000000'
2792Quick fix - line 273 removed. A more complete fix will require reprogramming to distinguish between "border property not set" and border property set as "none".
2793
27944) Empty textarea incorrectly handled (the following HTML code being output in the textarea)
2795The html code for an empty textarea was incorrectly handled in htmltoolkit fn. AdjustHTML which has been edited
2796
2797
2798===========================
2799mPDF v1.2 (2008-05-01)
2800===========================
2801// Added v1.2 option to continue if invalid UTF-8 chars - used in function is_utf8()
2802var $ignore_invalid_utf8 = false;
2803
2804Reading CSS in fn. ReadCSS() and applying in fn. MergeCSS() -
2805 Edited to allow Tags, class and id with the same name to be distinct i.e. h5 {...} .h5 {...} #h5 {...}
2806* mPDF 1.2 This version supports: .class {...} / #id { .... }
2807* ADDED p {...} h1[-h6] {...} a {...} table {...} thead {...} th {...} td {...} hr {...}
2808* body {...} sets default font and fontsize
2809* It supports some cascaded CSS e.g. div.topic table.type1 td
2810* Does not support non-block level e.g. a#hover { ... }
2811
2812Table: font-size, weight, style, family and color should all work
2813TD/TH: font-size, weight, style, family and color should all work
2814
2815Added to htmltoolkit - fn.array_merge_recursive_unique()
2816
2817memory_opt Removed in mPDF v1.2 - not working properly
2818
2819fn. _begindoc() - changed to %PDF1.4 (was 1.3) as PDF version
2820
2821Write HTML Headers and Footers
2822------------------------------
2823fn. Close() - calls writeHTMLHeaders/Footers() before finishing doc
2824fn. WriteHTML() - added parameter
2825fn. _out - writes to outputbuffer when writing HTML footers/headers
2826
2827New
2828fn. writeHTMLHeaders()
2829fn. writeHTMLFooters()
2830
2831
2832
2833
2834=======================
2835mPDF v1.1 (2008-05-01)
2836=======================
2837
2838Programming changes to increase efficiency
2839------------------------------------------
2840fn. WriteHTML() - added lines to combine substituted characters <tta> etc
2841
2842Memory Optimization added (script from FPDF site) - edited fn. _putpages() and fn. _endpage()
2843
2844fn. SetFont() edited to return val quicker if font already set (increase efficiency)
2845
2846new vars chrs and ords are used to store chr() and ord() - quicker than using functions
2847
2848fn.setMBencoding() - only call mb_internal_encoding if need to change
2849
2850Bugs
2851----
2852fn. SetDefaultFontSize() - edited to allow to override that set in defaultCSS
2853
2854fn. Output() - Added temporary(?) disablement of encryption in CJK as it doesn't work!
2855
2856fn. OpenTag() [LI] $this->blockjustfinished=false to prevents newline after first bullet of list within table
2857
2858Uses of mb_ereg_replace removed, and mb_split changed - requires regex_encoding (regex_encoding only used as UTF-8)
2859
2860fn. WriteHTML: attributes are trimmed with trim() to allow correct handling of e.g. class="bpmBook "
2861
2862fn. printbuffer() and fn. openTag() to ensure
2863 <div><div><p> outputs top margins/padding for both 1st and 2nd div
2864 and </p></div></div> ...
2865
2866fn. SetFont() added line - bug fixing in CJK fonts
2867
2868CSS functionality
2869-----------------
2870Added special CSS 'thead-underline' (similar to topntail)
2871
2872var $thead_font_weight; added (openTag) to enable setting of font-weight for <TH> cells
2873
2874Fixed table border inheritance: Table border inherits border="1" to cells, but not table style="border..."
2875
2876"page-break-inside: avoid" added (var keep_block_together) to allow a DIV or P to be kept on one page
2877 - not compatible with table autosize or table rotate
2878 - only works over maximum of 2 pages
2879
2880Enhancements
2881------------
2882Orphans in line justification: R. Bracket ) added to defined list of orphans
2883
2884allow_url_open
2885--------------
2886Following 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.
2887 - file_get_contents() changed to use libcurl (for CSS files)
2888 - openTag('IMG') @fopen() and 3 functions _parsegif, _parseJPG, _parsePNG, edited to copy remote image files to local file to include images
2889
2890FlowChart
2891---------
2892Changes to enable mPDF work with a custom script producing Flowcharts:
2893 - WriteHTML() second parameter=3 will allow HTML to be parsed but not output
2894 - fn. Arrow() added
2895 - 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
index 3fa55846..00000000
--- a/inc/3rdparty/libraries/mpdf/CREDITS.txt
+++ /dev/null
@@ -1,92 +0,0 @@
1
2
3/*******************************************************************************
4* Software: FPDF *
5* Version: 1.53 *
6* Date: 2004-12-31 *
7* Author: Olivier PLATHEY *
8* License: Freeware *
9* *
10* You may use and modify this software as you wish. *
11*******************************************************************************/
12
13/*******************************************************************************
14* HTML2FPDF is a php script to read a HTML text and generate a PDF file. *
15* Copyright (C) 2004-2005 Renato Coelho *
16* *
17* html2fpdf.php, htmltoolkit.php *
18*******************************************************************************/
19
20CREDITS From HTML2FPDF:
21
22-Olivier Plathey for the fpdf.php class [http://www.fpdf.org]
23-Damon Kohler for the Flowing Block script [mailto:damonkohler@yahoo.com]
24-Clément Lavoillotte for HTML-oriented FPDF idea
25-Yamasoft for the gif.php class [http://www.yamasoft.com/]
26-Jérôme Fenal for the _parsegif() function
27-"VIETCOM" for the PDFTable code [http://www.freepgs.com/vietcom/tool/pdftable/] [mailto:vncommando@yahoo.com]
28-Yukihiro O. for the SetDash() function [mailto:yukihiro_o@infoseek.jp]
29-Ron Korving for the WordWrap() function
30-Michel Poulain for the DisplayPreferences() function
31-Patrick Benny for the MultiCellBlt() function idea [no longer in use]
32-Seb for the _SetTextRendering() and SetTextOutline() functions [mailto:captainseb@wanadoo.fr]
33-MorphSoft for the colornames list idea
34-W3SCHOOLS for HTML-related reference info [http://www.w3schools.com/]
35
36
37
38/****************************************************************************
39* Software: FPDF_Protection *
40* Version: 1.02 *
41* Date: 2005/05/08 *
42* Author: Klemen VODOPIVEC *
43* License: Freeware *
44* *
45* You may use and modify this software as you wish as stated in original *
46* FPDF package. *
47****************************************************************************/
48
49/****************************************************************************
50// FPDI - Version 1.2
51//
52// Copyright 2004-2007 Setasign - Jan Slabon
53//
54// Licensed under the Apache License, Version 2.0 (the "License");
55// you may not use this file except in compliance with the License.
56// You may obtain a copy of the License at
57//
58// http://www.apache.org/licenses/LICENSE-2.0
59//
60// Unless required by applicable law or agreed to in writing, software
61// distributed under the License is distributed on an "AS IS" BASIS,
62// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
63// See the License for the specific language governing permissions and
64// limitations under the License.
65****************************************************************************/
66
67/****************************************************************************
68 * @copyright Khaled Al-Shamaa 2008
69 * @link http://www.ar-php.org
70 * @author Khaled Al-Shamaa <khaled@ar-php.org>
71 * @desc Set of PHP5 / UTF-8 Classes developed to enhance Arabic web
72 * applications by providing set of tools includes stem-based searching,
73 * translitiration, soundex, Hijri calendar, charset detection and
74 * converter, spell numbers, keyboard language, Muslim prayer time,
75 * auto-summarization, and more...
76 * @package Arabic
77 *
78 * @version 1.8 released in Feb 15, 2009
79 *
80 * @license LGPL
81****************************************************************************/
82
83
84This library is free software; you can redistribute it and/or
85modify it under the terms of the GNU Lesser General Public
86License as published by the Free Software Foundation;
87This library is distributed in the hope that it will be useful,
88but WITHOUT ANY WARRANTY; without even the implied warranty of
89MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
90Lesser General Public License for more details.
91[http://www.opensource.org/licenses/lgpl-license.php]
92
diff --git a/inc/3rdparty/libraries/mpdf/FONT INFO.txt b/inc/3rdparty/libraries/mpdf/FONT INFO.txt
deleted file mode 100644
index 0f7057c9..00000000
--- a/inc/3rdparty/libraries/mpdf/FONT INFO.txt
+++ /dev/null
@@ -1,164 +0,0 @@
1
2=================
3Open Source Fonts
4=================
5mPDF should be able to read most TrueType Unicode font files with a .ttf extension
6Truetype fonts with .ttf or .otf extension and .ttc TrueType collections should also work OK.
7
8You will probably therefore have access to any number of fonts, but here are some useful sources for
9open-source or free-use fonts. Many of these were included with earlier versions of mPDF:
10
11General collections
12-------------------
13- DejaVu font collection from: http://dejavu-fonts.org/wiki/Main_Page (included in the release)
14- GNU FreeFont from: http://www.gnu.org/software/freefont/
15- Linux Libertine from: http://www.linuxlibertine.org (use the .ttf files - not the .otf)
16- Liberation Fonts from: https://fedorahosted.org/liberation-fonts/ or directly https://fedorahosted.org/releases/l/i/liberation-fonts/
17
18Thai fonts
19----------
20- Collection of Thai fonts from: ftp://linux.thai.net/pub/thailinux/software/thai-ttf/
21
22
23OCR-B
24-----
25OCRB (ocrb10) font: http://ansuz.sooke.bc.ca/software/ocrb.php
26 Useful for barcodes (included in the release)
27
28Pan-Unicode fonts (fonts containing most characters defined in Unicode)
29-----------------------------------------------------------------------
30- BitStream Cyberbit from: http://aol-4.vo.llnwd.net/pub/communicator/extras/fonts/windows/
31 Cyberbit.ZIP (or just Google it)
32 (NB if run with $debug_fonts gives warning of invalid table checksum - just turn it off!)
33- Code2000 (NB shareware) from: http://www.code2000.net/code2000_page.htm
34- Quivira from: http://www.quivira-font.com/ (combining diacritics are not placed correctly, but has a very full set of glyphs)
35
36
37CJK (Chinese-Japanese-Korean)
38-----------------------------
39HanNomA and B from: http://vietunicode.sourceforge.net/fonts/fonts_hannom.html
40unBatang_0613 from: http://people.ktug.or.kr/~nomos/mine/UnBatang_0613.ttf
41Sun-ExtA and Sun-ExtB from: http://www.alanwood.net/unicode/fonts-east-asian.html
42 (http://www.alanwood.net/downloads/index.html)
43Fonts which contain both Unicode BMP and SIP (Supplementary Ideographic Plane)
44 characters in one file e.g. "AR PL UMing" and "AR PL UKai"
45 from: http://www.freedesktop.org
46 http://www.freedesktop.org/wiki/Software/CJKUnifonts/Download
47[MS Windows fonts such as MS Mincho and MingLiU also work]
48Japanese IPA fonts: http://ossipedia.ipa.go.jp/ipafont/index.html
49
50Arabic/Eastern fonts
51--------------------
52- XW Zar fonts can be downloaded from: http://www.redlers.com/downloadfont.html
53 (2 of these fonts are included in the release)
54 (original site in Farsi: http://wiki.irmug.org/index.php/XWZar)
55- See below for more details and font names of the fonts used in mPDF 4.x
56
57
58Other sources
59-------------
60http://www.unifont.org/fontguide/
61http://www.alanwood.net/unicode/fonts.html
62http://cooltext.com (e.g. http://cooltext.com/Fonts-Unicode+Arabic)
63ApparatusSIL, DoulosSIL, Padauk from SIL: http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&cat_id=FontDownloads
64DaiBanna (Tai Le)
65
66Mediaeval & Ancient Scripts
67---------------------------
68Junicode: http://junicode.sourceforge.net/
69Cardo: http://scholarsfonts.net/cardofnt.html
70
71Syriac fonts
72------------
73http://www.bethmardutho.org/meltho/
74
75
76
77
78============
79ARABIC FONTS
80============
81You can use any appropriate Unicode-encoded .ttf or .ttc font file for arabic text, but
82the font file must include the Arabic Presentation Forms-B (U+FE70–U+FEFF).
832 of the XW Zar fonts are included in the release.
84
85
86
87===========
88INDIC FONTS
89===========
90Indic scripts e.g. Hindi, Bengali etc. use conjuct forms which have no Unicode assignment. You
91cannot therefore use any standard .ttf font files with mPDF.
92
93A set of fonts has been adapted to use specifically with mPDF. They are based on a set of fonts from:
94
95http://www.cdacmumbai.in/projects/indix/e_introduction.shtml
96
97NB These fonts are released under GNU GPL Version 2 license
98
99You need these adapted fonts (ind_bn_1_001.ttf etc.) to work with mPDF, as the glyphs have been
100assigned to Unicode values in the Private Use area (U+E000 ->). These are included in the
101mPDF download.
102
103
104
105Users of mPDF v4.x
106------------------
107The original indic font files do not contain a full set of even basic ASCII
108characters. The fonts supplied have been "fixed" to include those extra
109characters. This now works whether the font is subset or not.
110
111
112
113=========
114CJK Fonts
115=========
116
117
118Supplemental Ideographic Plane
119==============================
120SIP = Supplemental Ideographic Plane ( = Plane 2) = U+20000 - U+2FFFF (131072 - 196607)
121These characters are required for the HKSCS Hong Kong Supplementary Character Set. Fonts with
122SIP characters are commonly divided into a second file e.g. MingLiU and MingLiU-ExtB
123
124mPDF requires 2 fonts and they should be cross-referenced in config_fonts.php e.g.
125 "sun-exta" => array(
126 'R' => "Sun-ExtA.ttf",
127 'sip-ext' => 'sun-extb',
128 ),
129 "sun-extb" => array(
130 'R' => "Sun-ExtB.ttf",
131 ),
132
133--OR--
134(NB these ones also define the font number within the TTC Collection as TTCfontID)
135 'mingliu' => array (
136 'R' => 'mingliu.ttc',
137 'TTCfontID' => array (
138 'R' => 1,
139 ),
140 'sip-ext' => 'mingliu-extb',
141 ),
142 'mingliu-extb' => array (
143 'R' => 'mingliub.ttc',
144 'TTCfontID' => array (
145 'R' => 1,
146 ),
147 ),
148 'mingliu_hkscs' => array (
149 'R' => 'mingliu.ttc',
150 'TTCfontID' => array (
151 'R' => 3,
152 ),
153 'sip-ext' => 'mingliu_hkscs-extb',
154 ),
155 'mingliu_hkscs-extb' => array (
156 'R' => 'mingliub.ttc',
157 'TTCfontID' => array (
158 'R' => 3,
159 ),
160 ),
161
162
163
164
diff --git a/inc/3rdparty/libraries/mpdf/LICENSE.txt b/inc/3rdparty/libraries/mpdf/LICENSE.txt
deleted file mode 100644
index 5b6e7c66..00000000
--- a/inc/3rdparty/libraries/mpdf/LICENSE.txt
+++ /dev/null
@@ -1,340 +0,0 @@
1 GNU GENERAL PUBLIC LICENSE
2 Version 2, June 1991
3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed.
8
9 Preamble
10
11 The licenses for most software are designed to take away your
12freedom to share and change it. By contrast, the GNU General Public
13License is intended to guarantee your freedom to share and change free
14software--to make sure the software is free for all its users. This
15General Public License applies to most of the Free Software
16Foundation's software and to any other program whose authors commit to
17using it. (Some other Free Software Foundation software is covered by
18the GNU Library General Public License instead.) You can apply it to
19your programs, too.
20
21 When we speak of free software, we are referring to freedom, not
22price. Our General Public Licenses are designed to make sure that you
23have the freedom to distribute copies of free software (and charge for
24this service if you wish), that you receive source code or can get it
25if you want it, that you can change the software or use pieces of it
26in new free programs; and that you know you can do these things.
27
28 To protect your rights, we need to make restrictions that forbid
29anyone to deny you these rights or to ask you to surrender the rights.
30These restrictions translate to certain responsibilities for you if you
31distribute copies of the software, or if you modify it.
32
33 For example, if you distribute copies of such a program, whether
34gratis or for a fee, you must give the recipients all the rights that
35you have. You must make sure that they, too, receive or can get the
36source code. And you must show them these terms so they know their
37rights.
38
39 We protect your rights with two steps: (1) copyright the software, and
40(2) offer you this license which gives you legal permission to copy,
41distribute and/or modify the software.
42
43 Also, for each author's protection and ours, we want to make certain
44that everyone understands that there is no warranty for this free
45software. If the software is modified by someone else and passed on, we
46want its recipients to know that what they have is not the original, so
47that any problems introduced by others will not reflect on the original
48authors' reputations.
49
50 Finally, any free program is threatened constantly by software
51patents. We wish to avoid the danger that redistributors of a free
52program will individually obtain patent licenses, in effect making the
53program proprietary. To prevent this, we have made it clear that any
54patent must be licensed for everyone's free use or not licensed at all.
55
56 The precise terms and conditions for copying, distribution and
57modification follow.
58
59 GNU GENERAL PUBLIC LICENSE
60 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
62 0. This License applies to any program or other work which contains
63a notice placed by the copyright holder saying it may be distributed
64under the terms of this General Public License. The "Program", below,
65refers to any such program or work, and a "work based on the Program"
66means either the Program or any derivative work under copyright law:
67that is to say, a work containing the Program or a portion of it,
68either verbatim or with modifications and/or translated into another
69language. (Hereinafter, translation is included without limitation in
70the term "modification".) Each licensee is addressed as "you".
71
72Activities other than copying, distribution and modification are not
73covered by this License; they are outside its scope. The act of
74running the Program is not restricted, and the output from the Program
75is covered only if its contents constitute a work based on the
76Program (independent of having been made by running the Program).
77Whether that is true depends on what the Program does.
78
79 1. You may copy and distribute verbatim copies of the Program's
80source code as you receive it, in any medium, provided that you
81conspicuously and appropriately publish on each copy an appropriate
82copyright notice and disclaimer of warranty; keep intact all the
83notices that refer to this License and to the absence of any warranty;
84and give any other recipients of the Program a copy of this License
85along with the Program.
86
87You may charge a fee for the physical act of transferring a copy, and
88you may at your option offer warranty protection in exchange for a fee.
89
90 2. You may modify your copy or copies of the Program or any portion
91of it, thus forming a work based on the Program, and copy and
92distribute such modifications or work under the terms of Section 1
93above, provided that you also meet all of these conditions:
94
95 a) You must cause the modified files to carry prominent notices
96 stating that you changed the files and the date of any change.
97
98 b) You must cause any work that you distribute or publish, that in
99 whole or in part contains or is derived from the Program or any
100 part thereof, to be licensed as a whole at no charge to all third
101 parties under the terms of this License.
102
103 c) If the modified program normally reads commands interactively
104 when run, you must cause it, when started running for such
105 interactive use in the most ordinary way, to print or display an
106 announcement including an appropriate copyright notice and a
107 notice that there is no warranty (or else, saying that you provide
108 a warranty) and that users may redistribute the program under
109 these conditions, and telling the user how to view a copy of this
110 License. (Exception: if the Program itself is interactive but
111 does not normally print such an announcement, your work based on
112 the Program is not required to print an announcement.)
113
114These requirements apply to the modified work as a whole. If
115identifiable sections of that work are not derived from the Program,
116and can be reasonably considered independent and separate works in
117themselves, then this License, and its terms, do not apply to those
118sections when you distribute them as separate works. But when you
119distribute the same sections as part of a whole which is a work based
120on the Program, the distribution of the whole must be on the terms of
121this License, whose permissions for other licensees extend to the
122entire whole, and thus to each and every part regardless of who wrote it.
123
124Thus, it is not the intent of this section to claim rights or contest
125your rights to work written entirely by you; rather, the intent is to
126exercise the right to control the distribution of derivative or
127collective works based on the Program.
128
129In addition, mere aggregation of another work not based on the Program
130with the Program (or with a work based on the Program) on a volume of
131a storage or distribution medium does not bring the other work under
132the scope of this License.
133
134 3. You may copy and distribute the Program (or a work based on it,
135under Section 2) in object code or executable form under the terms of
136Sections 1 and 2 above provided that you also do one of the following:
137
138 a) Accompany it with the complete corresponding machine-readable
139 source code, which must be distributed under the terms of Sections
140 1 and 2 above on a medium customarily used for software interchange; or,
141
142 b) Accompany it with a written offer, valid for at least three
143 years, to give any third party, for a charge no more than your
144 cost of physically performing source distribution, a complete
145 machine-readable copy of the corresponding source code, to be
146 distributed under the terms of Sections 1 and 2 above on a medium
147 customarily used for software interchange; or,
148
149 c) Accompany it with the information you received as to the offer
150 to distribute corresponding source code. (This alternative is
151 allowed only for noncommercial distribution and only if you
152 received the program in object code or executable form with such
153 an offer, in accord with Subsection b above.)
154
155The source code for a work means the preferred form of the work for
156making modifications to it. For an executable work, complete source
157code means all the source code for all modules it contains, plus any
158associated interface definition files, plus the scripts used to
159control compilation and installation of the executable. However, as a
160special exception, the source code distributed need not include
161anything that is normally distributed (in either source or binary
162form) with the major components (compiler, kernel, and so on) of the
163operating system on which the executable runs, unless that component
164itself accompanies the executable.
165
166If distribution of executable or object code is made by offering
167access to copy from a designated place, then offering equivalent
168access to copy the source code from the same place counts as
169distribution of the source code, even though third parties are not
170compelled to copy the source along with the object code.
171
172 4. You may not copy, modify, sublicense, or distribute the Program
173except as expressly provided under this License. Any attempt
174otherwise to copy, modify, sublicense or distribute the Program is
175void, and will automatically terminate your rights under this License.
176However, parties who have received copies, or rights, from you under
177this License will not have their licenses terminated so long as such
178parties remain in full compliance.
179
180 5. You are not required to accept this License, since you have not
181signed it. However, nothing else grants you permission to modify or
182distribute the Program or its derivative works. These actions are
183prohibited by law if you do not accept this License. Therefore, by
184modifying or distributing the Program (or any work based on the
185Program), you indicate your acceptance of this License to do so, and
186all its terms and conditions for copying, distributing or modifying
187the Program or works based on it.
188
189 6. Each time you redistribute the Program (or any work based on the
190Program), the recipient automatically receives a license from the
191original licensor to copy, distribute or modify the Program subject to
192these terms and conditions. You may not impose any further
193restrictions on the recipients' exercise of the rights granted herein.
194You are not responsible for enforcing compliance by third parties to
195this License.
196
197 7. If, as a consequence of a court judgment or allegation of patent
198infringement or for any other reason (not limited to patent issues),
199conditions are imposed on you (whether by court order, agreement or
200otherwise) that contradict the conditions of this License, they do not
201excuse you from the conditions of this License. If you cannot
202distribute so as to satisfy simultaneously your obligations under this
203License and any other pertinent obligations, then as a consequence you
204may not distribute the Program at all. For example, if a patent
205license would not permit royalty-free redistribution of the Program by
206all those who receive copies directly or indirectly through you, then
207the only way you could satisfy both it and this License would be to
208refrain entirely from distribution of the Program.
209
210If any portion of this section is held invalid or unenforceable under
211any particular circumstance, the balance of the section is intended to
212apply and the section as a whole is intended to apply in other
213circumstances.
214
215It is not the purpose of this section to induce you to infringe any
216patents or other property right claims or to contest validity of any
217such claims; this section has the sole purpose of protecting the
218integrity of the free software distribution system, which is
219implemented by public license practices. Many people have made
220generous contributions to the wide range of software distributed
221through that system in reliance on consistent application of that
222system; it is up to the author/donor to decide if he or she is willing
223to distribute software through any other system and a licensee cannot
224impose that choice.
225
226This section is intended to make thoroughly clear what is believed to
227be a consequence of the rest of this License.
228
229 8. If the distribution and/or use of the Program is restricted in
230certain countries either by patents or by copyrighted interfaces, the
231original copyright holder who places the Program under this License
232may add an explicit geographical distribution limitation excluding
233those countries, so that distribution is permitted only in or among
234countries not thus excluded. In such case, this License incorporates
235the limitation as if written in the body of this License.
236
237 9. The Free Software Foundation may publish revised and/or new versions
238of the General Public License from time to time. Such new versions will
239be similar in spirit to the present version, but may differ in detail to
240address new problems or concerns.
241
242Each version is given a distinguishing version number. If the Program
243specifies a version number of this License which applies to it and "any
244later version", you have the option of following the terms and conditions
245either of that version or of any later version published by the Free
246Software Foundation. If the Program does not specify a version number of
247this License, you may choose any version ever published by the Free Software
248Foundation.
249
250 10. If you wish to incorporate parts of the Program into other free
251programs whose distribution conditions are different, write to the author
252to ask for permission. For software which is copyrighted by the Free
253Software Foundation, write to the Free Software Foundation; we sometimes
254make exceptions for this. Our decision will be guided by the two goals
255of preserving the free status of all derivatives of our free software and
256of promoting the sharing and reuse of software generally.
257
258 NO WARRANTY
259
260 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268REPAIR OR CORRECTION.
269
270 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278POSSIBILITY OF SUCH DAMAGES.
279
280 END OF TERMS AND CONDITIONS
281
282 How to Apply These Terms to Your New Programs
283
284 If you develop a new program, and you want it to be of the greatest
285possible use to the public, the best way to achieve this is to make it
286free software which everyone can redistribute and change under these terms.
287
288 To do so, attach the following notices to the program. It is safest
289to attach them to the start of each source file to most effectively
290convey the exclusion of warranty; and each file should have at least
291the "copyright" line and a pointer to where the full notice is found.
292
293 <one line to give the program's name and a brief idea of what it does.>
294 Copyright (C) <year> <name of author>
295
296 This program is free software; you can redistribute it and/or modify
297 it under the terms of the GNU General Public License as published by
298 the Free Software Foundation; either version 2 of the License, or
299 (at your option) any later version.
300
301 This program is distributed in the hope that it will be useful,
302 but WITHOUT ANY WARRANTY; without even the implied warranty of
303 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304 GNU General Public License for more details.
305
306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
309
310
311Also add information on how to contact you by electronic and paper mail.
312
313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode:
315
316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details.
320
321The hypothetical commands `show w' and `show c' should show the appropriate
322parts of the General Public License. Of course, the commands you use may
323be called something other than `show w' and `show c'; they could even be
324mouse-clicks or menu items--whatever suits your program.
325
326You should also get your employer (if you work as a programmer) or your
327school, if any, to sign a "copyright disclaimer" for the program, if
328necessary. Here is a sample; alter the names:
329
330 Yoyodyne, Inc., hereby disclaims all copyright interest in the program
331 `Gnomovision' (which makes passes at compilers) written by James Hacker.
332
333 <signature of Ty Coon>, 1 April 1989
334 Ty Coon, President of Vice
335
336This General Public License does not permit incorporating your program into
337proprietary programs. If your program is a subroutine library, you may
338consider it more useful to permit linking proprietary applications with the
339library. If this is what you want to do, use the GNU Library General
340Public 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
index e10cc578..00000000
--- a/inc/3rdparty/libraries/mpdf/README.txt
+++ /dev/null
@@ -1,148 +0,0 @@
1Installation
2============
3 * Download the .zip file and unzip it
4 * Create a folder e.g. /mpdf on your server
5 * Upload all of the files to the server, maintaining the folders as they are
6 * Ensure that you have write permissions set (CHMOD 6xx or 7xx) for the following folders:
7 /ttfontdata/ - used to cache font data; improves performance a lot
8 /tmp/ - used for some images and ProgressBar
9 /graph_cache/ - if you are using JpGraph in conjunction with mPDF
10
11To test the installation, point your browser to the basic example file : [path_to_mpdf_folder]/mpdf/examples/example_basic.php
12
13If you wish to define a different folder for temporary files rather than /tmp/ see the note on 'Folder for temporary files' in
14 the section on Installation & Setup in the manual (http://mpdf1.com/manual/).
15
16If you have problems, please read the section on troubleshooting in the manual.
17
18
19Fonts
20=====
21I will refer to font names in 2 ways:
22"CSS font-family name" - mPDF is designed primarily to read HTML and CSS. This is the name used in CSS e.g.
23 <p style="font-family: 'Trebuchet MS';">
24
25"mPDF font-family name" - the name used internally to process fonts. This could be anything you like,
26 but by default mPDF will convert CSS font-family names by removing any spaces and changing
27 to lowercase. Reading the name above, mPDF will look for a "mPDF font-family name" of
28 'trebuchetms'.
29
30The configurable values referred to below are set in the config_fonts.php file
31
32When parsing HTML/CSS, mPDF will read the CSS font-family name (e.g. 'Trebuchet MS') and convert
33by removing any spaces and changing to lowercase, to look for a mPDF font-family name (trebuchetms).
34
35Next it will look for a translation (if set) e.g.:
36$this->fonttrans = array(
37 'trebuchetms' => 'trebuchet'
38)
39
40Now the mPDF font-family name to be used is 'trebuchet'
41
42If you wish to make this font available, you need to specify the Truetype .ttf font files for each variant.
43These should be defined in the array:
44$this->fontdata = array(
45 "trebuchet" => array(
46 'R' => "trebuc.ttf",
47 'B' => "trebucbd.ttf",
48 'I' => "trebucit.ttf",
49 'BI' => "trebucbi.ttf",
50 )
51)
52
53This is the array which determines whether a font is available to mPDF. Each font-family must have a
54Regular ['R'] file defined - the others (bold, italic, bold-italic) are optional.
55
56mPDF will try to load the font-file. If you have defined _MPDF_SYSTEM_TTFONTS at the top of the
57config_fonts.php file, it will first look for the font-file there. This is useful if you are running
58mPDF on a computer which already has a folder with TTF fonts in (e.g. on Windows)
59
60If the font-file is not there, or _MPDF_SYSTEM_TTFONTS is not defined, mPDF will look in the folder
61/[your_path_to_mpdf]/ttfonts/
62
63Note that the font-file names are case-sensitive and can contain capitals.
64
65If the folder /ttfontdata/ is writeable (CHMOD 644 or 755), mPDF will save files there which it can
66re-use next time it accesses a particular font. This will significantly improve processing time
67and is strongly recommended.
68
69mPDF should be able to read most TrueType Unicode font files with a .ttf extension
70Truetype fonts with .ttf extension that are OpenType also work OK.
71TrueType collections (.ttc) will also work if they contain TrueType Unicode fonts.
72
73
74Character substitution
75----------------------
76Most people will have access to a Pan-Unicode font with most Unicode characters in it such as
77Arial Unicode MS. Set $this->backupSubsFont = array('arialunicodems'); at the top of the config_fonts.php file
78to use this font when substituting any characters not found in the specific font being used.
79
80Example:
81You can set $mpdf->useSubstitutions = true; at runtime
82or $this->useSubstitutions = true; in the config.php file
83
84<p style="font-family: 'Comic Sans MS'">This text contains a Thai character &#3617; which does not exist
85in the Comic Sans MS font file</p>
86
87When useSubstitutions is true, mPDF will try to find substitutions for any missing characters:
881) firstly looks if the character is available in the inbuilt Symbols or ZapfDingbats fonts;
892) [If defined] looks in each of the the font(s) set by $this->backupSubsFont array
90
91NB There is an increase in processing time when using substitutions, and even more so if
92a backupSubsFont is defined.
93
94Controlling mPDF mode
95=====================
96The first parameter of new mPDF('') works as follows:
97new mPDF('c') - forces mPDF to only use the built-in [c]ore Adobe fonts (Helvetica, Times etc)
98
99new mPDF('') - default - font subsetting behaviour is determined by the configurable variables
100 $this->maxTTFFilesize and $this->percentSubset (see below)
101 Default values are set so that: 1) very large font files are always subset
102 2) Fonts are embedded as subsets if < 30% of the characters are used
103
104new mPDF('..-x') - used together with a language or language/country code, this will cause
105 mPDF to use only in-built core fonts (Helvetica, Times) if the language specified is appropiate;
106 otherwise it will force subsetting (equivalent to using "")
107 e.g. new mPDF('de-x') or new mPDF('pt-BR-x') will use in-built core fonts
108 and new mPDF('ru-x') will use subsets of any available TrueType fonts
109 The languages that use core fonts are defined in config_cp.php (using the value $coreSuitable).
110
111new mPDF('..+aCJK') new mPDF('+aCJK')
112new mPDF('..-aCJK') new mPDF('-aCJK')
113 - used optionally together with a language or language/country code, +aCJK will force mPDF
114 to use the Adobe non-embedded CJK fonts when a passage is marked with e.g. "lang: ja"
115 This can be used at runtime to override the value set for $mpdf->useAdobeCJK in config.php
116 Use in conjunction with settings in config_cp.php
117
118For backwards compatibility, new mPDF('-s') and new mPDF('s') will force subsetting by
119 setting $this->percentSubset=100 (see below)
120 new mPDF('utf-8-s') and new mPDF('ar-s') are also recognised
121
122Language/Country (ll-cc)
123------------------------
124You can use a language code ('en') or language/country code ('en-GB') to control which
125mode/fonts are used. The behaviour is set up in config_cp.php file.
126The default settings show some of the things you can do:
127new mPDF('de') - as German is a Western European langauge, it is suitable to use the Adobe core fonts.
128 Using 'de' alone will do nothing, but if you use ('de-x'), this will use core fonts.
129new mPDF('th') - many fonts do not contain the characters necessary for Thai script. The value $unifonts
130 defines a restricted list of fonts available for mPDF to use.
131
132NB <html dir="rtl"> or <body dir="rtl"> are supported.
133
134
135
136Configuration variables changed
137===============================
138Configuration variables are documented in the on-line manual (http://mpdf1.com/manual/).
139
140
141Font folders
142============
143If you wish to define your own font file folders (perhaps to share),
144you can define the 2 constants in your script before including the mpdf.php script e.g.:
145
146define('_MPDF_TTFONTPATH','your_path/ttfonts/');
147define('_MPDF_TTFONTDATAPATH','your_path/ttfontdata/'); // should be writeable
148
diff --git a/inc/3rdparty/libraries/mpdf/classes/barcode.php b/inc/3rdparty/libraries/mpdf/classes/barcode.php
deleted file mode 100644
index 9a230f0e..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/barcode.php
+++ /dev/null
@@ -1,1966 +0,0 @@
1<?php
2
3// Adapted for mPDF from TCPDF barcode. Original Details left below.
4
5//============================================================+
6// File name : barcodes.php
7// Begin : 2008-06-09
8// Last Update : 2009-04-15
9// Version : 1.0.008
10// License : GNU LGPL (http://www.gnu.org/copyleft/lesser.html)
11// ----------------------------------------------------------------------------
12// Copyright (C) 2008-2009 Nicola Asuni - Tecnick.com S.r.l.
13//
14// This program is free software: you can redistribute it and/or modify
15// it under the terms of the GNU Lesser General Public License as published by
16// the Free Software Foundation, either version 2.1 of the License, or
17// (at your option) any later version.
18//
19// This program is distributed in the hope that it will be useful,
20// but WITHOUT ANY WARRANTY; without even the implied warranty of
21// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22// GNU Lesser General Public License for more details.
23//
24// You should have received a copy of the GNU Lesser General Public License
25// along with this program. If not, see <http://www.gnu.org/licenses/>.
26//
27// See LICENSE.TXT file for more information.
28// ----------------------------------------------------------------------------
29//
30// Description : PHP class to creates array representations for
31// common 1D barcodes to be used with TCPDF.
32//
33// Author: Nicola Asuni
34//
35// (c) Copyright:
36// Nicola Asuni
37// Tecnick.com S.r.l.
38// Via della Pace, 11
39// 09044 Quartucciu (CA)
40// ITALY
41// www.tecnick.com
42// info@tecnick.com
43//============================================================+
44
45class PDFBarcode {
46
47 protected $barcode_array;
48 protected $gapwidth;
49 protected $print_ratio;
50 protected $daft;
51
52 public function __construct() {
53
54 }
55
56 public function getBarcodeArray($code, $type, $pr='') {
57 $this->setBarcode($code, $type, $pr);
58 return $this->barcode_array;
59 }
60 public function getChecksum($code, $type) {
61 $this->setBarcode($code, $type);
62 if (!$this->barcode_array) { return ''; }
63 else { return $this->barcode_array['checkdigit']; }
64 }
65
66 public function setBarcode($code, $type, $pr='') {
67 $this->print_ratio = 1;
68 switch (strtoupper($type)) {
69 case 'ISBN':
70 case 'ISSN':
71 case 'EAN13': { // EAN 13
72 $arrcode = $this->barcode_eanupc($code, 13);
73 $arrcode['lightmL'] = 11; // LEFT light margin = x X-dim (http://www.gs1uk.org)
74 $arrcode['lightmR'] = 7; // RIGHT light margin = x X-dim (http://www.gs1uk.org)
75 $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org)
76 $arrcode['nom-H'] = 25.93; // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
77 break;
78 }
79 case 'UPCA': { // UPC-A
80 $arrcode = $this->barcode_eanupc($code, 12);
81 $arrcode['lightmL'] = 9; // LEFT light margin = x X-dim (http://www.gs1uk.org)
82 $arrcode['lightmR'] = 9; // RIGHT light margin = x X-dim (http://www.gs1uk.org)
83 $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org)
84 $arrcode['nom-H'] = 25.91; // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
85 break;
86 }
87 case 'UPCE': { // UPC-E
88 $arrcode = $this->barcode_eanupc($code, 6);
89 $arrcode['lightmL'] = 9; // LEFT light margin = x X-dim (http://www.gs1uk.org)
90 $arrcode['lightmR'] = 7; // RIGHT light margin = x X-dim (http://www.gs1uk.org)
91 $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org)
92 $arrcode['nom-H'] = 25.93; // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
93 break;
94 }
95 case 'EAN8': { // EAN 8
96 $arrcode = $this->barcode_eanupc($code, 8);
97 $arrcode['lightmL'] = 7; // LEFT light margin = x X-dim (http://www.gs1uk.org)
98 $arrcode['lightmR'] = 7; // RIGHT light margin = x X-dim (http://www.gs1uk.org)
99 $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org)
100 $arrcode['nom-H'] = 21.64; // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
101 break;
102 }
103 case 'EAN2': { // 2-Digits UPC-Based Extention
104 $arrcode = $this->barcode_eanext($code, 2);
105 $arrcode['lightmL'] = 7; // LEFT light margin = x X-dim (estimated)
106 $arrcode['lightmR'] = 7; // RIGHT light margin = x X-dim (estimated)
107 $arrcode['sepM'] = 9; // SEPARATION margin = x X-dim (http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm)
108 $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org)
109 $arrcode['nom-H'] = 20; // Nominal bar height in mm incl. numerals (estimated) not used when combined
110 break;
111 }
112 case 'EAN5': { // 5-Digits UPC-Based Extention
113 $arrcode = $this->barcode_eanext($code, 5);
114 $arrcode['lightmL'] = 7; // LEFT light margin = x X-dim (estimated)
115 $arrcode['lightmR'] = 7; // RIGHT light margin = x X-dim (estimated)
116 $arrcode['sepM'] = 9; // SEPARATION margin = x X-dim (http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm)
117 $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org)
118 $arrcode['nom-H'] = 20; // Nominal bar height in mm incl. numerals (estimated) not used when combined
119 break;
120 }
121
122 case 'IMB': { // IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200
123 $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.)
124 $bpi = 22; // Bars per inch
125 // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
126 $this->gapwidth = ((25.4/$bpi) - $xdim)/$xdim;
127 $this->daft = array('D'=>2, 'A'=>2, 'F'=>3, 'T'=>1); // Descender; Ascender; Full; Tracker bar heights
128 $arrcode = $this->barcode_imb($code);
129 $arrcode['nom-X'] = $xdim ;
130 $arrcode['nom-H'] = 3.68; // Nominal value for Height of Full bar in mm (spec.)
131 // USPS-B-3200 Revision C = 4.623
132 // USPS-B-3200 Revision E = 3.68
133 $arrcode['quietL'] = 3.175; // LEFT Quiet margin = mm (spec.)
134 $arrcode['quietR'] = 3.175; // RIGHT Quiet margin = mm (spec.)
135 $arrcode['quietTB'] = 0.711; // TOP/BOTTOM Quiet margin = mm (spec.)
136 break;
137 }
138 case 'RM4SCC': { // RM4SCC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)
139 $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.)
140 $bpi = 22; // Bars per inch
141 // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
142 $this->gapwidth = ((25.4/$bpi) - $xdim)/$xdim;
143 $this->daft = array('D'=>5, 'A'=>5, 'F'=>8, 'T'=>2); // Descender; Ascender; Full; Tracker bar heights
144 $arrcode = $this->barcode_rm4scc($code, false);
145 $arrcode['nom-X'] = $xdim ;
146 $arrcode['nom-H'] = 5.0; // Nominal value for Height of Full bar in mm (spec.)
147 $arrcode['quietL'] = 2; // LEFT Quiet margin = mm (spec.)
148 $arrcode['quietR'] = 2; // RIGHT Quiet margin = mm (spec.)
149 $arrcode['quietTB'] = 2; // TOP/BOTTOM Quiet margin = mm (spec?)
150 break;
151 }
152 case 'KIX': { // KIX (Klant index - Customer index)
153 $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.)
154 $bpi = 22; // Bars per inch
155 // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
156 $this->gapwidth = ((25.4/$bpi) - $xdim)/$xdim;
157 $this->daft = array('D'=>5, 'A'=>5, 'F'=>8, 'T'=>2); // Descender; Ascender; Full; Tracker bar heights
158 $arrcode = $this->barcode_rm4scc($code, true);
159 $arrcode['nom-X'] = $xdim ;
160 $arrcode['nom-H'] = 5.0; // Nominal value for Height of Full bar in mm (? spec.)
161 $arrcode['quietL'] = 2; // LEFT Quiet margin = mm (spec.)
162 $arrcode['quietR'] = 2; // RIGHT Quiet margin = mm (spec.)
163 $arrcode['quietTB'] = 2; // TOP/BOTTOM Quiet margin = mm (spec.)
164 break;
165 }
166 case 'POSTNET': { // POSTNET
167 $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.)
168 $bpi = 22; // Bars per inch
169 // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
170 $this->gapwidth = ((25.4/$bpi) - $xdim)/$xdim;
171 $arrcode = $this->barcode_postnet($code, false);
172 $arrcode['nom-X'] = $xdim ;
173 $arrcode['nom-H'] = 3.175; // Nominal value for Height of Full bar in mm (spec.)
174 $arrcode['quietL'] = 3.175; // LEFT Quiet margin = mm (?spec.)
175 $arrcode['quietR'] = 3.175; // RIGHT Quiet margin = mm (?spec.)
176 $arrcode['quietTB'] = 1.016; // TOP/BOTTOM Quiet margin = mm (?spec.)
177 break;
178 }
179 case 'PLANET': { // PLANET
180 $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.)
181 $bpi = 22; // Bars per inch
182 // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
183 $this->gapwidth = ((25.4/$bpi) - $xdim)/$xdim;
184 $arrcode = $this->barcode_postnet($code, true);
185 $arrcode['nom-X'] = $xdim ;
186 $arrcode['nom-H'] = 3.175; // Nominal value for Height of Full bar in mm (spec.)
187 $arrcode['quietL'] = 3.175; // LEFT Quiet margin = mm (?spec.)
188 $arrcode['quietR'] = 3.175; // RIGHT Quiet margin = mm (?spec.)
189 $arrcode['quietTB'] = 1.016; // TOP/BOTTOM Quiet margin = mm (?spec.)
190 break;
191 }
192
193 case 'C93': { // CODE 93 - USS-93
194 $arrcode = $this->barcode_code93($code);
195 if ($arrcode == false) { break; }
196 $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
197 $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.)
198 $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.)
199 $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.)
200 $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.)
201 break;
202 }
203 case 'CODE11': { // CODE 11
204 if ($pr > 0) { $this->print_ratio = $pr; }
205 else { $this->print_ratio = 3; } // spec: Pr= 1:2.24 - 1:3.5
206 $arrcode = $this->barcode_code11($code);
207 if ($arrcode == false) { break; }
208 $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
209 $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.)
210 $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.)
211 $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.)
212 $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.)
213 break;
214 }
215 case 'MSI': // MSI (Variation of Plessey code)
216 case 'MSI+': { // MSI + CHECKSUM (modulo 11)
217 if (strtoupper($type)=='MSI') { $arrcode = $this->barcode_msi($code, false); }
218 if (strtoupper($type)=='MSI+') { $arrcode = $this->barcode_msi($code, true); }
219 if ($arrcode == false) { break; }
220 $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
221 $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.)
222 $arrcode['lightmL'] = 12; // LEFT light margin = x X-dim (spec.)
223 $arrcode['lightmR'] = 12; // RIGHT light margin = x X-dim (spec.)
224 $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.)
225 break;
226 }
227 case 'CODABAR': { // CODABAR
228 if ($pr > 0) { $this->print_ratio = $pr; }
229 else { $this->print_ratio = 2.5; } // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
230 if (strtoupper($type)=='CODABAR') { $arrcode = $this->barcode_codabar($code); }
231 if ($arrcode == false) { break; }
232 $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
233 $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.)
234 $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.)
235 $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.)
236 $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.)
237 break;
238 }
239 case 'C128A': // CODE 128 A
240 case 'C128B': // CODE 128 B
241 case 'C128C': // CODE 128 C
242 case 'EAN128A': // EAN 128 A
243 case 'EAN128B': // EAN 128 B
244 case 'EAN128C': { // EAN 128 C
245 if (strtoupper($type)=='C128A') { $arrcode = $this->barcode_c128($code, 'A'); }
246 if (strtoupper($type)=='C128B') { $arrcode = $this->barcode_c128($code, 'B'); }
247 if (strtoupper($type)=='C128C') { $arrcode = $this->barcode_c128($code, 'C'); }
248 if (strtoupper($type)=='EAN128A') { $arrcode = $this->barcode_c128($code, 'A', true); }
249 if (strtoupper($type)=='EAN128B') { $arrcode = $this->barcode_c128($code, 'B', true); }
250 if (strtoupper($type)=='EAN128C') { $arrcode = $this->barcode_c128($code, 'C', true); }
251 if ($arrcode == false) { break; }
252 $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
253 $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.)
254 $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.)
255 $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.)
256 $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.)
257 break;
258 }
259 case 'C39': // CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.
260 case 'C39+': // CODE 39 with checksum
261 case 'C39E': // CODE 39 EXTENDED
262 case 'C39E+': { // CODE 39 EXTENDED + CHECKSUM
263 if ($pr > 0) { $this->print_ratio = $pr; }
264 else { $this->print_ratio = 2.5; } // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
265 $code = str_replace(chr(194).chr(160), ' ', $code); // mPDF 5.3.95 (for utf-8 encoded)
266 $code = str_replace(chr(160), ' ', $code); // mPDF 5.3.95 (for win-1252)
267 if (strtoupper($type)=='C39') { $arrcode = $this->barcode_code39($code, false, false); }
268 if (strtoupper($type)=='C39+') { $arrcode = $this->barcode_code39($code, false, true); }
269 if (strtoupper($type)=='C39E') { $arrcode = $this->barcode_code39($code, true, false); }
270 if (strtoupper($type)=='C39E+') { $arrcode = $this->barcode_code39($code, true, true); }
271 if ($arrcode == false) { break; }
272 $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
273 $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.)
274 $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.)
275 $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.)
276 $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.)
277 break;
278 }
279 case 'S25': // Standard 2 of 5
280 case 'S25+': { // Standard 2 of 5 + CHECKSUM
281 if ($pr > 0) { $this->print_ratio = $pr; }
282 else { $this->print_ratio = 3; } // spec: Pr=1:3/1:4.5
283 if (strtoupper($type)=='S25') { $arrcode = $this->barcode_s25($code, false); }
284 if (strtoupper($type)=='S25+') { $arrcode = $this->barcode_s25($code, true); }
285 if ($arrcode == false) { break; }
286 $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
287 $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.)
288 $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.)
289 $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.)
290 $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.)
291 break;
292 }
293 case 'I25': // Interleaved 2 of 5
294 case 'I25+': { // Interleaved 2 of 5 + CHECKSUM
295 if ($pr > 0) { $this->print_ratio = $pr; }
296 else { $this->print_ratio = 2.5; } // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
297 if (strtoupper($type)=='I25') { $arrcode = $this->barcode_i25($code, false); }
298 if (strtoupper($type)=='I25+') { $arrcode = $this->barcode_i25($code, true); }
299 if ($arrcode == false) { break; }
300 $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
301 $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.)
302 $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.)
303 $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.)
304 $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.)
305 break;
306 }
307 case 'I25B': // Interleaved 2 of 5 + Bearer bars
308 case 'I25B+': { // Interleaved 2 of 5 + CHECKSUM + Bearer bars
309 if ($pr > 0) { $this->print_ratio = $pr; }
310 else { $this->print_ratio = 2.5; } // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
311 if (strtoupper($type)=='I25B') { $arrcode = $this->barcode_i25($code, false); }
312 if (strtoupper($type)=='I25B+') { $arrcode = $this->barcode_i25($code, true); }
313 if ($arrcode == false) { break; }
314 $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
315 $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.)
316 $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.)
317 $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.)
318 $arrcode['lightTB'] = 2; // TOP/BOTTOM light margin = x X-dim (non-spec.) - used for bearer bars
319 break;
320 }
321 default: {
322 $this->barcode_array = false;
323 }
324 }
325 $this->barcode_array = $arrcode;
326 }
327
328 /**
329 * CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.
330 */
331 protected function barcode_code39($code, $extended=false, $checksum=false) {
332 $chr['0'] = '111221211';
333 $chr['1'] = '211211112';
334 $chr['2'] = '112211112';
335 $chr['3'] = '212211111';
336 $chr['4'] = '111221112';
337 $chr['5'] = '211221111';
338 $chr['6'] = '112221111';
339 $chr['7'] = '111211212';
340 $chr['8'] = '211211211';
341 $chr['9'] = '112211211';
342 $chr['A'] = '211112112';
343 $chr['B'] = '112112112';
344 $chr['C'] = '212112111';
345 $chr['D'] = '111122112';
346 $chr['E'] = '211122111';
347 $chr['F'] = '112122111';
348 $chr['G'] = '111112212';
349 $chr['H'] = '211112211';
350 $chr['I'] = '112112211';
351 $chr['J'] = '111122211';
352 $chr['K'] = '211111122';
353 $chr['L'] = '112111122';
354 $chr['M'] = '212111121';
355 $chr['N'] = '111121122';
356 $chr['O'] = '211121121';
357 $chr['P'] = '112121121';
358 $chr['Q'] = '111111222';
359 $chr['R'] = '211111221';
360 $chr['S'] = '112111221';
361 $chr['T'] = '111121221';
362 $chr['U'] = '221111112';
363 $chr['V'] = '122111112';
364 $chr['W'] = '222111111';
365 $chr['X'] = '121121112';
366 $chr['Y'] = '221121111';
367 $chr['Z'] = '122121111';
368 $chr['-'] = '121111212';
369 $chr['.'] = '221111211';
370 $chr[' '] = '122111211';
371 $chr['$'] = '121212111';
372 $chr['/'] = '121211121';
373 $chr['+'] = '121112121';
374 $chr['%'] = '111212121';
375 $chr['*'] = '121121211';
376
377 $code = strtoupper($code);
378 if ($extended) {
379 // extended mode
380 $code = $this->encode_code39_ext($code);
381 }
382 if ($code === false) {
383 return false;
384 }
385 if ($checksum) {
386 // checksum
387 $checkdigit = $this->checksum_code39($code);
388 $code .= $checkdigit ;
389 }
390 // add start and stop codes
391 $code = '*'.$code.'*';
392
393 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
394 $k = 0;
395 $clen = strlen($code);
396 for ($i = 0; $i < $clen; ++$i) {
397 $char = $code[$i];
398 if(!isset($chr[$char])) {
399 // invalid character
400 return false;
401 }
402 for ($j = 0; $j < 9; ++$j) {
403 if (($j % 2) == 0) {
404 $t = true; // bar
405 } else {
406 $t = false; // space
407 }
408 $x = $chr[$char][$j];
409 if ($x == 2) { $w = $this->print_ratio; }
410 else { $w = 1; }
411
412 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
413 $bararray['maxw'] += $w;
414 ++$k;
415 }
416 $bararray['bcode'][$k] = array('t' => false, 'w' => 1, 'h' => 1, 'p' => 0);
417 $bararray['maxw'] += 1;
418 ++$k;
419 }
420 $bararray['checkdigit'] = $checkdigit;
421 return $bararray;
422 }
423
424 /**
425 * Encode a string to be used for CODE 39 Extended mode.
426 */
427 protected function encode_code39_ext($code) {
428 $encode = array(
429 chr(0) => '%U', chr(1) => '$A', chr(2) => '$B', chr(3) => '$C',
430 chr(4) => '$D', chr(5) => '$E', chr(6) => '$F', chr(7) => '$G',
431 chr(8) => '$H', chr(9) => '$I', chr(10) => '$J', chr(11) => '£K',
432 chr(12) => '$L', chr(13) => '$M', chr(14) => '$N', chr(15) => '$O',
433 chr(16) => '$P', chr(17) => '$Q', chr(18) => '$R', chr(19) => '$S',
434 chr(20) => '$T', chr(21) => '$U', chr(22) => '$V', chr(23) => '$W',
435 chr(24) => '$X', chr(25) => '$Y', chr(26) => '$Z', chr(27) => '%A',
436 chr(28) => '%B', chr(29) => '%C', chr(30) => '%D', chr(31) => '%E',
437 chr(32) => ' ', chr(33) => '/A', chr(34) => '/B', chr(35) => '/C',
438 chr(36) => '/D', chr(37) => '/E', chr(38) => '/F', chr(39) => '/G',
439 chr(40) => '/H', chr(41) => '/I', chr(42) => '/J', chr(43) => '/K',
440 chr(44) => '/L', chr(45) => '-', chr(46) => '.', chr(47) => '/O',
441 chr(48) => '0', chr(49) => '1', chr(50) => '2', chr(51) => '3',
442 chr(52) => '4', chr(53) => '5', chr(54) => '6', chr(55) => '7',
443 chr(56) => '8', chr(57) => '9', chr(58) => '/Z', chr(59) => '%F',
444 chr(60) => '%G', chr(61) => '%H', chr(62) => '%I', chr(63) => '%J',
445 chr(64) => '%V', chr(65) => 'A', chr(66) => 'B', chr(67) => 'C',
446 chr(68) => 'D', chr(69) => 'E', chr(70) => 'F', chr(71) => 'G',
447 chr(72) => 'H', chr(73) => 'I', chr(74) => 'J', chr(75) => 'K',
448 chr(76) => 'L', chr(77) => 'M', chr(78) => 'N', chr(79) => 'O',
449 chr(80) => 'P', chr(81) => 'Q', chr(82) => 'R', chr(83) => 'S',
450 chr(84) => 'T', chr(85) => 'U', chr(86) => 'V', chr(87) => 'W',
451 chr(88) => 'X', chr(89) => 'Y', chr(90) => 'Z', chr(91) => '%K',
452 chr(92) => '%L', chr(93) => '%M', chr(94) => '%N', chr(95) => '%O',
453 chr(96) => '%W', chr(97) => '+A', chr(98) => '+B', chr(99) => '+C',
454 chr(100) => '+D', chr(101) => '+E', chr(102) => '+F', chr(103) => '+G',
455 chr(104) => '+H', chr(105) => '+I', chr(106) => '+J', chr(107) => '+K',
456 chr(108) => '+L', chr(109) => '+M', chr(110) => '+N', chr(111) => '+O',
457 chr(112) => '+P', chr(113) => '+Q', chr(114) => '+R', chr(115) => '+S',
458 chr(116) => '+T', chr(117) => '+U', chr(118) => '+V', chr(119) => '+W',
459 chr(120) => '+X', chr(121) => '+Y', chr(122) => '+Z', chr(123) => '%P',
460 chr(124) => '%Q', chr(125) => '%R', chr(126) => '%S', chr(127) => '%T');
461 $code_ext = '';
462 $clen = strlen($code);
463 for ($i = 0 ; $i < $clen; ++$i) {
464 if (ord($code[$i]) > 127) {
465 return false;
466 }
467 $code_ext .= $encode[$code[$i]];
468 }
469 return $code_ext;
470 }
471
472 /**
473 * Calculate CODE 39 checksum (modulo 43).
474 */
475 protected function checksum_code39($code) {
476 $chars = array(
477 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
478 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
479 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
480 'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%');
481 $sum = 0;
482 $clen = strlen($code);
483 for ($i = 0 ; $i < $clen; ++$i) {
484 $k = array_keys($chars, $code[$i]);
485 $sum += $k[0];
486 }
487 $j = ($sum % 43);
488 return $chars[$j];
489 }
490
491 /**
492 * CODE 93 - USS-93
493 * Compact code similar to Code 39
494 */
495 protected function barcode_code93($code) {
496 $chr['0'] = '131112';
497 $chr['1'] = '111213';
498 $chr['2'] = '111312';
499 $chr['3'] = '111411';
500 $chr['4'] = '121113';
501 $chr['5'] = '121212';
502 $chr['6'] = '121311';
503 $chr['7'] = '111114';
504 $chr['8'] = '131211';
505 $chr['9'] = '141111';
506 $chr['A'] = '211113';
507 $chr['B'] = '211212';
508 $chr['C'] = '211311';
509 $chr['D'] = '221112';
510 $chr['E'] = '221211';
511 $chr['F'] = '231111';
512 $chr['G'] = '112113';
513 $chr['H'] = '112212';
514 $chr['I'] = '112311';
515 $chr['J'] = '122112';
516 $chr['K'] = '132111';
517 $chr['L'] = '111123';
518 $chr['M'] = '111222';
519 $chr['N'] = '111321';
520 $chr['O'] = '121122';
521 $chr['P'] = '131121';
522 $chr['Q'] = '212112';
523 $chr['R'] = '212211';
524 $chr['S'] = '211122';
525 $chr['T'] = '211221';
526 $chr['U'] = '221121';
527 $chr['V'] = '222111';
528 $chr['W'] = '112122';
529 $chr['X'] = '112221';
530 $chr['Y'] = '122121';
531 $chr['Z'] = '123111';
532 $chr['-'] = '121131';
533 $chr['.'] = '311112';
534 $chr[' '] = '311211';
535 $chr['$'] = '321111';
536 $chr['/'] = '112131';
537 $chr['+'] = '113121';
538 $chr['%'] = '211131';
539 $chr[128] = '121221'; // ($)
540 $chr[129] = '311121'; // (/)
541 $chr[130] = '122211'; // (+)
542 $chr[131] = '312111'; // (%)
543 $chr['*'] = '111141';
544 $code = strtoupper($code);
545 $encode = array(
546 chr(0) => chr(131).'U', chr(1) => chr(128).'A', chr(2) => chr(128).'B', chr(3) => chr(128).'C',
547 chr(4) => chr(128).'D', chr(5) => chr(128).'E', chr(6) => chr(128).'F', chr(7) => chr(128).'G',
548 chr(8) => chr(128).'H', chr(9) => chr(128).'I', chr(10) => chr(128).'J', chr(11) => '£K',
549 chr(12) => chr(128).'L', chr(13) => chr(128).'M', chr(14) => chr(128).'N', chr(15) => chr(128).'O',
550 chr(16) => chr(128).'P', chr(17) => chr(128).'Q', chr(18) => chr(128).'R', chr(19) => chr(128).'S',
551 chr(20) => chr(128).'T', chr(21) => chr(128).'U', chr(22) => chr(128).'V', chr(23) => chr(128).'W',
552 chr(24) => chr(128).'X', chr(25) => chr(128).'Y', chr(26) => chr(128).'Z', chr(27) => chr(131).'A',
553 chr(28) => chr(131).'B', chr(29) => chr(131).'C', chr(30) => chr(131).'D', chr(31) => chr(131).'E',
554 chr(32) => ' ', chr(33) => chr(129).'A', chr(34) => chr(129).'B', chr(35) => chr(129).'C',
555 chr(36) => chr(129).'D', chr(37) => chr(129).'E', chr(38) => chr(129).'F', chr(39) => chr(129).'G',
556 chr(40) => chr(129).'H', chr(41) => chr(129).'I', chr(42) => chr(129).'J', chr(43) => chr(129).'K',
557 chr(44) => chr(129).'L', chr(45) => '-', chr(46) => '.', chr(47) => chr(129).'O',
558 chr(48) => '0', chr(49) => '1', chr(50) => '2', chr(51) => '3',
559 chr(52) => '4', chr(53) => '5', chr(54) => '6', chr(55) => '7',
560 chr(56) => '8', chr(57) => '9', chr(58) => chr(129).'Z', chr(59) => chr(131).'F',
561 chr(60) => chr(131).'G', chr(61) => chr(131).'H', chr(62) => chr(131).'I', chr(63) => chr(131).'J',
562 chr(64) => chr(131).'V', chr(65) => 'A', chr(66) => 'B', chr(67) => 'C',
563 chr(68) => 'D', chr(69) => 'E', chr(70) => 'F', chr(71) => 'G',
564 chr(72) => 'H', chr(73) => 'I', chr(74) => 'J', chr(75) => 'K',
565 chr(76) => 'L', chr(77) => 'M', chr(78) => 'N', chr(79) => 'O',
566 chr(80) => 'P', chr(81) => 'Q', chr(82) => 'R', chr(83) => 'S',
567 chr(84) => 'T', chr(85) => 'U', chr(86) => 'V', chr(87) => 'W',
568 chr(88) => 'X', chr(89) => 'Y', chr(90) => 'Z', chr(91) => chr(131).'K',
569 chr(92) => chr(131).'L', chr(93) => chr(131).'M', chr(94) => chr(131).'N', chr(95) => chr(131).'O',
570 chr(96) => chr(131).'W', chr(97) => chr(130).'A', chr(98) => chr(130).'B', chr(99) => chr(130).'C',
571 chr(100) => chr(130).'D', chr(101) => chr(130).'E', chr(102) => chr(130).'F', chr(103) => chr(130).'G',
572 chr(104) => chr(130).'H', chr(105) => chr(130).'I', chr(106) => chr(130).'J', chr(107) => chr(130).'K',
573 chr(108) => chr(130).'L', chr(109) => chr(130).'M', chr(110) => chr(130).'N', chr(111) => chr(130).'O',
574 chr(112) => chr(130).'P', chr(113) => chr(130).'Q', chr(114) => chr(130).'R', chr(115) => chr(130).'S',
575 chr(116) => chr(130).'T', chr(117) => chr(130).'U', chr(118) => chr(130).'V', chr(119) => chr(130).'W',
576 chr(120) => chr(130).'X', chr(121) => chr(130).'Y', chr(122) => chr(130).'Z', chr(123) => chr(131).'P',
577 chr(124) => chr(131).'Q', chr(125) => chr(131).'R', chr(126) => chr(131).'S', chr(127) => chr(131).'T');
578 $code_ext = '';
579 $clen = strlen($code);
580 for ($i = 0 ; $i < $clen; ++$i) {
581 if (ord($code[$i]) > 127) {
582 return false;
583 }
584 $code_ext .= $encode[$code[$i]];
585 }
586 // checksum
587 $checkdigit = $this->checksum_code93($code);
588 $code .= $checkdigit ;
589 // add start and stop codes
590 $code = '*'.$code.'*';
591 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
592 $k = 0;
593 $clen = strlen($code);
594 for ($i = 0; $i < $clen; ++$i) {
595 $char = $code[$i];
596 if(!isset($chr[$char])) {
597 // invalid character
598 return false;
599 }
600 for ($j = 0; $j < 6; ++$j) {
601 if (($j % 2) == 0) {
602 $t = true; // bar
603 } else {
604 $t = false; // space
605 }
606 $w = $chr[$char][$j];
607 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
608 $bararray['maxw'] += $w;
609 ++$k;
610 }
611 }
612 $bararray['bcode'][$k] = array('t' => true, 'w' => 1, 'h' => 1, 'p' => 0);
613 $bararray['maxw'] += 1;
614 ++$k;
615 $bararray['checkdigit'] = $checkdigit;
616 return $bararray;
617 }
618
619 /**
620 * Calculate CODE 93 checksum (modulo 47).
621 */
622 protected function checksum_code93($code) {
623 $chars = array(
624 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
625 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
626 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
627 'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%');
628 // translate special characters
629 $code = strtr($code, chr(128).chr(129).chr(130).chr(131), '$/+%');
630 $len = strlen($code);
631 // calculate check digit C
632 $p = 1;
633 $check = 0;
634 for ($i = ($len - 1); $i >= 0; --$i) {
635 $k = array_keys($chars, $code[$i]);
636 $check += ($k[0] * $p);
637 ++$p;
638 if ($p > 20) {
639 $p = 1;
640 }
641 }
642 $check %= 47;
643 $c = $chars[$check];
644 $code .= $c;
645 // calculate check digit K
646 $p = 1;
647 $check = 0;
648 for ($i = $len; $i >= 0; --$i) {
649 $k = array_keys($chars, $code[$i]);
650 $check += ($k[0] * $p);
651 ++$p;
652 if ($p > 15) {
653 $p = 1;
654 }
655 }
656 $check %= 47;
657 $k = $chars[$check];
658 return $c.$k;
659 }
660
661 /**
662 * Checksum for standard 2 of 5 barcodes.
663 */
664 protected function checksum_s25($code) {
665 $len = strlen($code);
666 $sum = 0;
667 for ($i = 0; $i < $len; $i+=2) {
668 $sum += $code[$i];
669 }
670 $sum *= 3;
671 for ($i = 1; $i < $len; $i+=2) {
672 $sum += ($code[$i]);
673 }
674 $r = $sum % 10;
675 if($r > 0) {
676 $r = (10 - $r);
677 }
678 return $r;
679 }
680
681 /**
682 * MSI.
683 * Variation of Plessey code, with similar applications
684 * Contains digits (0 to 9) and encodes the data only in the width of bars.
685 */
686 protected function barcode_msi($code, $checksum=false) {
687 $chr['0'] = '100100100100';
688 $chr['1'] = '100100100110';
689 $chr['2'] = '100100110100';
690 $chr['3'] = '100100110110';
691 $chr['4'] = '100110100100';
692 $chr['5'] = '100110100110';
693 $chr['6'] = '100110110100';
694 $chr['7'] = '100110110110';
695 $chr['8'] = '110100100100';
696 $chr['9'] = '110100100110';
697 $chr['A'] = '110100110100';
698 $chr['B'] = '110100110110';
699 $chr['C'] = '110110100100';
700 $chr['D'] = '110110100110';
701 $chr['E'] = '110110110100';
702 $chr['F'] = '110110110110';
703 if ($checksum) {
704 // add checksum
705 $clen = strlen($code);
706 $p = 2;
707 $check = 0;
708 for ($i = ($clen - 1); $i >= 0; --$i) {
709 $check += (hexdec($code[$i]) * $p);
710 ++$p;
711 if ($p > 7) {
712 $p = 2;
713 }
714 }
715 $check %= 11;
716 if ($check > 0) {
717 $check = 11 - $check;
718 }
719 $code .= $check;
720 $checkdigit = $check;
721 }
722 $seq = '110'; // left guard
723 $clen = strlen($code);
724 for ($i = 0; $i < $clen; ++$i) {
725 $digit = $code[$i];
726 if (!isset($chr[$digit])) {
727 // invalid character
728 return false;
729 }
730 $seq .= $chr[$digit];
731 }
732 $seq .= '1001'; // right guard
733 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
734 $bararray['checkdigit'] = $checkdigit;
735 return $this->binseq_to_array($seq, $bararray);
736 }
737
738 /**
739 * Standard 2 of 5 barcodes.
740 * Used in airline ticket marking, photofinishing
741 * Contains digits (0 to 9) and encodes the data only in the width of bars.
742 */
743 protected function barcode_s25($code, $checksum=false) {
744 $chr['0'] = '10101110111010';
745 $chr['1'] = '11101010101110';
746 $chr['2'] = '10111010101110';
747 $chr['3'] = '11101110101010';
748 $chr['4'] = '10101110101110';
749 $chr['5'] = '11101011101010';
750 $chr['6'] = '10111011101010';
751 $chr['7'] = '10101011101110';
752 $chr['8'] = '10101110111010';
753 $chr['9'] = '10111010111010';
754 if ($checksum) {
755 // add checksum
756 $checkdigit = $this->checksum_s25($code);
757 $code .= $checkdigit ;
758 }
759 if((strlen($code) % 2) != 0) {
760 // add leading zero if code-length is odd
761 $code = '0'.$code;
762 }
763 $seq = '11011010';
764 $clen = strlen($code);
765 for ($i = 0; $i < $clen; ++$i) {
766 $digit = $code[$i];
767 if (!isset($chr[$digit])) {
768 // invalid character
769 return false;
770 }
771 $seq .= $chr[$digit];
772 }
773 $seq .= '1101011';
774 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
775 $bararray['checkdigit'] = $checkdigit;
776 return $this->binseq_to_array($seq, $bararray);
777 }
778
779 /**
780 * Convert binary barcode sequence to barcode array
781 */
782 protected function binseq_to_array($seq, $bararray) {
783 $len = strlen($seq);
784 $w = 0;
785 $k = 0;
786 for ($i = 0; $i < $len; ++$i) {
787 $w += 1;
788 if (($i == ($len - 1)) OR (($i < ($len - 1)) AND ($seq[$i] != $seq[($i+1)]))) {
789 if ($seq[$i] == '1') {
790 $t = true; // bar
791 } else {
792 $t = false; // space
793 }
794 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
795 $bararray['maxw'] += $w;
796 ++$k;
797 $w = 0;
798 }
799 }
800 return $bararray;
801 }
802
803 /**
804 * Interleaved 2 of 5 barcodes.
805 * Compact numeric code, widely used in industry, air cargo
806 * Contains digits (0 to 9) and encodes the data in the width of both bars and spaces.
807 */
808 protected function barcode_i25($code, $checksum=false) {
809 $chr['0'] = '11221';
810 $chr['1'] = '21112';
811 $chr['2'] = '12112';
812 $chr['3'] = '22111';
813 $chr['4'] = '11212';
814 $chr['5'] = '21211';
815 $chr['6'] = '12211';
816 $chr['7'] = '11122';
817 $chr['8'] = '21121';
818 $chr['9'] = '12121';
819 $chr['A'] = '11';
820 $chr['Z'] = '21';
821 if ($checksum) {
822 // add checksum
823 $checkdigit = $this->checksum_s25($code);
824 $code .= $checkdigit ;
825 }
826 if((strlen($code) % 2) != 0) {
827 // add leading zero if code-length is odd
828 $code = '0'.$code;
829 }
830 // add start and stop codes
831 $code = 'AA'.strtolower($code).'ZA';
832
833 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
834 $k = 0;
835 $clen = strlen($code);
836 for ($i = 0; $i < $clen; $i = ($i + 2)) {
837 $char_bar = $code[$i];
838 $char_space = $code[$i+1];
839 if((!isset($chr[$char_bar])) OR (!isset($chr[$char_space]))) {
840 // invalid character
841 return false;
842 }
843 // create a bar-space sequence
844 $seq = '';
845 $chrlen = strlen($chr[$char_bar]);
846 for ($s = 0; $s < $chrlen; $s++){
847 $seq .= $chr[$char_bar][$s] . $chr[$char_space][$s];
848 }
849 $seqlen = strlen($seq);
850 for ($j = 0; $j < $seqlen; ++$j) {
851 if (($j % 2) == 0) {
852 $t = true; // bar
853 } else {
854 $t = false; // space
855 }
856 $x = $seq[$j];
857 if ($x == 2) { $w = $this->print_ratio; }
858 else { $w = 1; }
859
860 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
861 $bararray['maxw'] += $w;
862 ++$k;
863 }
864 }
865 $bararray['checkdigit'] = $checkdigit;
866 return $bararray;
867 }
868
869 /**
870 * C128 barcodes.
871 * Very capable code, excellent density, high reliability; in very wide use world-wide
872 */
873 protected function barcode_c128($code, $type='B', $ean=false) {
874 $code = strcode2utf($code); // mPDF 5.7.1 Allows e.g. <barcode code="5432&#013;1068" type="C128A" />
875 $chr = array(
876 '212222', /* 00 */
877 '222122', /* 01 */
878 '222221', /* 02 */
879 '121223', /* 03 */
880 '121322', /* 04 */
881 '131222', /* 05 */
882 '122213', /* 06 */
883 '122312', /* 07 */
884 '132212', /* 08 */
885 '221213', /* 09 */
886 '221312', /* 10 */
887 '231212', /* 11 */
888 '112232', /* 12 */
889 '122132', /* 13 */
890 '122231', /* 14 */
891 '113222', /* 15 */
892 '123122', /* 16 */
893 '123221', /* 17 */
894 '223211', /* 18 */
895 '221132', /* 19 */
896 '221231', /* 20 */
897 '213212', /* 21 */
898 '223112', /* 22 */
899 '312131', /* 23 */
900 '311222', /* 24 */
901 '321122', /* 25 */
902 '321221', /* 26 */
903 '312212', /* 27 */
904 '322112', /* 28 */
905 '322211', /* 29 */
906 '212123', /* 30 */
907 '212321', /* 31 */
908 '232121', /* 32 */
909 '111323', /* 33 */
910 '131123', /* 34 */
911 '131321', /* 35 */
912 '112313', /* 36 */
913 '132113', /* 37 */
914 '132311', /* 38 */
915 '211313', /* 39 */
916 '231113', /* 40 */
917 '231311', /* 41 */
918 '112133', /* 42 */
919 '112331', /* 43 */
920 '132131', /* 44 */
921 '113123', /* 45 */
922 '113321', /* 46 */
923 '133121', /* 47 */
924 '313121', /* 48 */
925 '211331', /* 49 */
926 '231131', /* 50 */
927 '213113', /* 51 */
928 '213311', /* 52 */
929 '213131', /* 53 */
930 '311123', /* 54 */
931 '311321', /* 55 */
932 '331121', /* 56 */
933 '312113', /* 57 */
934 '312311', /* 58 */
935 '332111', /* 59 */
936 '314111', /* 60 */
937 '221411', /* 61 */
938 '431111', /* 62 */
939 '111224', /* 63 */
940 '111422', /* 64 */
941 '121124', /* 65 */
942 '121421', /* 66 */
943 '141122', /* 67 */
944 '141221', /* 68 */
945 '112214', /* 69 */
946 '112412', /* 70 */
947 '122114', /* 71 */
948 '122411', /* 72 */
949 '142112', /* 73 */
950 '142211', /* 74 */
951 '241211', /* 75 */
952 '221114', /* 76 */
953 '413111', /* 77 */
954 '241112', /* 78 */
955 '134111', /* 79 */
956 '111242', /* 80 */
957 '121142', /* 81 */
958 '121241', /* 82 */
959 '114212', /* 83 */
960 '124112', /* 84 */
961 '124211', /* 85 */
962 '411212', /* 86 */
963 '421112', /* 87 */
964 '421211', /* 88 */
965 '212141', /* 89 */
966 '214121', /* 90 */
967 '412121', /* 91 */
968 '111143', /* 92 */
969 '111341', /* 93 */
970 '131141', /* 94 */
971 '114113', /* 95 */
972 '114311', /* 96 */
973 '411113', /* 97 */
974 '411311', /* 98 */
975 '113141', /* 99 */
976 '114131', /* 100 */
977 '311141', /* 101 */
978 '411131', /* 102 */
979 '211412', /* 103 START A */
980 '211214', /* 104 START B */
981 '211232', /* 105 START C */
982 '233111', /* STOP */
983 '200000' /* END */
984 );
985 $keys = '';
986 switch(strtoupper($type)) {
987 case 'A': {
988 $startid = 103;
989 $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_';
990 for ($i = 0; $i < 32; ++$i) {
991 $keys .= chr($i);
992 }
993 break;
994 }
995 case 'B': {
996 $startid = 104;
997 $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.chr(127);
998 break;
999 }
1000 case 'C': {
1001 $startid = 105;
1002 $keys = '';
1003 if ((strlen($code) % 2) != 0) {
1004 // The length of barcode value must be even ($code). You must pad the number with zeros
1005 return false;
1006 }
1007 for ($i = 0; $i <= 99; ++$i) {
1008 $keys .= chr($i);
1009 }
1010 $new_code = '';
1011 $hclen = (strlen($code) / 2);
1012 for ($i = 0; $i < $hclen; ++$i) {
1013 $new_code .= chr(intval($code{(2 * $i)}.$code{(2 * $i + 1)}));
1014 }
1015 $code = $new_code;
1016 break;
1017 }
1018 default: {
1019 return false;
1020 }
1021 }
1022
1023 // calculate check character
1024 $sum = $startid;
1025 if ($ean) { $code = chr(102) . $code; } // Add FNC 1 - which identifies it as EAN-128
1026 $clen = strlen($code);
1027 for ($i = 0; $i < $clen; ++$i) {
1028 if ($ean && $i==0) { $sum += 102; }
1029 else { $sum += (strpos($keys, $code[$i]) * ($i+1)); }
1030 }
1031 $check = ($sum % 103);
1032 $checkdigit = $check ;
1033 // add start, check and stop codes
1034 $code = chr($startid).$code.chr($check).chr(106).chr(107);
1035 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
1036 $k = 0;
1037 $len = strlen($code);
1038 for ($i = 0; $i < $len; ++$i) {
1039 $ck = strpos($keys, $code[$i]);
1040 if (($i == 0) || ($ean && $i==1) | ($i > ($len-4))) {
1041 $char_num = ord($code[$i]);
1042 $seq = $chr[$char_num];
1043 } elseif(($ck >= 0) AND isset($chr[$ck])) {
1044 $seq = $chr[$ck];
1045 } else {
1046 // invalid character
1047 return false;
1048 }
1049 for ($j = 0; $j < 6; ++$j) {
1050 if (($j % 2) == 0) {
1051 $t = true; // bar
1052 } else {
1053 $t = false; // space
1054 }
1055 $w = $seq[$j];
1056 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
1057 $bararray['maxw'] += $w;
1058 ++$k;
1059 }
1060 }
1061 $bararray['checkdigit'] = $checkdigit;
1062 return $bararray;
1063 }
1064
1065 /**
1066 * EAN13 and UPC-A barcodes.
1067 * EAN13: European Article Numbering international retail product code
1068 * UPC-A: Universal product code seen on almost all retail products in the USA and Canada
1069 * UPC-E: Short version of UPC symbol
1070 */
1071 protected function barcode_eanupc($code, $len=13) {
1072 $upce = false;
1073 $checkdigit = false;
1074 if ($len == 6) {
1075 $len = 12; // UPC-A
1076 $upce = true; // UPC-E mode
1077 }
1078 $data_len = $len - 1;
1079 //Padding
1080 $code = str_pad($code, $data_len, '0', STR_PAD_LEFT);
1081 $code_len = strlen($code);
1082 // calculate check digit
1083 $sum_a = 0;
1084 for ($i = 1; $i < $data_len; $i+=2) {
1085 $sum_a += $code[$i];
1086 }
1087 if ($len > 12) {
1088 $sum_a *= 3;
1089 }
1090 $sum_b = 0;
1091 for ($i = 0; $i < $data_len; $i+=2) {
1092 $sum_b += ($code[$i]);
1093 }
1094 if ($len < 13) {
1095 $sum_b *= 3;
1096 }
1097 $r = ($sum_a + $sum_b) % 10;
1098 if($r > 0) {
1099 $r = (10 - $r);
1100 }
1101 if ($code_len == $data_len) {
1102 // add check digit
1103 $code .= $r;
1104 $checkdigit = $r;
1105 } elseif ($r !== intval($code[$data_len])) {
1106 // wrong checkdigit
1107 return false;
1108 }
1109 if ($len == 12) {
1110 // UPC-A
1111 $code = '0'.$code;
1112 ++$len;
1113 }
1114 if ($upce) {
1115 // convert UPC-A to UPC-E
1116 $tmp = substr($code, 4, 3);
1117 $prod_code = intval(substr($code,7,5)); // product code
1118 $invalid_upce = false;
1119 if (($tmp == '000') OR ($tmp == '100') OR ($tmp == '200')) {
1120 // manufacturer code ends in 000, 100, or 200
1121 $upce_code = substr($code, 2, 2).substr($code, 9, 3).substr($code, 4, 1);
1122 if ($prod_code > 999) { $invalid_upce = true; }
1123 } else {
1124 $tmp = substr($code, 5, 2);
1125 if ($tmp == '00') {
1126 // manufacturer code ends in 00
1127 $upce_code = substr($code, 2, 3).substr($code, 10, 2).'3';
1128 if ($prod_code > 99) { $invalid_upce = true; }
1129 } else {
1130 $tmp = substr($code, 6, 1);
1131 if ($tmp == '0') {
1132 // manufacturer code ends in 0
1133 $upce_code = substr($code, 2, 4).substr($code, 11, 1).'4';
1134 if ($prod_code > 9) { $invalid_upce = true; }
1135 } else {
1136 // manufacturer code does not end in zero
1137 $upce_code = substr($code, 2, 5).substr($code, 11, 1);
1138 if ($prod_code > 9) { $invalid_upce = true; }
1139 }
1140 }
1141 }
1142 if ($invalid_upce) { die("Error - UPC-A cannot produce a valid UPC-E barcode"); } // Error generating a UPCE code
1143 }
1144 //Convert digits to bars
1145 $codes = array(
1146 'A'=>array( // left odd parity
1147 '0'=>'0001101',
1148 '1'=>'0011001',
1149 '2'=>'0010011',
1150 '3'=>'0111101',
1151 '4'=>'0100011',
1152 '5'=>'0110001',
1153 '6'=>'0101111',
1154 '7'=>'0111011',
1155 '8'=>'0110111',
1156 '9'=>'0001011'),
1157 'B'=>array( // left even parity
1158 '0'=>'0100111',
1159 '1'=>'0110011',
1160 '2'=>'0011011',
1161 '3'=>'0100001',
1162 '4'=>'0011101',
1163 '5'=>'0111001',
1164 '6'=>'0000101',
1165 '7'=>'0010001',
1166 '8'=>'0001001',
1167 '9'=>'0010111'),
1168 'C'=>array( // right
1169 '0'=>'1110010',
1170 '1'=>'1100110',
1171 '2'=>'1101100',
1172 '3'=>'1000010',
1173 '4'=>'1011100',
1174 '5'=>'1001110',
1175 '6'=>'1010000',
1176 '7'=>'1000100',
1177 '8'=>'1001000',
1178 '9'=>'1110100')
1179 );
1180 $parities = array(
1181 '0'=>array('A','A','A','A','A','A'),
1182 '1'=>array('A','A','B','A','B','B'),
1183 '2'=>array('A','A','B','B','A','B'),
1184 '3'=>array('A','A','B','B','B','A'),
1185 '4'=>array('A','B','A','A','B','B'),
1186 '5'=>array('A','B','B','A','A','B'),
1187 '6'=>array('A','B','B','B','A','A'),
1188 '7'=>array('A','B','A','B','A','B'),
1189 '8'=>array('A','B','A','B','B','A'),
1190 '9'=>array('A','B','B','A','B','A')
1191 );
1192 $upce_parities = array();
1193 $upce_parities[0] = array(
1194 '0'=>array('B','B','B','A','A','A'),
1195 '1'=>array('B','B','A','B','A','A'),
1196 '2'=>array('B','B','A','A','B','A'),
1197 '3'=>array('B','B','A','A','A','B'),
1198 '4'=>array('B','A','B','B','A','A'),
1199 '5'=>array('B','A','A','B','B','A'),
1200 '6'=>array('B','A','A','A','B','B'),
1201 '7'=>array('B','A','B','A','B','A'),
1202 '8'=>array('B','A','B','A','A','B'),
1203 '9'=>array('B','A','A','B','A','B')
1204 );
1205 $upce_parities[1] = array(
1206 '0'=>array('A','A','A','B','B','B'),
1207 '1'=>array('A','A','B','A','B','B'),
1208 '2'=>array('A','A','B','B','A','B'),
1209 '3'=>array('A','A','B','B','B','A'),
1210 '4'=>array('A','B','A','A','B','B'),
1211 '5'=>array('A','B','B','A','A','B'),
1212 '6'=>array('A','B','B','B','A','A'),
1213 '7'=>array('A','B','A','B','A','B'),
1214 '8'=>array('A','B','A','B','B','A'),
1215 '9'=>array('A','B','B','A','B','A')
1216 );
1217 $k = 0;
1218 $seq = '101'; // left guard bar
1219 if ($upce) {
1220 $bararray = array('code' => $upce_code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
1221 $p = $upce_parities[$code{1}][$r];
1222 for ($i = 0; $i < 6; ++$i) {
1223 $seq .= $codes[$p[$i]][$upce_code[$i]];
1224 }
1225 $seq .= '010101'; // right guard bar
1226 } else {
1227 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
1228 $half_len = ceil($len / 2);
1229 if ($len == 8) {
1230 for ($i = 0; $i < $half_len; ++$i) {
1231 $seq .= $codes['A'][$code[$i]];
1232 }
1233 } else {
1234 $p = $parities[$code{0}];
1235 for ($i = 1; $i < $half_len; ++$i) {
1236 $seq .= $codes[$p[$i-1]][$code[$i]];
1237 }
1238 }
1239 $seq .= '01010'; // center guard bar
1240 for ($i = $half_len; $i < $len; ++$i) {
1241 $seq .= $codes['C'][$code[$i]];
1242 }
1243 $seq .= '101'; // right guard bar
1244 }
1245 $clen = strlen($seq);
1246 $w = 0;
1247 for ($i = 0; $i < $clen; ++$i) {
1248 $w += 1;
1249 if (($i == ($clen - 1)) OR (($i < ($clen - 1)) AND ($seq[$i] != $seq[($i+1)]))) {
1250 if ($seq[$i] == '1') {
1251 $t = true; // bar
1252 } else {
1253 $t = false; // space
1254 }
1255 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
1256 $bararray['maxw'] += $w;
1257 ++$k;
1258 $w = 0;
1259 }
1260 }
1261 $bararray['checkdigit'] = $checkdigit;
1262 return $bararray;
1263 }
1264
1265 /**
1266 * UPC-Based Extentions
1267 * 2-Digit Ext.: Used to indicate magazines and newspaper issue numbers
1268 * 5-Digit Ext.: Used to mark suggested retail price of books
1269 */
1270 protected function barcode_eanext($code, $len=5) {
1271 //Padding
1272 $code = str_pad($code, $len, '0', STR_PAD_LEFT);
1273 // calculate check digit
1274 if ($len == 2) {
1275 $r = $code % 4;
1276 } elseif ($len == 5) {
1277 $r = (3 * ($code{0} + $code{2} + $code{4})) + (9 * ($code{1} + $code{3}));
1278 $r %= 10;
1279 } else {
1280 return false;
1281 }
1282 //Convert digits to bars
1283 $codes = array(
1284 'A'=>array( // left odd parity
1285 '0'=>'0001101',
1286 '1'=>'0011001',
1287 '2'=>'0010011',
1288 '3'=>'0111101',
1289 '4'=>'0100011',
1290 '5'=>'0110001',
1291 '6'=>'0101111',
1292 '7'=>'0111011',
1293 '8'=>'0110111',
1294 '9'=>'0001011'),
1295 'B'=>array( // left even parity
1296 '0'=>'0100111',
1297 '1'=>'0110011',
1298 '2'=>'0011011',
1299 '3'=>'0100001',
1300 '4'=>'0011101',
1301 '5'=>'0111001',
1302 '6'=>'0000101',
1303 '7'=>'0010001',
1304 '8'=>'0001001',
1305 '9'=>'0010111')
1306 );
1307 $parities = array();
1308 $parities[2] = array(
1309 '0'=>array('A','A'),
1310 '1'=>array('A','B'),
1311 '2'=>array('B','A'),
1312 '3'=>array('B','B')
1313 );
1314 $parities[5] = array(
1315 '0'=>array('B','B','A','A','A'),
1316 '1'=>array('B','A','B','A','A'),
1317 '2'=>array('B','A','A','B','A'),
1318 '3'=>array('B','A','A','A','B'),
1319 '4'=>array('A','B','B','A','A'),
1320 '5'=>array('A','A','B','B','A'),
1321 '6'=>array('A','A','A','B','B'),
1322 '7'=>array('A','B','A','B','A'),
1323 '8'=>array('A','B','A','A','B'),
1324 '9'=>array('A','A','B','A','B')
1325 );
1326 $p = $parities[$len][$r];
1327 $seq = '1011'; // left guard bar
1328 $seq .= $codes[$p[0]][$code{0}];
1329 for ($i = 1; $i < $len; ++$i) {
1330 $seq .= '01'; // separator
1331 $seq .= $codes[$p[$i]][$code[$i]];
1332 }
1333 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
1334 return $this->binseq_to_array($seq, $bararray);
1335 }
1336
1337 /**
1338 * POSTNET and PLANET barcodes.
1339 * Used by U.S. Postal Service for automated mail sorting
1340 */
1341 protected function barcode_postnet($code, $planet=false) {
1342 // bar lenght
1343 if ($planet) {
1344 $barlen = Array(
1345 0 => Array(1,1,2,2,2),
1346 1 => Array(2,2,2,1,1),
1347 2 => Array(2,2,1,2,1),
1348 3 => Array(2,2,1,1,2),
1349 4 => Array(2,1,2,2,1),
1350 5 => Array(2,1,2,1,2),
1351 6 => Array(2,1,1,2,2),
1352 7 => Array(1,2,2,2,1),
1353 8 => Array(1,2,2,1,2),
1354 9 => Array(1,2,1,2,2)
1355 );
1356 } else {
1357 $barlen = Array(
1358 0 => Array(2,2,1,1,1),
1359 1 => Array(1,1,1,2,2),
1360 2 => Array(1,1,2,1,2),
1361 3 => Array(1,1,2,2,1),
1362 4 => Array(1,2,1,1,2),
1363 5 => Array(1,2,1,2,1),
1364 6 => Array(1,2,2,1,1),
1365 7 => Array(2,1,1,1,2),
1366 8 => Array(2,1,1,2,1),
1367 9 => Array(2,1,2,1,1)
1368 );
1369 }
1370 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 5, 'bcode' => array());
1371 $k = 0;
1372 $code = str_replace('-', '', $code);
1373 $code = str_replace(' ', '', $code);
1374 $len = strlen($code);
1375 // calculate checksum
1376 $sum = 0;
1377 for ($i = 0; $i < $len; ++$i) {
1378 $sum += intval($code[$i]);
1379 }
1380 $chkd = ($sum % 10);
1381 if($chkd > 0) {
1382 $chkd = (10 - $chkd);
1383 }
1384 $code .= $chkd;
1385 $checkdigit = $chkd;
1386 $len = strlen($code);
1387 // start bar
1388 $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 5, 'p' => 0);
1389 $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 5, 'p' => 0);
1390 $bararray['maxw'] += (1 + $this->gapwidth );
1391 for ($i = 0; $i < $len; ++$i) {
1392 for ($j = 0; $j < 5; ++$j) {
1393 $bh = $barlen[$code[$i]][$j];
1394 if ($bh == 2) {
1395 $h = 5;
1396 $p = 0;
1397 }
1398 else {
1399 $h = 2;
1400 $p = 3;
1401 }
1402 $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p);
1403 $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 2, 'p' => 0);
1404 $bararray['maxw'] += (1 + $this->gapwidth );
1405 }
1406 }
1407 // end bar
1408 $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 5, 'p' => 0);
1409 $bararray['maxw'] += 1;
1410 $bararray['checkdigit'] = $checkdigit;
1411 return $bararray;
1412 }
1413
1414 /**
1415 * RM4SCC - CBC - KIX
1416 * RM4SCC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) - KIX (Klant index - Customer index)
1417 * RM4SCC is the name of the barcode symbology used by the Royal Mail for its Cleanmail service.
1418 */
1419 protected function barcode_rm4scc($code, $kix=false) {
1420 $notkix = !$kix;
1421 // bar mode
1422 // 1 = pos 1, length 2
1423 // 2 = pos 1, length 3
1424 // 3 = pos 2, length 1
1425 // 4 = pos 2, length 2
1426 $barmode = array(
1427 '0' => array(3,3,2,2),
1428 '1' => array(3,4,1,2),
1429 '2' => array(3,4,2,1),
1430 '3' => array(4,3,1,2),
1431 '4' => array(4,3,2,1),
1432 '5' => array(4,4,1,1),
1433 '6' => array(3,1,4,2),
1434 '7' => array(3,2,3,2),
1435 '8' => array(3,2,4,1),
1436 '9' => array(4,1,3,2),
1437 'A' => array(4,1,4,1),
1438 'B' => array(4,2,3,1),
1439 'C' => array(3,1,2,4),
1440 'D' => array(3,2,1,4),
1441 'E' => array(3,2,2,3),
1442 'F' => array(4,1,1,4),
1443 'G' => array(4,1,2,3),
1444 'H' => array(4,2,1,3),
1445 'I' => array(1,3,4,2),
1446 'J' => array(1,4,3,2),
1447 'K' => array(1,4,4,1),
1448 'L' => array(2,3,3,2),
1449 'M' => array(2,3,4,1),
1450 'N' => array(2,4,3,1),
1451 'O' => array(1,3,2,4),
1452 'P' => array(1,4,1,4),
1453 'Q' => array(1,4,2,3),
1454 'R' => array(2,3,1,4),
1455 'S' => array(2,3,2,3),
1456 'T' => array(2,4,1,3),
1457 'U' => array(1,1,4,4),
1458 'V' => array(1,2,3,4),
1459 'W' => array(1,2,4,3),
1460 'X' => array(2,1,3,4),
1461 'Y' => array(2,1,4,3),
1462 'Z' => array(2,2,3,3)
1463 );
1464 $code = strtoupper($code);
1465 $len = strlen($code);
1466 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => $this->daft['F'], 'bcode' => array());
1467 if ($notkix) {
1468 // table for checksum calculation (row,col)
1469 $checktable = array(
1470 '0' => array(1,1),
1471 '1' => array(1,2),
1472 '2' => array(1,3),
1473 '3' => array(1,4),
1474 '4' => array(1,5),
1475 '5' => array(1,0),
1476 '6' => array(2,1),
1477 '7' => array(2,2),
1478 '8' => array(2,3),
1479 '9' => array(2,4),
1480 'A' => array(2,5),
1481 'B' => array(2,0),
1482 'C' => array(3,1),
1483 'D' => array(3,2),
1484 'E' => array(3,3),
1485 'F' => array(3,4),
1486 'G' => array(3,5),
1487 'H' => array(3,0),
1488 'I' => array(4,1),
1489 'J' => array(4,2),
1490 'K' => array(4,3),
1491 'L' => array(4,4),
1492 'M' => array(4,5),
1493 'N' => array(4,0),
1494 'O' => array(5,1),
1495 'P' => array(5,2),
1496 'Q' => array(5,3),
1497 'R' => array(5,4),
1498 'S' => array(5,5),
1499 'T' => array(5,0),
1500 'U' => array(0,1),
1501 'V' => array(0,2),
1502 'W' => array(0,3),
1503 'X' => array(0,4),
1504 'Y' => array(0,5),
1505 'Z' => array(0,0)
1506 );
1507 $row = 0;
1508 $col = 0;
1509 for ($i = 0; $i < $len; ++$i) {
1510 $row += $checktable[$code[$i]][0];
1511 $col += $checktable[$code[$i]][1];
1512 }
1513 $row %= 6;
1514 $col %= 6;
1515 $chk = array_keys($checktable, array($row,$col));
1516 $code .= $chk[0];
1517 $bararray['checkdigit'] = $chk[0];
1518 ++$len;
1519 }
1520 $k = 0;
1521 if ($notkix) {
1522 // start bar
1523 $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $this->daft['A'] , 'p' => 0);
1524 $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => $this->daft['A'] , 'p' => 0);
1525 $bararray['maxw'] += (1 + $this->gapwidth) ;
1526 }
1527 for ($i = 0; $i < $len; ++$i) {
1528 for ($j = 0; $j < 4; ++$j) {
1529 switch ($barmode[$code[$i]][$j]) {
1530 case 1: {
1531 // ascender (A)
1532 $p = 0;
1533 $h = $this->daft['A'];
1534 break;
1535 }
1536 case 2: {
1537 // full bar (F)
1538 $p = 0;
1539 $h = $this->daft['F'];
1540 break;
1541 }
1542 case 3: {
1543 // tracker (T)
1544 $p = ($this->daft['F'] - $this->daft['T'])/2;
1545 $h = $this->daft['T'];
1546 break;
1547 }
1548 case 4: {
1549 // descender (D)
1550 $p = $this->daft['F'] - $this->daft['D'];
1551 $h = $this->daft['D'];
1552 break;
1553 }
1554 }
1555
1556 $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p);
1557 $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth, 'h' => 2, 'p' => 0);
1558 $bararray['maxw'] += (1 + $this->gapwidth) ;
1559 }
1560 }
1561 if ($notkix) {
1562 // stop bar
1563 $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $this->daft['F'], 'p' => 0);
1564 $bararray['maxw'] += 1;
1565 }
1566 return $bararray;
1567 }
1568
1569 /**
1570 * CODABAR barcodes.
1571 * Older code often used in library systems, sometimes in blood banks
1572 */
1573 protected function barcode_codabar($code) {
1574 $chr = array(
1575 '0' => '11111221',
1576 '1' => '11112211',
1577 '2' => '11121121',
1578 '3' => '22111111',
1579 '4' => '11211211',
1580 '5' => '21111211',
1581 '6' => '12111121',
1582 '7' => '12112111',
1583 '8' => '12211111',
1584 '9' => '21121111',
1585 '-' => '11122111',
1586 '$' => '11221111',
1587 ':' => '21112121',
1588 '/' => '21211121',
1589 '.' => '21212111',
1590 '+' => '11222221',
1591 'A' => '11221211',
1592 'B' => '12121121',
1593 'C' => '11121221',
1594 'D' => '11122211'
1595 );
1596 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
1597 $k = 0;
1598 $w = 0;
1599 $seq = '';
1600 $code = strtoupper($code);
1601 $len = strlen($code);
1602 for ($i = 0; $i < $len; ++$i) {
1603 if (!isset($chr[$code[$i]])) {
1604 return false;
1605 }
1606 $seq = $chr[$code[$i]];
1607 for ($j = 0; $j < 8; ++$j) {
1608 if (($j % 2) == 0) {
1609 $t = true; // bar
1610 } else {
1611 $t = false; // space
1612 }
1613 $x = $seq[$j];
1614 if ($x == 2) { $w = $this->print_ratio; }
1615 else { $w = 1; }
1616 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
1617 $bararray['maxw'] += $w;
1618 ++$k;
1619 }
1620 }
1621 return $bararray;
1622 }
1623
1624 /**
1625 * CODE11 barcodes.
1626 * Used primarily for labeling telecommunications equipment
1627 */
1628 protected function barcode_code11($code) {
1629 $chr = array(
1630 '0' => '111121',
1631 '1' => '211121',
1632 '2' => '121121',
1633 '3' => '221111',
1634 '4' => '112121',
1635 '5' => '212111',
1636 '6' => '122111',
1637 '7' => '111221',
1638 '8' => '211211',
1639 '9' => '211111',
1640 '-' => '112111',
1641 'S' => '112211'
1642 );
1643
1644 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
1645 $k = 0;
1646 $w = 0;
1647 $seq = '';
1648 $len = strlen($code);
1649 // calculate check digit C
1650 $p = 1;
1651 $check = 0;
1652 for ($i = ($len - 1); $i >= 0; --$i) {
1653 $digit = $code[$i];
1654 if ($digit == '-') {
1655 $dval = 10;
1656 } else {
1657 $dval = intval($digit);
1658 }
1659 $check += ($dval * $p);
1660 ++$p;
1661 if ($p > 10) {
1662 $p = 1;
1663 }
1664 }
1665 $check %= 11;
1666 if ($check == 10) {
1667 $check = '-';
1668 }
1669 $code .= $check;
1670 $checkdigit = $check;
1671 if ($len > 10) {
1672 // calculate check digit K
1673 $p = 1;
1674 $check = 0;
1675 for ($i = $len; $i >= 0; --$i) {
1676 $digit = $code[$i];
1677 if ($digit == '-') {
1678 $dval = 10;
1679 } else {
1680 $dval = intval($digit);
1681 }
1682 $check += ($dval * $p);
1683 ++$p;
1684 if ($p > 9) {
1685 $p = 1;
1686 }
1687 }
1688 $check %= 11;
1689 $code .= $check;
1690 $checkdigit .= $check;
1691 ++$len;
1692 }
1693 $code = 'S'.$code.'S';
1694 $len += 3;
1695 for ($i = 0; $i < $len; ++$i) {
1696 if (!isset($chr[$code[$i]])) {
1697 return false;
1698 }
1699 $seq = $chr[$code[$i]];
1700 for ($j = 0; $j < 6; ++$j) {
1701 if (($j % 2) == 0) {
1702 $t = true; // bar
1703 } else {
1704 $t = false; // space
1705 }
1706 $x = $seq[$j];
1707 if ($x == 2) { $w = $this->print_ratio; }
1708 else { $w = 1; }
1709 $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
1710 $bararray['maxw'] += $w;
1711 ++$k;
1712 }
1713 }
1714 $bararray['checkdigit'] = $checkdigit;
1715 return $bararray;
1716 }
1717
1718
1719 /**
1720 * IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200
1721 * (requires PHP bcmath extension)
1722 * Intelligent Mail barcode is a 65-bar code for use on mail in the United States.
1723 * 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>
1724 */
1725 protected function barcode_imb($code) {
1726 $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);
1727 $dsc_chr = array(7,1,9,5,8,0,2,4,6,3,5,8,9,7,3,0,6,1,7,4,6,8,9,2,5,1,7,5,4,3,8,7,6,0,2,5,4,9,3,0,1,6,8,2,0,4,5,9,6,7,5,2,6,3,8,5,1,9,8,7,4,0,2,6,3);
1728 $asc_pos = array(3,0,8,11,1,12,8,11,10,6,4,12,2,7,9,6,7,9,2,8,4,0,12,7,10,9,0,7,10,5,7,9,6,8,2,12,1,4,2,0,1,5,4,6,12,1,0,9,4,7,5,10,2,6,9,11,2,12,6,7,5,11,0,3,2);
1729 $dsc_pos = array(2,10,12,5,9,1,5,4,3,9,11,5,10,1,6,3,4,1,10,0,2,11,8,6,1,12,3,8,6,4,4,11,0,6,1,9,11,5,3,7,3,10,7,11,8,2,10,3,5,8,0,3,12,11,8,4,5,1,3,0,7,12,9,8,10);
1730 $code_arr = explode('-', $code);
1731 $tracking_number = $code_arr[0];
1732 if (isset($code_arr[1])) {
1733 $routing_code = $code_arr[1];
1734 } else {
1735 $routing_code = '';
1736 }
1737 // Conversion of Routing Code
1738 switch (strlen($routing_code)) {
1739 case 0: {
1740 $binary_code = 0;
1741 break;
1742 }
1743 case 5: {
1744 $binary_code = bcadd($routing_code, '1');
1745 break;
1746 }
1747 case 9: {
1748 $binary_code = bcadd($routing_code, '100001');
1749 break;
1750 }
1751 case 11: {
1752 $binary_code = bcadd($routing_code, '1000100001');
1753 break;
1754 }
1755 default: {
1756 return false;
1757 break;
1758 }
1759 }
1760 $binary_code = bcmul($binary_code, 10);
1761 $binary_code = bcadd($binary_code, $tracking_number{0});
1762 $binary_code = bcmul($binary_code, 5);
1763 $binary_code = bcadd($binary_code, $tracking_number{1});
1764 $binary_code .= substr($tracking_number, 2, 18);
1765 // convert to hexadecimal
1766 $binary_code = $this->dec_to_hex($binary_code);
1767 // pad to get 13 bytes
1768 $binary_code = str_pad($binary_code, 26, '0', STR_PAD_LEFT);
1769 // convert string to array of bytes
1770 $binary_code_arr = chunk_split($binary_code, 2, "\r");
1771 $binary_code_arr = substr($binary_code_arr, 0, -1);
1772 $binary_code_arr = explode("\r", $binary_code_arr);
1773 // calculate frame check sequence
1774 $fcs = $this->imb_crc11fcs($binary_code_arr);
1775 // exclude first 2 bits from first byte
1776 $first_byte = sprintf('%2s', dechex((hexdec($binary_code_arr[0]) << 2) >> 2));
1777 $binary_code_102bit = $first_byte.substr($binary_code, 2);
1778 // convert binary data to codewords
1779 $codewords = array();
1780 $data = $this->hex_to_dec($binary_code_102bit);
1781 $codewords[0] = bcmod($data, 636) * 2;
1782 $data = bcdiv($data, 636);
1783 for ($i = 1; $i < 9; ++$i) {
1784 $codewords[$i] = bcmod($data, 1365);
1785 $data = bcdiv($data, 1365);
1786 }
1787 $codewords[9] = $data;
1788 if (($fcs >> 10) == 1) {
1789 $codewords[9] += 659;
1790 }
1791 // generate lookup tables
1792 $table2of13 = $this->imb_tables(2, 78);
1793 $table5of13 = $this->imb_tables(5, 1287);
1794 // convert codewords to characters
1795 $characters = array();
1796 $bitmask = 512;
1797 foreach($codewords as $k => $val) {
1798 if ($val <= 1286) {
1799 $chrcode = $table5of13[$val];
1800 } else {
1801 $chrcode = $table2of13[($val - 1287)];
1802 }
1803 if (($fcs & $bitmask) > 0) {
1804 // bitwise invert
1805 $chrcode = ((~$chrcode) & 8191);
1806 }
1807 $characters[] = $chrcode;
1808 $bitmask /= 2;
1809 }
1810 $characters = array_reverse($characters);
1811 // build bars
1812 $k = 0;
1813 $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => $this->daft['F'], 'bcode' => array());
1814 for ($i = 0; $i < 65; ++$i) {
1815 $asc = (($characters[$asc_chr[$i]] & pow(2, $asc_pos[$i])) > 0);
1816 $dsc = (($characters[$dsc_chr[$i]] & pow(2, $dsc_pos[$i])) > 0);
1817 if ($asc AND $dsc) {
1818 // full bar (F)
1819 $p = 0;
1820 $h = $this->daft['F'];
1821 } elseif ($asc) {
1822 // ascender (A)
1823 $p = 0;
1824 $h = $this->daft['A'];
1825 } elseif ($dsc) {
1826 // descender (D)
1827 $p = $this->daft['F'] - $this->daft['D'];
1828 $h = $this->daft['D'];
1829 } else {
1830 // tracker (T)
1831 $p = ($this->daft['F'] - $this->daft['T'])/2;
1832 $h = $this->daft['T'];
1833 }
1834 $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p);
1835 // Gap
1836 $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 1, 'p' => 0);
1837 $bararray['maxw'] += (1 + $this->gapwidth );
1838 }
1839 unset($bararray['bcode'][($k - 1)]);
1840 $bararray['maxw'] -= $this->gapwidth ;
1841 return $bararray;
1842 }
1843
1844 /**
1845 * Convert large integer number to hexadecimal representation.
1846 * (requires PHP bcmath extension)
1847 */
1848 public function dec_to_hex($number) {
1849 $i = 0;
1850 $hex = array();
1851 if($number == 0) {
1852 return '00';
1853 }
1854 while($number > 0) {
1855 if($number == 0) {
1856 array_push($hex, '0');
1857 } else {
1858 array_push($hex, strtoupper(dechex(bcmod($number, '16'))));
1859 $number = bcdiv($number, '16', 0);
1860 }
1861 }
1862 $hex = array_reverse($hex);
1863 return implode($hex);
1864 }
1865
1866 /**
1867 * Convert large hexadecimal number to decimal representation (string).
1868 * (requires PHP bcmath extension)
1869 */
1870 public function hex_to_dec($hex) {
1871 $dec = 0;
1872 $bitval = 1;
1873 $len = strlen($hex);
1874 for($pos = ($len - 1); $pos >= 0; --$pos) {
1875 $dec = bcadd($dec, bcmul(hexdec($hex[$pos]), $bitval));
1876 $bitval = bcmul($bitval, 16);
1877 }
1878 return $dec;
1879 }
1880
1881 /**
1882 * Intelligent Mail Barcode calculation of Frame Check Sequence
1883 */
1884 protected function imb_crc11fcs($code_arr) {
1885 $genpoly = 0x0F35; // generator polynomial
1886 $fcs = 0x07FF; // Frame Check Sequence
1887 // do most significant byte skipping the 2 most significant bits
1888 $data = hexdec($code_arr[0]) << 5;
1889 for ($bit = 2; $bit < 8; ++$bit) {
1890 if (($fcs ^ $data) & 0x400) {
1891 $fcs = ($fcs << 1) ^ $genpoly;
1892 } else {
1893 $fcs = ($fcs << 1);
1894 }
1895 $fcs &= 0x7FF;
1896 $data <<= 1;
1897 }
1898 // do rest of bytes
1899 for ($byte = 1; $byte < 13; ++$byte) {
1900 $data = hexdec($code_arr[$byte]) << 3;
1901 for ($bit = 0; $bit < 8; ++$bit) {
1902 if (($fcs ^ $data) & 0x400) {
1903 $fcs = ($fcs << 1) ^ $genpoly;
1904 } else {
1905 $fcs = ($fcs << 1);
1906 }
1907 $fcs &= 0x7FF;
1908 $data <<= 1;
1909 }
1910 }
1911 return $fcs;
1912 }
1913
1914 /**
1915 * Reverse unsigned short value
1916 */
1917 protected function imb_reverse_us($num) {
1918 $rev = 0;
1919 for ($i = 0; $i < 16; ++$i) {
1920 $rev <<= 1;
1921 $rev |= ($num & 1);
1922 $num >>= 1;
1923 }
1924 return $rev;
1925 }
1926
1927 /**
1928 * generate Nof13 tables used for Intelligent Mail Barcode
1929 */
1930 protected function imb_tables($n, $size) {
1931 $table = array();
1932 $lli = 0; // LUT lower index
1933 $lui = $size - 1; // LUT upper index
1934 for ($count = 0; $count < 8192; ++$count) {
1935 $bit_count = 0;
1936 for ($bit_index = 0; $bit_index < 13; ++$bit_index) {
1937 $bit_count += intval(($count & (1 << $bit_index)) != 0);
1938 }
1939 // if we don't have the right number of bits on, go on to the next value
1940 if ($bit_count == $n) {
1941 $reverse = ($this->imb_reverse_us($count) >> 3);
1942 // if the reverse is less than count, we have already visited this pair before
1943 if ($reverse >= $count) {
1944 // If count is symmetric, place it at the first free slot from the end of the list.
1945 // Otherwise, place it at the first free slot from the beginning of the list AND place $reverse ath the next free slot from the beginning of the list
1946 if ($reverse == $count) {
1947 $table[$lui] = $count;
1948 --$lui;
1949 } else {
1950 $table[$lli] = $count;
1951 ++$lli;
1952 $table[$lli] = $reverse;
1953 ++$lli;
1954 }
1955 }
1956 }
1957 }
1958 return $table;
1959 }
1960
1961} // end of class
1962
1963//============================================================+
1964// END OF FILE
1965//============================================================+
1966?> \ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/bmp.php b/inc/3rdparty/libraries/mpdf/classes/bmp.php
deleted file mode 100644
index 896ced89..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/bmp.php
+++ /dev/null
@@ -1,248 +0,0 @@
1<?php
2
3class bmp {
4
5var $mpdf = null;
6
7function bmp(&$mpdf) {
8 $this->mpdf = $mpdf;
9}
10
11
12function _getBMPimage($data, $file) {
13 $info = array();
14 // Adapted from script by Valentin Schmidt
15 // http://staff.dasdeck.de/valentin/fpdf/fpdf_bmp/
16 $bfOffBits=$this->_fourbytes2int_le(substr($data,10,4));
17 $width=$this->_fourbytes2int_le(substr($data,18,4));
18 $height=$this->_fourbytes2int_le(substr($data,22,4));
19 $flip = ($height<0);
20 if ($flip) $height =-$height;
21 $biBitCount=$this->_twobytes2int_le(substr($data,28,2));
22 $biCompression=$this->_fourbytes2int_le(substr($data,30,4));
23 $info = array('w'=>$width, 'h'=>$height);
24 if ($biBitCount<16){
25 $info['cs'] = 'Indexed';
26 $info['bpc'] = $biBitCount;
27 $palStr = substr($data,54,($bfOffBits-54));
28 $pal = '';
29 $cnt = strlen($palStr)/4;
30 for ($i=0;$i<$cnt;$i++){
31 $n = 4*$i;
32 $pal .= $palStr[$n+2].$palStr[$n+1].$palStr[$n];
33 }
34 $info['pal'] = $pal;
35 }
36 else{
37 $info['cs'] = 'DeviceRGB';
38 $info['bpc'] = 8;
39 }
40
41 if ($this->mpdf->restrictColorSpace==1 || $this->mpdf->PDFX || $this->mpdf->restrictColorSpace==3) {
42 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'.)"; }
43 return array('error' => "BMP Image cannot be converted to suitable colour space - ".$file." - (Image replaced by 'no-image'.)");
44 }
45
46 $biXPelsPerMeter=$this->_fourbytes2int_le(substr($data,38,4)); // horizontal pixels per meter, usually set to zero
47 //$biYPelsPerMeter=$this->_fourbytes2int_le(substr($data,42,4)); // vertical pixels per meter, usually set to zero
48 $biXPelsPerMeter=round($biXPelsPerMeter/1000 *25.4);
49 //$biYPelsPerMeter=round($biYPelsPerMeter/1000 *25.4);
50 $info['set-dpi'] = $biXPelsPerMeter;
51
52 switch ($biCompression){
53 case 0:
54 $str = substr($data,$bfOffBits);
55 break;
56 case 1: # BI_RLE8
57 $str = $this->rle8_decode(substr($data,$bfOffBits), $width);
58 break;
59 case 2: # BI_RLE4
60 $str = $this->rle4_decode(substr($data,$bfOffBits), $width);
61 break;
62 }
63 $bmpdata = '';
64 $padCnt = (4-ceil(($width/(8/$biBitCount)))%4)%4;
65 switch ($biBitCount){
66 case 1:
67 case 4:
68 case 8:
69 $w = floor($width/(8/$biBitCount)) + ($width%(8/$biBitCount)?1:0);
70 $w_row = $w + $padCnt;
71 if ($flip){
72 for ($y=0;$y<$height;$y++){
73 $y0 = $y*$w_row;
74 for ($x=0;$x<$w;$x++)
75 $bmpdata .= $str[$y0+$x];
76 }
77 }else{
78 for ($y=$height-1;$y>=0;$y--){
79 $y0 = $y*$w_row;
80 for ($x=0;$x<$w;$x++)
81 $bmpdata .= $str[$y0+$x];
82 }
83 }
84 break;
85
86 case 16:
87 $w_row = $width*2 + $padCnt;
88 if ($flip){
89 for ($y=0;$y<$height;$y++){
90 $y0 = $y*$w_row;
91 for ($x=0;$x<$width;$x++){
92 $n = (ord( $str[$y0 + 2*$x + 1])*256 + ord( $str[$y0 + 2*$x]));
93 $b = ($n & 31)<<3; $g = ($n & 992)>>2; $r = ($n & 31744)>>7128;
94 $bmpdata .= chr($r) . chr($g) . chr($b);
95 }
96 }
97 }else{
98 for ($y=$height-1;$y>=0;$y--){
99 $y0 = $y*$w_row;
100 for ($x=0;$x<$width;$x++){
101 $n = (ord( $str[$y0 + 2*$x + 1])*256 + ord( $str[$y0 + 2*$x]));
102 $b = ($n & 31)<<3; $g = ($n & 992)>>2; $r = ($n & 31744)>>7;
103 $bmpdata .= chr($r) . chr($g) . chr($b);
104 }
105 }
106 }
107 break;
108
109 case 24:
110 case 32:
111 $byteCnt = $biBitCount/8;
112 $w_row = $width*$byteCnt + $padCnt;
113
114 if ($flip){
115 for ($y=0;$y<$height;$y++){
116 $y0 = $y*$w_row;
117 for ($x=0;$x<$width;$x++){
118 $i = $y0 + $x*$byteCnt ; # + 1
119 $bmpdata .= $str[$i+2].$str[$i+1].$str[$i];
120 }
121 }
122 }else{
123 for ($y=$height-1;$y>=0;$y--){
124 $y0 = $y*$w_row;
125 for ($x=0;$x<$width;$x++){
126 $i = $y0 + $x*$byteCnt ; # + 1
127 $bmpdata .= $str[$i+2].$str[$i+1].$str[$i];
128 }
129 }
130 }
131 break;
132
133 default:
134 return array('error' => 'Error parsing BMP image - Unsupported image biBitCount');
135 }
136 if ($this->mpdf->compress) {
137 $bmpdata=gzcompress($bmpdata);
138 $info['f']='FlateDecode';
139 }
140 $info['data']=$bmpdata;
141 $info['type']='bmp';
142 return $info;
143}
144
145function _fourbytes2int_le($s) {
146 //Read a 4-byte integer from string
147 return (ord($s[3])<<24) + (ord($s[2])<<16) + (ord($s[1])<<8) + ord($s[0]);
148}
149
150function _twobytes2int_le($s) {
151 //Read a 2-byte integer from string
152 return (ord(substr($s, 1, 1))<<8) + ord(substr($s, 0, 1));
153}
154
155
156# Decoder for RLE8 compression in windows bitmaps
157# see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_6x0u.asp
158function rle8_decode ($str, $width){
159 $lineWidth = $width + (3 - ($width-1) % 4);
160 $out = '';
161 $cnt = strlen($str);
162 for ($i=0;$i<$cnt;$i++){
163 $o = ord($str[$i]);
164 switch ($o){
165 case 0: # ESCAPE
166 $i++;
167 switch (ord($str[$i])){
168 case 0: # NEW LINE
169 $padCnt = $lineWidth - strlen($out)%$lineWidth;
170 if ($padCnt<$lineWidth) $out .= str_repeat(chr(0), $padCnt); # pad line
171 break;
172 case 1: # END OF FILE
173 $padCnt = $lineWidth - strlen($out)%$lineWidth;
174 if ($padCnt<$lineWidth) $out .= str_repeat(chr(0), $padCnt); # pad line
175 break 3;
176 case 2: # DELTA
177 $i += 2;
178 break;
179 default: # ABSOLUTE MODE
180 $num = ord($str[$i]);
181 for ($j=0;$j<$num;$j++)
182 $out .= $str[++$i];
183 if ($num % 2) $i++;
184 }
185 break;
186 default:
187 $out .= str_repeat($str[++$i], $o);
188 }
189 }
190 return $out;
191}
192
193# Decoder for RLE4 compression in windows bitmaps
194# see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_6x0u.asp
195function rle4_decode ($str, $width){
196 $w = floor($width/2) + ($width % 2);
197 $lineWidth = $w + (3 - ( ($width-1) / 2) % 4);
198 $pixels = array();
199 $cnt = strlen($str);
200 for ($i=0;$i<$cnt;$i++){
201 $o = ord($str[$i]);
202 switch ($o){
203 case 0: # ESCAPE
204 $i++;
205 switch (ord($str[$i])){
206 case 0: # NEW LINE
207 while (count($pixels)%$lineWidth!=0)
208 $pixels[]=0;
209 break;
210 case 1: # END OF FILE
211 while (count($pixels)%$lineWidth!=0)
212 $pixels[]=0;
213 break 3;
214 case 2: # DELTA
215 $i += 2;
216 break;
217 default: # ABSOLUTE MODE
218 $num = ord($str[$i]);
219 for ($j=0;$j<$num;$j++){
220 if ($j%2==0){
221 $c = ord($str[++$i]);
222 $pixels[] = ($c & 240)>>4;
223 } else
224 $pixels[] = $c & 15;
225 }
226 if ($num % 2) $i++;
227 }
228 break;
229 default:
230 $c = ord($str[++$i]);
231 for ($j=0;$j<$o;$j++)
232 $pixels[] = ($j%2==0 ? ($c & 240)>>4 : $c & 15);
233 }
234 }
235
236 $out = '';
237 if (count($pixels)%2) $pixels[]=0;
238 $cnt = count($pixels)/2;
239 for ($i=0;$i<$cnt;$i++)
240 $out .= chr(16*$pixels[2*$i] + $pixels[2*$i+1]);
241 return $out;
242}
243
244
245
246}
247
248?> \ 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
index db325034..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/cssmgr.php
+++ /dev/null
@@ -1,1572 +0,0 @@
1<?php
2
3class cssmgr {
4
5var $mpdf = null;
6
7var $tablecascadeCSS;
8var $listcascadeCSS;
9var $cascadeCSS;
10var $CSS;
11var $tbCSSlvl;
12var $listCSSlvl;
13
14
15function cssmgr(&$mpdf) {
16 $this->mpdf = $mpdf;
17 $this->tablecascadeCSS = array();
18 $this->listcascadeCSS = array();
19 $this->CSS=array();
20 $this->cascadeCSS = array();
21 $this->tbCSSlvl = 0;
22 $this->listCSSlvl = 0;
23}
24
25
26function ReadDefaultCSS($CSSstr) {
27 $CSS = array();
28 $CSSstr = preg_replace('|/\*.*?\*/|s',' ',$CSSstr);
29 $CSSstr = preg_replace('/[\s\n\r\t\f]/s',' ',$CSSstr);
30 $CSSstr = preg_replace('/(<\!\-\-|\-\->)/s',' ',$CSSstr);
31 if ($CSSstr ) {
32 preg_match_all('/(.*?)\{(.*?)\}/',$CSSstr,$styles);
33 for($i=0; $i < count($styles[1]) ; $i++) {
34 $stylestr= trim($styles[2][$i]);
35 $stylearr = explode(';',$stylestr);
36 foreach($stylearr AS $sta) {
37 if (trim($sta)) {
38 // Changed to allow style="background: url('http://www.bpm1.com/bg.jpg')"
39 list($property,$value) = explode(':',$sta,2);
40 $property = trim($property);
41 $value = preg_replace('/\s*!important/i','',$value);
42 $value = trim($value);
43 if ($property && ($value || $value==='0')) {
44 $classproperties[strtoupper($property)] = $value;
45 }
46 }
47 }
48 $classproperties = $this->fixCSS($classproperties);
49 $tagstr = strtoupper(trim($styles[1][$i]));
50 $tagarr = explode(',',$tagstr);
51 foreach($tagarr AS $tg) {
52 $tags = preg_split('/\s+/',trim($tg));
53 $level = count($tags);
54 if ($level == 1) { // e.g. p or .class or #id or p.class or p#id
55 $t = trim($tags[0]);
56 if ($t) {
57 $tag = '';
58 if (preg_match('/^('.$this->mpdf->allowedCSStags.')$/',$t)) { $tag= $t; }
59 if ($this->CSS[$tag] && $tag) { $CSS[$tag] = $this->array_merge_recursive_unique($CSS[$tag], $classproperties); }
60 else if ($tag) { $CSS[$tag] = $classproperties; }
61 }
62 }
63 }
64 $properties = array();
65 $values = array();
66 $classproperties = array();
67 }
68
69 } // end of if
70 return $CSS;
71}
72
73
74
75function ReadCSS($html) {
76 preg_match_all('/<style[^>]*media=["\']([^"\'>]*)["\'].*?<\/style>/is',$html,$m);
77 for($i=0; $i<count($m[0]); $i++) {
78 if ($this->mpdf->CSSselectMedia && !preg_match('/('.trim($this->mpdf->CSSselectMedia).'|all)/i',$m[1][$i])) {
79 $html = preg_replace('/'.preg_quote($m[0][$i],'/').'/','',$html);
80 }
81 }
82 preg_match_all('/<link[^>]*media=["\']([^"\'>]*)["\'].*?>/is',$html,$m);
83 for($i=0; $i<count($m[0]); $i++) {
84 if ($this->mpdf->CSSselectMedia && !preg_match('/('.trim($this->mpdf->CSSselectMedia).'|all)/i',$m[1][$i])) {
85 $html = preg_replace('/'.preg_quote($m[0][$i],'/').'/','',$html);
86 }
87 }
88
89 // mPDF 5.5.02
90 // Remove Comment tags <!-- ... --> inside CSS as <style> in HTML document
91 // Remove Comment tags /* ... */ inside CSS as <style> in HTML document
92 // But first, we replace upper and mixed case closing style tag with lower
93 // case so we can use str_replace later.
94 preg_replace('/<\/style>/i', '</style>', $html);
95 preg_match_all('/<style.*?>(.*?)<\/style>/si',$html,$m);
96 if (count($m[1])) {
97 for($i=0;$i<count($m[1]);$i++) {
98 // Remove comment tags
99 $sub = preg_replace('/(<\!\-\-|\-\->)/s',' ',$m[1][$i]);
100 $sub = '>'.preg_replace('|/\*.*?\*/|s',' ',$sub).'</style>';
101 $html = str_replace('>'.$m[1][$i].'</style>', $sub, $html);
102 }
103 }
104
105
106 $html = preg_replace('/<!--mpdf/i','',$html);
107 $html = preg_replace('/mpdf-->/i','',$html);
108 $html = preg_replace('/<\!\-\-.*?\-\->/s',' ',$html);
109
110 $match = 0; // no match for instance
111 $regexp = ''; // This helps debugging: showing what is the REAL string being processed
112 $CSSext = array();
113
114 //CSS inside external files
115 $regexp = '/<link[^>]*rel=["\']stylesheet["\'][^>]*href=["\']([^>"\']*)["\'].*?>/si';
116 $x = preg_match_all($regexp,$html,$cxt);
117 if ($x) {
118 $match += $x;
119 $CSSext = $cxt[1];
120 }
121
122 $regexp = '/<link[^>]*href=["\']([^>"\']*)["\'][^>]*?rel=["\']stylesheet["\'].*?>/si';
123 $x = preg_match_all($regexp,$html,$cxt);
124 if ($x) {
125 $match += $x;
126 $CSSext = array_merge($CSSext,$cxt[1]);
127 }
128
129 // look for @import stylesheets
130 //$regexp = '/@import url\([\'\"]{0,1}([^\)]*?\.css)[\'\"]{0,1}\)/si';
131 $regexp = '/@import url\([\'\"]{0,1}([^\)]*?\.css(\?\S+)?)[\'\"]{0,1}\)/si';
132 $x = preg_match_all($regexp,$html,$cxt);
133 if ($x) {
134 $match += $x;
135 $CSSext = array_merge($CSSext,$cxt[1]);
136 }
137
138 // look for @import without the url()
139 //$regexp = '/@import [\'\"]{0,1}([^;]*?\.css)[\'\"]{0,1}/si';
140 $regexp = '/@import [\'\"]{0,1}([^;]*?\.css(\?\S+)?)[\'\"]{0,1}/si';
141 $x = preg_match_all($regexp,$html,$cxt);
142 if ($x) {
143 $match += $x;
144 $CSSext = array_merge($CSSext,$cxt[1]);
145 }
146
147 $ind = 0;
148 $CSSstr = '';
149
150 if (!is_array($this->cascadeCSS)) $this->cascadeCSS = array();
151
152 while($match){
153 $path = $CSSext[$ind];
154 $this->mpdf->GetFullPath($path);
155 $CSSextblock = $this->mpdf->_get_file($path);
156 if ($CSSextblock) {
157 // look for embedded @import stylesheets in other stylesheets
158 // and fix url paths (including background-images) relative to stylesheet
159 //$regexpem = '/@import url\([\'\"]{0,1}(.*?\.css)[\'\"]{0,1}\)/si';
160 $regexpem = '/@import url\([\'\"]{0,1}(.*?\.css(\?\S+)?)[\'\"]{0,1}\)/si';
161 $xem = preg_match_all($regexpem,$CSSextblock,$cxtem);
162 $cssBasePath = preg_replace('/\/[^\/]*$/','',$path) . '/';
163 if ($xem) {
164 foreach($cxtem[1] AS $cxtembedded) {
165 // path is relative to original stlyesheet!!
166 $this->mpdf->GetFullPath($cxtembedded, $cssBasePath );
167 $match++;
168 $CSSext[] = $cxtembedded;
169 }
170 }
171 $regexpem = '/(background[^;]*url\s*\(\s*[\'\"]{0,1})([^\)\'\"]*)([\'\"]{0,1}\s*\))/si';
172 $xem = preg_match_all($regexpem,$CSSextblock,$cxtem);
173 if ($xem) {
174 for ($i=0;$i<count($cxtem[0]);$i++) {
175 // path is relative to original stlyesheet!!
176 $embedded = $cxtem[2][$i];
177 if (!preg_match('/^data:image/i', $embedded)) { // mPDF 5.5.13
178 $this->mpdf->GetFullPath($embedded, $cssBasePath );
179 $CSSextblock = preg_replace('/'.preg_quote($cxtem[0][$i],'/').'/', ($cxtem[1][$i].$embedded.$cxtem[3][$i]), $CSSextblock);
180 }
181 }
182 }
183 $CSSstr .= ' '.$CSSextblock;
184 }
185 $match--;
186 $ind++;
187 } //end of match
188
189 $match = 0; // reset value, if needed
190 // CSS as <style> in HTML document
191 $regexp = '/<style.*?>(.*?)<\/style>/si';
192 $match = preg_match_all($regexp,$html,$CSSblock);
193 if ($match) {
194 $tmpCSSstr = implode(' ',$CSSblock[1]);
195 $regexpem = '/(background[^;]*url\s*\(\s*[\'\"]{0,1})([^\)\'\"]*)([\'\"]{0,1}\s*\))/si';
196 $xem = preg_match_all($regexpem,$tmpCSSstr ,$cxtem);
197 if ($xem) {
198 for ($i=0;$i<count($cxtem[0]);$i++) {
199 $embedded = $cxtem[2][$i];
200 if (!preg_match('/^data:image/i', $embedded)) { // mPDF 5.5.13
201 $this->mpdf->GetFullPath($embedded);
202 $tmpCSSstr = preg_replace('/'.preg_quote($cxtem[0][$i],'/').'/', ($cxtem[1][$i].$embedded.$cxtem[3][$i]), $tmpCSSstr );
203 }
204 }
205 }
206 $CSSstr .= ' '.$tmpCSSstr;
207 }
208 // Remove comments
209 $CSSstr = preg_replace('|/\*.*?\*/|s',' ',$CSSstr);
210 $CSSstr = preg_replace('/[\s\n\r\t\f]/s',' ',$CSSstr);
211
212 if (preg_match('/@media/',$CSSstr)) {
213 preg_match_all('/@media(.*?)\{(([^\{\}]*\{[^\{\}]*\})+)\s*\}/is',$CSSstr,$m);
214 for($i=0; $i<count($m[0]); $i++) {
215 if ($this->mpdf->CSSselectMedia && !preg_match('/('.trim($this->mpdf->CSSselectMedia).'|all)/i',$m[1][$i])) {
216 $CSSstr = preg_replace('/'.preg_quote($m[0][$i],'/').'/','',$CSSstr);
217 }
218 else {
219 $CSSstr = preg_replace('/'.preg_quote($m[0][$i],'/').'/',' '.$m[2][$i].' ',$CSSstr);
220 }
221 }
222 }
223
224 // Replace any background: url(data:image... with temporary image file reference
225 preg_match_all("/(url\(data:image\/(jpeg|gif|png);base64,(.*?)\))/si", $CSSstr, $idata); // mPDF 5.7.2
226 if (count($idata[0])) {
227 for($i=0;$i<count($idata[0]);$i++) {
228 $file = _MPDF_TEMP_PATH.'_tempCSSidata'.RAND(1,10000).'_'.$i.'.'.$idata[2][$i];
229 //Save to local file
230 file_put_contents($file, base64_decode($idata[3][$i]));
231 // $this->mpdf->GetFullPath($file); // ? is this needed - NO mPDF 5.6.03
232 $CSSstr = str_replace($idata[0][$i], 'url("'.$file.'")', $CSSstr); // mPDF 5.5.17
233 }
234 }
235
236 $CSSstr = preg_replace('/(<\!\-\-|\-\->)/s',' ',$CSSstr);
237 if ($CSSstr ) {
238 preg_match_all('/(.*?)\{(.*?)\}/',$CSSstr,$styles);
239 for($i=0; $i < count($styles[1]) ; $i++) {
240 // SET array e.g. $classproperties['COLOR'] = '#ffffff';
241 $stylestr= trim($styles[2][$i]);
242 $stylearr = explode(';',$stylestr);
243 foreach($stylearr AS $sta) {
244 if (trim($sta)) {
245 // Changed to allow style="background: url('http://www.bpm1.com/bg.jpg')"
246 list($property,$value) = explode(':',$sta,2);
247 $property = trim($property);
248 $value = preg_replace('/\s*!important/i','',$value);
249 $value = trim($value);
250 if ($property && ($value || $value==='0')) {
251 // Ignores -webkit-gradient so doesn't override -moz-
252 if ((strtoupper($property)=='BACKGROUND-IMAGE' || strtoupper($property)=='BACKGROUND') && preg_match('/-webkit-gradient/i',$value)) {
253 continue;
254 }
255 $classproperties[strtoupper($property)] = $value;
256 }
257 }
258 }
259 $classproperties = $this->fixCSS($classproperties);
260 $tagstr = strtoupper(trim($styles[1][$i]));
261 $tagarr = explode(',',$tagstr);
262 $pageselectors = false; // used to turn on $this->mpdf->mirrorMargins
263 foreach($tagarr AS $tg) {
264 $tags = preg_split('/\s+/',trim($tg));
265 $level = count($tags);
266 $t = '';
267 $t2 = '';
268 $t3 = '';
269 if (trim($tags[0])=='@PAGE') {
270 if (isset($tags[0])) { $t = trim($tags[0]); }
271 if (isset($tags[1])) { $t2 = trim($tags[1]); }
272 if (isset($tags[2])) { $t3 = trim($tags[2]); }
273 $tag = '';
274 if ($level==1) { $tag = $t; }
275 else if ($level==2 && preg_match('/^[:](.*)$/',$t2,$m)) {
276 $tag = $t.'>>PSEUDO>>'.$m[1];
277 if ($m[1]=='LEFT' || $m[1]=='RIGHT') { $pageselectors = true; } // used to turn on $this->mpdf->mirrorMargins
278 }
279 else if ($level==2) { $tag = $t.'>>NAMED>>'.$t2; }
280 else if ($level==3 && preg_match('/^[:](.*)$/',$t3,$m)) {
281 $tag = $t.'>>NAMED>>'.$t2.'>>PSEUDO>>'.$m[1];
282 if ($m[1]=='LEFT' || $m[1]=='RIGHT') { $pageselectors = true; } // used to turn on $this->mpdf->mirrorMargins
283 }
284 if (isset($this->CSS[$tag]) && $tag) { $this->CSS[$tag] = $this->array_merge_recursive_unique($this->CSS[$tag], $classproperties); }
285 else if ($tag) { $this->CSS[$tag] = $classproperties; }
286 }
287
288 else if ($level == 1) { // e.g. p or .class or #id or p.class or p#id
289 if (isset($tags[0])) { $t = trim($tags[0]); }
290 if ($t) {
291 $tag = '';
292 if (preg_match('/^[.](.*)$/',$t,$m)) { $tag = 'CLASS>>'.$m[1]; }
293 else if (preg_match('/^[#](.*)$/',$t,$m)) { $tag = 'ID>>'.$m[1]; }
294 else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[.](.*)$/',$t,$m)) { $tag = $m[1].'>>CLASS>>'.$m[2]; }
295 else if (preg_match('/^('.$this->mpdf->allowedCSStags.')\s*:NTH-CHILD\((.*)\)$/',$t,$m)) { $tag = $m[1].'>>SELECTORNTHCHILD>>'.$m[2]; }
296 else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[#](.*)$/',$t,$m)) { $tag = $m[1].'>>ID>>'.$m[2]; }
297 else if (preg_match('/^('.$this->mpdf->allowedCSStags.')$/',$t)) { $tag= $t; }
298 if (isset($this->CSS[$tag]) && $tag) { $this->CSS[$tag] = $this->array_merge_recursive_unique($this->CSS[$tag], $classproperties); }
299 else if ($tag) { $this->CSS[$tag] = $classproperties; }
300 }
301 }
302 else {
303 $tmp = array();
304 for($n=0;$n<$level;$n++) {
305 if (isset($tags[$n])) { $t = trim($tags[$n]); }
306 else { $t = ''; }
307 if ($t) {
308 $tag = '';
309 if (preg_match('/^[.](.*)$/',$t,$m)) { $tag = 'CLASS>>'.$m[1]; }
310 else if (preg_match('/^[#](.*)$/',$t,$m)) { $tag = 'ID>>'.$m[1]; }
311 else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[.](.*)$/',$t,$m)) { $tag = $m[1].'>>CLASS>>'.$m[2]; }
312 else if (preg_match('/^('.$this->mpdf->allowedCSStags.')\s*:NTH-CHILD\((.*)\)$/',$t,$m)) { $tag = $m[1].'>>SELECTORNTHCHILD>>'.$m[2]; }
313 else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[#](.*)$/',$t,$m)) { $tag = $m[1].'>>ID>>'.$m[2]; }
314 else if (preg_match('/^('.$this->mpdf->allowedCSStags.')$/',$t)) { $tag= $t; }
315
316 if ($tag) $tmp[] = $tag;
317 else { break; }
318 }
319 }
320
321 if ($tag) {
322 $x = &$this->cascadeCSS;
323 foreach($tmp AS $tp) { $x = &$x[$tp]; }
324 $x = $this->array_merge_recursive_unique($x, $classproperties);
325 $x['depth'] = $level;
326 }
327 }
328 }
329 if ($pageselectors) { $this->mpdf->mirrorMargins = true; }
330 $properties = array();
331 $values = array();
332 $classproperties = array();
333 }
334 } // end of if
335 //Remove CSS (tags and content), if any
336 $regexp = '/<style.*?>(.*?)<\/style>/si'; // it can be <style> or <style type="txt/css">
337 $html = preg_replace($regexp,'',$html);
338//print_r($this->CSS); exit;
339//print_r($this->cascadeCSS); exit;
340 return $html;
341}
342
343
344
345function readInlineCSS($html) {
346 //Fix incomplete CSS code
347 $size = strlen($html)-1;
348 if (substr($html,$size,1) != ';') $html .= ';';
349 //Make CSS[Name-of-the-class] = array(key => value)
350 $regexp = '|\\s*?(\\S+?):(.+?);|i';
351 preg_match_all( $regexp, $html, $styleinfo);
352 $properties = $styleinfo[1];
353 $values = $styleinfo[2];
354 //Array-properties and Array-values must have the SAME SIZE!
355 $classproperties = array();
356 for($i = 0; $i < count($properties) ; $i++) {
357 // Ignores -webkit-gradient so doesn't override -moz-
358 if ((strtoupper($properties[$i])=='BACKGROUND-IMAGE' || strtoupper($properties[$i])=='BACKGROUND') && preg_match('/-webkit-gradient/i',$values[$i])) {
359 continue;
360 }
361 $classproperties[strtoupper($properties[$i])] = trim($values[$i]);
362 }
363 return $this->fixCSS($classproperties);
364}
365
366
367
368function _fix_borderStr($bd) {
369 preg_match_all("/\((.*?)\)/", $bd, $m);
370 if (count($m[1])) {
371 for($i=0;$i<count($m[1]);$i++) {
372 $sub = preg_replace("/ /", "", $m[1][$i]);
373 $bd = preg_replace('/'.preg_quote($m[1][$i], '/').'/si', $sub, $bd);
374 }
375 }
376
377 $prop = preg_split('/\s+/',trim($bd));
378 $w = 'medium';
379 $c = '#000000';
380 $s = 'none';
381
382 if ( count($prop) == 1 ) {
383 // solid
384 if (in_array($prop[0],$this->mpdf->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { $s = $prop[0]; }
385 // #000000
386 else if (is_array($this->mpdf->ConvertColor($prop[0]))) { $c = $prop[0]; }
387 // 1px
388 else { $w = $prop[0]; }
389 }
390 else if (count($prop) == 2 ) {
391 // 1px solid
392 if (in_array($prop[1],$this->mpdf->borderstyles) || $prop[1] == 'none' || $prop[1] == 'hidden' ) { $w = $prop[0]; $s = $prop[1]; }
393 // solid #000000
394 else if (in_array($prop[0],$this->mpdf->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { $s = $prop[0]; $c = $prop[1]; }
395 // 1px #000000
396 else { $w = $prop[0]; $c = $prop[1]; }
397 }
398 else if ( count($prop) == 3 ) {
399 // Change #000000 1px solid to 1px solid #000000 (proper)
400 if (substr($prop[0],0,1) == '#') { $c = $prop[0]; $w = $prop[1]; $s = $prop[2]; }
401 // Change solid #000000 1px to 1px solid #000000 (proper)
402 else if (substr($prop[0],1,1) == '#') { $s = $prop[0]; $c = $prop[1]; $w = $prop[2]; }
403 // Change solid 1px #000000 to 1px solid #000000 (proper)
404 else if (in_array($prop[0],$this->mpdf->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) {
405 $s = $prop[0]; $w = $prop[1]; $c = $prop[2];
406 }
407 else { $w = $prop[0]; $s = $prop[1]; $c = $prop[2]; }
408 }
409 else { return ''; }
410 $s = strtolower($s);
411 return $w.' '.$s.' '.$c;
412}
413
414
415
416function fixCSS($prop) {
417 if (!is_array($prop) || (count($prop)==0)) return array();
418 $newprop = array();
419 foreach($prop AS $k => $v) {
420 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') {
421 $v = strtolower($v);
422 }
423
424 if ($k == 'FONT') {
425 $s = trim($v);
426 preg_match_all('/\"(.*?)\"/',$s,$ff);
427 if (count($ff[1])) {
428 foreach($ff[1] AS $ffp) {
429 $w = preg_split('/\s+/',$ffp);
430 $s = preg_replace('/\"'.$ffp.'\"/',$w[0],$s);
431 }
432 }
433 preg_match_all('/\'(.*?)\'/',$s,$ff);
434 if (count($ff[1])) {
435 foreach($ff[1] AS $ffp) {
436 $w = preg_split('/\s+/',$ffp);
437 $s = preg_replace('/\''.$ffp.'\'/',$w[0],$s);
438 }
439 }
440 $s = preg_replace('/\s*,\s*/',',',$s);
441 $bits = preg_split('/\s+/',$s);
442 if (count($bits)>1) {
443 $k = 'FONT-FAMILY'; $v = $bits[(count($bits)-1)];
444 $fs = $bits[(count($bits)-2)];
445 if (preg_match('/(.*?)\/(.*)/',$fs, $fsp)) {
446 $newprop['FONT-SIZE'] = $fsp[1];
447 $newprop['LINE-HEIGHT'] = $fsp[2];
448 }
449 else { $newprop['FONT-SIZE'] = $fs; }
450 if (preg_match('/(italic|oblique)/i',$s)) { $newprop['FONT-STYLE'] = 'italic'; }
451 else { $newprop['FONT-STYLE'] = 'normal'; }
452 if (preg_match('/bold/i',$s)) { $newprop['FONT-WEIGHT'] = 'bold'; }
453 else { $newprop['FONT-WEIGHT'] = 'normal'; }
454 if (preg_match('/small-caps/i',$s)) { $newprop['TEXT-TRANSFORM'] = 'uppercase'; }
455 }
456 }
457 if ($k == 'FONT-FAMILY') {
458 $aux_fontlist = explode(",",$v);
459 $found = 0;
460 foreach($aux_fontlist AS $f) {
461 $fonttype = trim($f);
462 $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
463 $fonttype = preg_replace('/ /','',$fonttype);
464 $v = strtolower(trim($fonttype));
465 if (isset($this->mpdf->fonttrans[$v]) && $this->mpdf->fonttrans[$v]) { $v = $this->mpdf->fonttrans[$v]; }
466 if ((!$this->mpdf->onlyCoreFonts && in_array($v,$this->mpdf->available_unifonts)) ||
467 in_array($v,array('ccourier','ctimes','chelvetica')) ||
468 ($this->mpdf->onlyCoreFonts && in_array($v,array('courier','times','helvetica','arial'))) ||
469 in_array($v, array('sjis','uhc','big5','gb'))) {
470 $newprop[$k] = $v;
471 $found = 1;
472 break;
473 }
474 }
475 if (!$found) {
476 foreach($aux_fontlist AS $f) {
477 $fonttype = trim($f);
478 $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
479 $fonttype = preg_replace('/ /','',$fonttype);
480 $v = strtolower(trim($fonttype));
481 if (isset($this->mpdf->fonttrans[$v]) && $this->mpdf->fonttrans[$v]) { $v = $this->mpdf->fonttrans[$v]; }
482 if (in_array($v,$this->mpdf->sans_fonts) || in_array($v,$this->mpdf->serif_fonts) || in_array($v,$this->mpdf->mono_fonts) ) {
483 $newprop[$k] = $v;
484 break;
485 }
486 }
487 }
488 }
489 else if ($k == 'MARGIN') {
490 $tmp = $this->expand24($v);
491 $newprop['MARGIN-TOP'] = $tmp['T'];
492 $newprop['MARGIN-RIGHT'] = $tmp['R'];
493 $newprop['MARGIN-BOTTOM'] = $tmp['B'];
494 $newprop['MARGIN-LEFT'] = $tmp['L'];
495 }
496/*-- BORDER-RADIUS --*/
497 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') {
498 $tmp = $this->border_radius_expand($v,$k);
499 if (isset($tmp['TL-H'])) $newprop['BORDER-TOP-LEFT-RADIUS-H'] = $tmp['TL-H'];
500 if (isset($tmp['TL-V'])) $newprop['BORDER-TOP-LEFT-RADIUS-V'] = $tmp['TL-V'];
501 if (isset($tmp['TR-H'])) $newprop['BORDER-TOP-RIGHT-RADIUS-H'] = $tmp['TR-H'];
502 if (isset($tmp['TR-V'])) $newprop['BORDER-TOP-RIGHT-RADIUS-V'] = $tmp['TR-V'];
503 if (isset($tmp['BL-H'])) $newprop['BORDER-BOTTOM-LEFT-RADIUS-H'] = $tmp['BL-H'];
504 if (isset($tmp['BL-V'])) $newprop['BORDER-BOTTOM-LEFT-RADIUS-V'] = $tmp['BL-V'];
505 if (isset($tmp['BR-H'])) $newprop['BORDER-BOTTOM-RIGHT-RADIUS-H'] = $tmp['BR-H'];
506 if (isset($tmp['BR-V'])) $newprop['BORDER-BOTTOM-RIGHT-RADIUS-V'] = $tmp['BR-V'];
507 }
508/*-- END BORDER-RADIUS --*/
509 else if ($k == 'PADDING') {
510 $tmp = $this->expand24($v);
511 $newprop['PADDING-TOP'] = $tmp['T'];
512 $newprop['PADDING-RIGHT'] = $tmp['R'];
513 $newprop['PADDING-BOTTOM'] = $tmp['B'];
514 $newprop['PADDING-LEFT'] = $tmp['L'];
515 }
516 else if ($k == 'BORDER') {
517 if ($v == '1') { $v = '1px solid #000000'; }
518 else { $v = $this->_fix_borderStr($v); }
519 $newprop['BORDER-TOP'] = $v;
520 $newprop['BORDER-RIGHT'] = $v;
521 $newprop['BORDER-BOTTOM'] = $v;
522 $newprop['BORDER-LEFT'] = $v;
523 }
524 else if ($k == 'BORDER-TOP') {
525 $newprop['BORDER-TOP'] = $this->_fix_borderStr($v);
526 }
527 else if ($k == 'BORDER-RIGHT') {
528 $newprop['BORDER-RIGHT'] = $this->_fix_borderStr($v);
529 }
530 else if ($k == 'BORDER-BOTTOM') {
531 $newprop['BORDER-BOTTOM'] = $this->_fix_borderStr($v);
532 }
533 else if ($k == 'BORDER-LEFT') {
534 $newprop['BORDER-LEFT'] = $this->_fix_borderStr($v);
535 }
536 else if ($k == 'BORDER-STYLE') {
537 $e = $this->expand24($v);
538 $newprop['BORDER-TOP-STYLE'] = $e['T'];
539 $newprop['BORDER-RIGHT-STYLE'] = $e['R'];
540 $newprop['BORDER-BOTTOM-STYLE'] = $e['B'];
541 $newprop['BORDER-LEFT-STYLE'] = $e['L'];
542 }
543 else if ($k == 'BORDER-WIDTH') {
544 $e = $this->expand24($v);
545 $newprop['BORDER-TOP-WIDTH'] = $e['T'];
546 $newprop['BORDER-RIGHT-WIDTH'] = $e['R'];
547 $newprop['BORDER-BOTTOM-WIDTH'] = $e['B'];
548 $newprop['BORDER-LEFT-WIDTH'] = $e['L'];
549 }
550 else if ($k == 'BORDER-COLOR') {
551 $e = $this->expand24($v);
552 $newprop['BORDER-TOP-COLOR'] = $e['T'];
553 $newprop['BORDER-RIGHT-COLOR'] = $e['R'];
554 $newprop['BORDER-BOTTOM-COLOR'] = $e['B'];
555 $newprop['BORDER-LEFT-COLOR'] = $e['L'];
556 }
557
558 else if ($k == 'BORDER-SPACING') {
559 $prop = preg_split('/\s+/',trim($v));
560 if (count($prop) == 1 ) {
561 $newprop['BORDER-SPACING-H'] = $prop[0];
562 $newprop['BORDER-SPACING-V'] = $prop[0];
563 }
564 else if (count($prop) == 2 ) {
565 $newprop['BORDER-SPACING-H'] = $prop[0];
566 $newprop['BORDER-SPACING-V'] = $prop[1];
567 }
568 }
569 else if ($k == 'TEXT-OUTLINE') { // mPDF 5.6.07
570 $prop = preg_split('/\s+/',trim($v));
571 if (trim(strtolower($v)) == 'none' ) {
572 $newprop['TEXT-OUTLINE'] = 'none';
573 }
574 else if (count($prop) == 2 ) {
575 $newprop['TEXT-OUTLINE-WIDTH'] = $prop[0];
576 $newprop['TEXT-OUTLINE-COLOR'] = $prop[1];
577 }
578 else if (count($prop) == 3 ) {
579 $newprop['TEXT-OUTLINE-WIDTH'] = $prop[0];
580 $newprop['TEXT-OUTLINE-COLOR'] = $prop[2];
581 }
582 }
583 else if ($k == 'SIZE') {
584 $prop = preg_split('/\s+/',trim($v));
585 if (preg_match('/(auto|portrait|landscape)/',$prop[0])) {
586 $newprop['SIZE'] = strtoupper($prop[0]);
587 }
588 else if (count($prop) == 1 ) {
589 $newprop['SIZE']['W'] = $this->mpdf->ConvertSize($prop[0]);
590 $newprop['SIZE']['H'] = $this->mpdf->ConvertSize($prop[0]);
591 }
592 else if (count($prop) == 2 ) {
593 $newprop['SIZE']['W'] = $this->mpdf->ConvertSize($prop[0]);
594 $newprop['SIZE']['H'] = $this->mpdf->ConvertSize($prop[1]);
595 }
596 }
597 else if ($k == 'SHEET-SIZE') {
598 $prop = preg_split('/\s+/',trim($v));
599 if (count($prop) == 2 ) {
600 $newprop['SHEET-SIZE'] = array($this->mpdf->ConvertSize($prop[0]), $this->mpdf->ConvertSize($prop[1]));
601 }
602 else {
603 if(preg_match('/([0-9a-zA-Z]*)-L/i',$v,$m)) { // e.g. A4-L = A$ landscape
604 $ft = $this->mpdf->_getPageFormat($m[1]);
605 $format = array($ft[1],$ft[0]);
606 }
607 else { $format = $this->mpdf->_getPageFormat($v); }
608 if ($format) { $newprop['SHEET-SIZE'] = array($format[0]/_MPDFK, $format[1]/_MPDFK); }
609 }
610 }
611 else if ($k == 'BACKGROUND') {
612 $bg = $this->parseCSSbackground($v);
613 if ($bg['c']) { $newprop['BACKGROUND-COLOR'] = $bg['c']; }
614 else { $newprop['BACKGROUND-COLOR'] = 'transparent'; }
615/*-- BACKGROUNDS --*/
616 if ($bg['i']) {
617 $newprop['BACKGROUND-IMAGE'] = $bg['i'];
618 if ($bg['r']) { $newprop['BACKGROUND-REPEAT'] = $bg['r']; }
619 if ($bg['p']) { $newprop['BACKGROUND-POSITION'] = $bg['p']; }
620 }
621 else { $newprop['BACKGROUND-IMAGE'] = ''; }
622/*-- END BACKGROUNDS --*/
623 }
624/*-- BACKGROUNDS --*/
625 else if ($k == 'BACKGROUND-IMAGE') {
626 if (preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient\(.*\)/i',$v,$m)) {
627 $newprop['BACKGROUND-IMAGE'] = $m[0];
628 continue;
629 }
630 if (preg_match('/url\([\'\"]{0,1}(.*?)[\'\"]{0,1}\)/i',$v,$m)) {
631 $newprop['BACKGROUND-IMAGE'] = $m[1];
632 }
633
634 else if (strtolower($v)=='none') { $newprop['BACKGROUND-IMAGE'] = ''; }
635
636 }
637 else if ($k == 'BACKGROUND-REPEAT') {
638 if (preg_match('/(repeat-x|repeat-y|no-repeat|repeat)/i',$v,$m)) {
639 $newprop['BACKGROUND-REPEAT'] = strtolower($m[1]);
640 }
641 }
642 else if ($k == 'BACKGROUND-POSITION') {
643 $s = $v;
644 $bits = preg_split('/\s+/',trim($s));
645 // These should be Position x1 or x2
646 if (count($bits)==1) {
647 if (preg_match('/bottom/',$bits[0])) { $bg['p'] = '50% 100%'; }
648 else if (preg_match('/top/',$bits[0])) { $bg['p'] = '50% 0%'; }
649 else { $bg['p'] = $bits[0] . ' 50%'; }
650 }
651 else if (count($bits)==2) {
652 // Can be either right center or center right
653 if (preg_match('/(top|bottom)/',$bits[0]) || preg_match('/(left|right)/',$bits[1])) {
654 $bg['p'] = $bits[1] . ' '.$bits[0];
655 }
656 else {
657 $bg['p'] = $bits[0] . ' '.$bits[1];
658 }
659 }
660 if ($bg['p']) {
661 $bg['p'] = preg_replace('/(left|top)/','0%',$bg['p']);
662 $bg['p'] = preg_replace('/(right|bottom)/','100%',$bg['p']);
663 $bg['p'] = preg_replace('/(center)/','50%',$bg['p']);
664 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'])) {
665 $bg['p'] = false;
666 }
667 }
668 if ($bg['p']) { $newprop['BACKGROUND-POSITION'] = $bg['p']; }
669 }
670/*-- END BACKGROUNDS --*/
671 else if ($k == 'IMAGE-ORIENTATION') {
672 if (preg_match('/([\-]*[0-9\.]+)(deg|grad|rad)/i',$v,$m)) {
673 $angle = $m[1] + 0;
674 if (strtolower($m[2])=='deg') { $angle = $angle; }
675 else if (strtolower($m[2])=='grad') { $angle *= (360/400); }
676 else if (strtolower($m[2])=='rad') { $angle = rad2deg($angle); }
677 while($angle < 0) { $angle += 360; }
678 $angle = ($angle % 360);
679 $angle /= 90;
680 $angle = round($angle) * 90;
681 $newprop['IMAGE-ORIENTATION'] = $angle;
682 }
683 }
684 // mPDF 5.6.13
685 else if ($k == 'TEXT-ALIGN') {
686 if (preg_match('/["\'](.){1}["\']/i',$v,$m)) {
687 $d = array_search($m[1],$this->mpdf->decimal_align);
688 if ($d !== false) { $newprop['TEXT-ALIGN'] = $d; }
689 if (preg_match('/(center|left|right)/i',$v,$m)) { $newprop['TEXT-ALIGN'] .= strtoupper(substr($m[1],0,1)); }
690 else { $newprop['TEXT-ALIGN'] .= 'R'; } // default = R
691 }
692 else if (preg_match('/["\'](\\\[a-fA-F0-9]{1,6})["\']/i',$v,$m)) {
693 $utf8 = codeHex2utf(substr($m[1],1,6));
694 $d = array_search($utf8,$this->mpdf->decimal_align);
695 if ($d !== false) { $newprop['TEXT-ALIGN'] = $d; }
696 if (preg_match('/(center|left|right)/i',$v,$m)) { $newprop['TEXT-ALIGN'] .= strtoupper(substr($m[1],0,1)); }
697 else { $newprop['TEXT-ALIGN'] .= 'R'; } // default = R
698 }
699 else { $newprop[$k] = $v; }
700 }
701 else if ($k == 'LIST-STYLE') { // mPDF 5.7.2
702 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)
703 || preg_match('/U\+([a-fA-F0-9]+)/i',$v,$m)) {
704 $newprop['LIST-STYLE-TYPE'] = strtolower(trim($m[1]));
705 }
706 }
707
708
709 else {
710 $newprop[$k] = $v;
711 }
712 }
713
714 return $newprop;
715}
716
717function setCSSboxshadow($v) {
718 $sh = array();
719 $c = preg_match_all('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl)\(.*?\)/',$v,$x); // mPDF 5.6.05
720 for($i=0; $i<$c; $i++) {
721 $col = preg_replace('/,/','*',$x[0][$i]);
722 $v = preg_replace('/'.preg_quote($x[0][$i],'/').'/',$col,$v);
723 }
724 $ss = explode(',',$v);
725 foreach ($ss AS $s) {
726 $new = array('inset'=>false, 'blur'=>0, 'spread'=>0);
727 if (preg_match('/inset/i',$s)) { $new['inset'] = true; $s = preg_replace('/\s*inset\s*/','',$s); }
728 $p = explode(' ',trim($s));
729 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); }
730 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); }
731 if (isset($p[2])) {
732 if (preg_match('/^\s*[\.\-0-9]/',$p[2])) {
733 $new['blur'] = $this->mpdf->ConvertSize(trim($p[2]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false);
734 }
735 else { $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[2])); }
736 if (isset($p[3])) {
737 if (preg_match('/^\s*[\.\-0-9]/',$p[3])) {
738 $new['spread'] = $this->mpdf->ConvertSize(trim($p[3]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false);
739 }
740 else { $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[3])); }
741 if (isset($p[4])) {
742 $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[4]));
743 }
744 }
745 }
746 if (!$new['col']) { $new['col'] = $this->mpdf->ConvertColor('#888888'); }
747 if (isset($new['y'])) { array_unshift($sh, $new); }
748 }
749 return $sh;
750}
751
752function setCSStextshadow($v) {
753 $sh = array();
754 $c = preg_match_all('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl)\(.*?\)/',$v,$x); // mPDF 5.6.05
755 for($i=0; $i<$c; $i++) {
756 $col = preg_replace('/,/','*',$x[0][$i]);
757 $v = preg_replace('/'.preg_quote($x[0][$i],'/').'/',$col,$v);
758 }
759 $ss = explode(',',$v);
760 foreach ($ss AS $s) {
761 $new = array('blur'=>0);
762 $p = explode(' ',trim($s));
763 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); }
764 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); }
765 if (isset($p[2])) {
766 if (preg_match('/^\s*[\.\-0-9]/',$p[2])) {
767 $new['blur'] = $this->mpdf->ConvertSize(trim($p[2]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false);
768 }
769 else { $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[2])); }
770 if (isset($p[3])) {
771 $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[3]));
772 }
773 }
774 if (!$new['col']) { $new['col'] = $this->mpdf->ConvertColor('#888888'); }
775 if (isset($new['y'])) { array_unshift($sh, $new); }
776 }
777 return $sh;
778}
779
780function parseCSSbackground($s) {
781 $bg = array('c'=>false, 'i'=>false, 'r'=>false, 'p'=>false, );
782/*-- BACKGROUNDS --*/
783 if (preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient\(.*\)/i',$s,$m)) {
784 $bg['i'] = $m[0];
785 }
786 else
787/*-- END BACKGROUNDS --*/
788 if (preg_match('/url\(/i',$s)) {
789 // If color, set and strip it off
790 // mPDF 5.6.05
791 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)) {
792 $bg['c'] = strtolower($m[1]);
793 $s = $m[3];
794 }
795/*-- BACKGROUNDS --*/
796 if (preg_match('/url\([\'\"]{0,1}(.*?)[\'\"]{0,1}\)\s*(.*)/i',$s,$m)) {
797 $bg['i'] = $m[1];
798 $s = strtolower($m[2]);
799 if (preg_match('/(repeat-x|repeat-y|no-repeat|repeat)/',$s,$m)) {
800 $bg['r'] = $m[1];
801 }
802 // Remove repeat, attachment (discarded) and also any inherit
803 $s = preg_replace('/(repeat-x|repeat-y|no-repeat|repeat|scroll|fixed|inherit)/','',$s);
804 $bits = preg_split('/\s+/',trim($s));
805 // These should be Position x1 or x2
806 if (count($bits)==1) {
807 if (preg_match('/bottom/',$bits[0])) { $bg['p'] = '50% 100%'; }
808 else if (preg_match('/top/',$bits[0])) { $bg['p'] = '50% 0%'; }
809 else { $bg['p'] = $bits[0] . ' 50%'; }
810 }
811 else if (count($bits)==2) {
812 // Can be either right center or center right
813 if (preg_match('/(top|bottom)/',$bits[0]) || preg_match('/(left|right)/',$bits[1])) {
814 $bg['p'] = $bits[1] . ' '.$bits[0];
815 }
816 else {
817 $bg['p'] = $bits[0] . ' '.$bits[1];
818 }
819 }
820 if ($bg['p']) {
821 $bg['p'] = preg_replace('/(left|top)/','0%',$bg['p']);
822 $bg['p'] = preg_replace('/(right|bottom)/','100%',$bg['p']);
823 $bg['p'] = preg_replace('/(center)/','50%',$bg['p']);
824 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'])) {
825 $bg['p'] = false;
826 }
827 }
828 }
829/*-- END BACKGROUNDS --*/
830 }
831 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
832 return ($bg);
833}
834
835
836function expand24($mp) {
837 $prop = preg_split('/\s+/',trim($mp));
838 if (count($prop) == 1 ) {
839 return array('T' => $prop[0], 'R' => $prop[0], 'B' => $prop[0], 'L'=> $prop[0]);
840 }
841 if (count($prop) == 2 ) {
842 return array('T' => $prop[0], 'R' => $prop[1], 'B' => $prop[0], 'L'=> $prop[1]);
843 }
844
845 if (count($prop) == 3 ) {
846 return array('T' => $prop[0], 'R' => $prop[1], 'B' => $prop[2], 'L'=> $prop[1]);
847 }
848 if (count($prop) == 4 ) {
849 return array('T' => $prop[0], 'R' => $prop[1], 'B' => $prop[2], 'L'=> $prop[3]);
850 }
851 return array();
852}
853
854/*-- BORDER-RADIUS --*/
855function border_radius_expand($val,$k) {
856 $b = array();
857 if ($k == 'BORDER-RADIUS') {
858 $hv = explode('/',trim($val));
859 $prop = preg_split('/\s+/',trim($hv[0]));
860 if (count($prop)==1) {
861 $b['TL-H'] = $b['TR-H'] = $b['BR-H'] = $b['BL-H'] = $prop[0];
862 }
863 else if (count($prop)==2) {
864 $b['TL-H'] = $b['BR-H'] = $prop[0];
865 $b['TR-H'] = $b['BL-H'] = $prop[1];
866 }
867 else if (count($prop)==3) {
868 $b['TL-H'] = $prop[0];
869 $b['TR-H'] = $b['BL-H'] = $prop[1];
870 $b['BR-H'] = $prop[2];
871 }
872 else if (count($prop)==4) {
873 $b['TL-H'] = $prop[0];
874 $b['TR-H'] = $prop[1];
875 $b['BR-H'] = $prop[2];
876 $b['BL-H'] = $prop[3];
877 }
878 if (count($hv)==2) {
879 $prop = preg_split('/\s+/',trim($hv[1]));
880 if (count($prop)==1) {
881 $b['TL-V'] = $b['TR-V'] = $b['BR-V'] = $b['BL-V'] = $prop[0];
882 }
883 else if (count($prop)==2) {
884 $b['TL-V'] = $b['BR-V'] = $prop[0];
885 $b['TR-V'] = $b['BL-V'] = $prop[1];
886 }
887 else if (count($prop)==3) {
888 $b['TL-V'] = $prop[0];
889 $b['TR-V'] = $b['BL-V'] = $prop[1];
890 $b['BR-V'] = $prop[2];
891 }
892 else if (count($prop)==4) {
893 $b['TL-V'] = $prop[0];
894 $b['TR-V'] = $prop[1];
895 $b['BR-V'] = $prop[2];
896 $b['BL-V'] = $prop[3];
897 }
898 }
899 else {
900 $b['TL-V'] = $b['TL-H'];
901 $b['TR-V'] = $b['TR-H'];
902 $b['BL-V'] = $b['BL-H'];
903 $b['BR-V'] = $b['BR-H'];
904 }
905 return $b;
906 }
907
908 // Parse 2
909 $h = 0;
910 $v = 0;
911 $prop = preg_split('/\s+/',trim($val));
912 if (count($prop)==1) { $h = $v = $val; }
913 else { $h = $prop[0]; $v = $prop[1]; }
914 if ($h==0 || $v==0) { $h = $v = 0; }
915 if ($k == 'BORDER-TOP-LEFT-RADIUS') {
916 $b['TL-H'] = $h;
917 $b['TL-V'] = $v;
918 }
919 else if ($k == 'BORDER-TOP-RIGHT-RADIUS') {
920 $b['TR-H'] = $h;
921 $b['TR-V'] = $v;
922 }
923 else if ($k == 'BORDER-BOTTOM-LEFT-RADIUS') {
924 $b['BL-H'] = $h;
925 $b['BL-V'] = $v;
926 }
927 else if ($k == 'BORDER-BOTTOM-RIGHT-RADIUS') {
928 $b['BR-H'] = $h;
929 $b['BR-V'] = $v;
930 }
931 return $b;
932
933}
934/*-- END BORDER-RADIUS --*/
935
936function _mergeCSS($p, &$t) {
937 // Save Cascading CSS e.g. "div.topic p" at this block level
938 if (isset($p) && $p) {
939 if ($t) {
940 $t = $this->array_merge_recursive_unique($t, $p);
941 }
942 else { $t = $p; }
943 }
944}
945
946// for CSS handling
947function array_merge_recursive_unique($array1, $array2) {
948 $arrays = func_get_args();
949 $narrays = count($arrays);
950 $ret = $arrays[0];
951 for ($i = 1; $i < $narrays; $i ++) {
952 foreach ($arrays[$i] as $key => $value) {
953 if (((string) $key) === ((string) intval($key))) { // integer or string as integer key - append
954 $ret[] = $value;
955 }
956 else { // string key - merge
957 if (is_array($value) && isset($ret[$key])) {
958 $ret[$key] = $this->array_merge_recursive_unique($ret[$key], $value);
959 }
960 else {
961 $ret[$key] = $value;
962 }
963 }
964 }
965 }
966 return $ret;
967}
968
969
970
971function _mergeFullCSS($p, &$t, $tag, $classes, $id) {
972 $this->_mergeCSS($p[$tag], $t);
973 // STYLESHEET CLASS e.g. .smallone{} .redletter{}
974 foreach($classes AS $class) {
975 $this->_mergeCSS($p['CLASS>>'.$class], $t);
976 }
977 // STYLESHEET nth-child SELECTOR e.g. tr:nth-child(odd) td:nth-child(2n+1)
978 if ($tag=='TR' && isset($p) && $p) {
979 foreach($p AS $k=>$val) {
980 if (preg_match('/'.$tag.'>>SELECTORNTHCHILD>>(.*)/',$k, $m)) {
981 $select = false;
982 if ($tag=='TR') {
983 $row = $this->mpdf->row;
984 $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);
985 $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);
986 if ($this->mpdf->tabletfoot) { $row -= $thnr; }
987 else if (!$this->mpdf->tablethead) { $row -= ($thnr + $tfnr); }
988 if ($m[1]=='ODD' && ($row % 2) == 0) { $select = true; }
989 else if ($m[1]=='EVEN' && ($row % 2) == 1) { $select = true; }
990 else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
991 if ((($row + 1) % $a[1]) == $a[2]) { $select = true; }
992 }
993 }
994 else if ($tag=='TD' || $tag=='TH') {
995 if ($m[1]=='ODD' && ($this->mpdf->col % 2) == 0) { $select = true; }
996 else if ($m[1]=='EVEN' && ($this->mpdf->col % 2) == 1) { $select = true; }
997 else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
998 if ((($this->mpdf->col + 1) % $a[1]) == $a[2]) { $select = true; }
999 }
1000 }
1001 if ($select) {
1002 $this->_mergeCSS($p[$tag.'>>SELECTORNTHCHILD>>'.$m[1]], $t);
1003 }
1004 }
1005 }
1006 }
1007 // STYLESHEET CLASS e.g. #smallone{} #redletter{}
1008 if (isset($id) && $id) {
1009 $this->_mergeCSS($p['ID>>'.$id], $t);
1010 }
1011 // STYLESHEET CLASS e.g. .smallone{} .redletter{}
1012 foreach($classes AS $class) {
1013 $this->_mergeCSS($p[$tag.'>>CLASS>>'.$class], $t);
1014 }
1015 // STYLESHEET CLASS e.g. #smallone{} #redletter{}
1016 if (isset($id)) {
1017 $this->_mergeCSS($p[$tag.'>>ID>>'.$id], $t);
1018 }
1019}
1020
1021function setBorderDominance($prop, $val) {
1022 if (isset($prop['BORDER-LEFT']) && $prop['BORDER-LEFT']) { $this->cell_border_dominance_L = $val; }
1023 if (isset($prop['BORDER-RIGHT']) && $prop['BORDER-RIGHT']) { $this->cell_border_dominance_R = $val; }
1024 if (isset($prop['BORDER-TOP']) && $prop['BORDER-TOP']) { $this->cell_border_dominance_T = $val; }
1025 if (isset($prop['BORDER-BOTTOM']) && $prop['BORDER-BOTTOM']) { $this->cell_border_dominance_B = $val; }
1026}
1027
1028function _set_mergedCSS(&$m, &$p, $d=true, $bd=false) {
1029 if (isset($m)) {
1030 if ((isset($m['depth']) && $m['depth']>1) || $d==false) { // include check for 'depth'
1031 if ($bd) { $this->setBorderDominance($m, $bd); } // *TABLES*
1032 if (is_array($m)) {
1033 $p = array_merge($p,$m);
1034 $this->_mergeBorders($p,$m);
1035 }
1036 }
1037 }
1038}
1039
1040
1041function _mergeBorders(&$b, &$a) { // Merges $a['BORDER-TOP-STYLE'] to $b['BORDER-TOP'] etc.
1042 foreach(array('TOP','RIGHT','BOTTOM','LEFT') AS $side) {
1043 foreach(array('STYLE','WIDTH','COLOR') AS $el) {
1044 if (isset($a['BORDER-'.$side.'-'.$el])) { // e.g. $b['BORDER-TOP-STYLE']
1045 $s = trim($a['BORDER-'.$side.'-'.$el]);
1046 if (isset($b['BORDER-'.$side])) { // e.g. $b['BORDER-TOP']
1047 $p = trim($b['BORDER-'.$side]);
1048 }
1049 else { $p = ''; }
1050 if ($el=='STYLE') {
1051 if ($p) { $b['BORDER-'.$side] = preg_replace('/(\S+)\s+(\S+)\s+(\S+)/', '\\1 '.$s.' \\3', $p); }
1052 else { $b['BORDER-'.$side] = '0px '.$s.' #000000'; }
1053 }
1054 else if ($el=='WIDTH') {
1055 if ($p) { $b['BORDER-'.$side] = preg_replace('/(\S+)\s+(\S+)\s+(\S+)/', $s.' \\2 \\3', $p); }
1056 else { $b['BORDER-'.$side] = $s.' none #000000'; }
1057 }
1058 else if ($el=='COLOR') {
1059 if ($p) { $b['BORDER-'.$side] = preg_replace('/(\S+)\s+(\S+)\s+(\S+)/', '\\1 \\2 '.$s, $p); }
1060 else { $b['BORDER-'.$side] = '0px none '.$s; }
1061 }
1062 }
1063 }
1064 }
1065}
1066
1067
1068function MergeCSS($inherit,$tag,$attr) {
1069 $p = array();
1070 $zp = array();
1071
1072 $classes = array();
1073 if (isset($attr['CLASS'])) {
1074 $classes = preg_split('/\s+/',$attr['CLASS']);
1075 }
1076 if (!isset($attr['ID'])) { $attr['ID']=''; }
1077 //===============================================
1078/*-- TABLES --*/
1079 // Set Inherited properties
1080 if ($inherit == 'TOPTABLE') { // $tag = TABLE
1081 //===============================================
1082 // Save Cascading CSS e.g. "div.topic p" at this block level
1083
1084 if (isset($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'])) {
1085 $this->tablecascadeCSS[0] = $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'];
1086 }
1087 else {
1088 $this->tablecascadeCSS[0] = $this->cascadeCSS;
1089 }
1090 }
1091 //===============================================
1092 // Set Inherited properties
1093 if ($inherit == 'TOPTABLE' || $inherit == 'TABLE') {
1094 //Cascade everything from last level that is not an actual property, or defined by current tag/attributes
1095 if (isset($this->tablecascadeCSS[$this->tbCSSlvl-1]) && is_array($this->tablecascadeCSS[$this->tbCSSlvl-1])) {
1096 foreach($this->tablecascadeCSS[$this->tbCSSlvl-1] AS $k=>$v) {
1097 $this->tablecascadeCSS[$this->tbCSSlvl][$k] = $v;
1098 }
1099 }
1100 $this->_mergeFullCSS($this->cascadeCSS, $this->tablecascadeCSS[$this->tbCSSlvl], $tag, $classes, $attr['ID']);
1101 //===============================================
1102 // Cascading forward CSS e.g. "table.topic td" for this table in $this->tablecascadeCSS
1103 //===============================================
1104 // STYLESHEET TAG e.g. table
1105 $this->_mergeFullCSS($this->tablecascadeCSS[$this->tbCSSlvl-1], $this->tablecascadeCSS[$this->tbCSSlvl], $tag, $classes, $attr['ID']);
1106 //===============================================
1107 }
1108/*-- END TABLES --*/
1109 //===============================================
1110/*-- LISTS --*/
1111 // Set Inherited properties
1112 if ($inherit == 'TOPLIST') { // $tag = UL,OL
1113 //===============================================
1114 // Save Cascading CSS e.g. "div.topic p" at this block level
1115 if (isset($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'])) {
1116 $this->listcascadeCSS[0] = $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'];
1117 }
1118 else {
1119 $this->listcascadeCSS[0] = $this->cascadeCSS;
1120 }
1121 }
1122 //===============================================
1123 // Set Inherited properties
1124 if ($inherit == 'TOPLIST' || $inherit == 'LIST') {
1125 //Cascade everything from last level that is not an actual property, or defined by current tag/attributes
1126 if (isset($this->listcascadeCSS[$this->listCSSlvl-1]) && is_array($this->listcascadeCSS[$this->listCSSlvl-1])) {
1127 foreach($this->listcascadeCSS[$this->listCSSlvl-1] AS $k=>$v) {
1128 $this->listcascadeCSS[$this->listCSSlvl][$k] = $v;
1129 }
1130 }
1131 $this->_mergeFullCSS($this->cascadeCSS, $this->listcascadeCSS[$this->listCSSlvl], $tag, $classes, $attr['ID']);
1132 //===============================================
1133 // Cascading forward CSS e.g. "table.topic td" for this list in $this->listcascadeCSS
1134 //===============================================
1135 // STYLESHEET TAG e.g. table
1136 $this->_mergeFullCSS($this->listcascadeCSS[$this->listCSSlvl-1], $this->listcascadeCSS[$this->listCSSlvl], $tag, $classes, $attr['ID']);
1137 //===============================================
1138 }
1139/*-- END LISTS --*/
1140 //===============================================
1141 // Set Inherited properties
1142 if ($inherit == 'BLOCK') {
1143 if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS']) && is_array($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'])) {
1144 foreach($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'] AS $k=>$v) {
1145 $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$k] = $v;
1146
1147 }
1148 }
1149
1150 //===============================================
1151 // Save Cascading CSS e.g. "div.topic p" at this block level
1152 $this->_mergeFullCSS($this->cascadeCSS, $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'], $tag, $classes, $attr['ID']);
1153 //===============================================
1154 // Cascading forward CSS
1155 //===============================================
1156 $this->_mergeFullCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'], $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'], $tag, $classes, $attr['ID']);
1157 //===============================================
1158 // Block properties
1159 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
1160 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']; }
1161
1162 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']; }
1163
1164 if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['align']) && $this->mpdf->blk[$this->mpdf->blklvl-1]['align']) {
1165 if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'L') { $p['TEXT-ALIGN'] = 'left'; }
1166 else if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'J') { $p['TEXT-ALIGN'] = 'justify'; }
1167 else if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'R') { $p['TEXT-ALIGN'] = 'right'; }
1168 else if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'C') { $p['TEXT-ALIGN'] = 'center'; }
1169 }
1170 if ($this->mpdf->ColActive || $this->mpdf->keep_block_together) {
1171 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)
1172 $cor = $this->mpdf->blk[$this->mpdf->blklvl-1]['bgcolorarray' ];
1173 $p['BACKGROUND-COLOR'] = $this->mpdf->_colAtoString($cor);
1174 }
1175 }
1176
1177 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']; }
1178 if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['InlineProperties'])) {
1179 $biilp = $this->mpdf->blk[$this->mpdf->blklvl-1]['InlineProperties'];
1180 }
1181 else { $biilp = null; }
1182 if (isset($biilp[ 'family' ]) && $biilp[ 'family' ]) { $p['FONT-FAMILY'] = $biilp[ 'family' ]; }
1183 if (isset($biilp[ 'I' ]) && $biilp[ 'I' ]) { $p['FONT-STYLE'] = 'italic'; }
1184 if (isset($biilp[ 'sizePt' ]) && $biilp[ 'sizePt' ]) { $p['FONT-SIZE'] = $biilp[ 'sizePt' ] . 'pt'; }
1185 if (isset($biilp[ 'B' ]) && $biilp[ 'B' ]) { $p['FONT-WEIGHT'] = 'bold'; }
1186 if (isset($biilp[ 'colorarray' ]) && $biilp[ 'colorarray' ]) {
1187 $cor = $biilp[ 'colorarray' ];
1188 $p['COLOR'] = $this->mpdf->_colAtoString($cor);
1189 }
1190 if (isset($biilp[ 'fontkerning' ])) {
1191 if ($biilp[ 'fontkerning' ]) { $p['FONT-KERNING'] = 'normal'; }
1192 else { $p['FONT-KERNING'] = 'none'; }
1193 }
1194 if (isset($biilp[ 'lSpacingCSS' ]) && $biilp[ 'lSpacingCSS' ]) { $p['LETTER-SPACING'] = $biilp[ 'lSpacingCSS' ]; }
1195 if (isset($biilp[ 'wSpacingCSS' ]) && $biilp[ 'wSpacingCSS' ]) { $p['WORD-SPACING'] = $biilp[ 'wSpacingCSS' ]; }
1196 if (isset($biilp[ 'toupper' ]) && $biilp[ 'toupper' ]) { $p['TEXT-TRANSFORM'] = 'uppercase'; }
1197 else if (isset($biilp[ 'tolower' ]) && $biilp[ 'tolower' ]) { $p['TEXT-TRANSFORM'] = 'lowercase'; }
1198 else if (isset($biilp[ 'capitalize' ]) && $biilp[ 'capitalize' ]) { $p['TEXT-TRANSFORM'] = 'capitalize'; }
1199 // CSS says text-decoration is not inherited, but IE7 does??
1200 if (isset($biilp[ 'underline' ]) && $biilp[ 'underline' ]) { $p['TEXT-DECORATION'] = 'underline'; }
1201 if (isset($biilp[ 'smCaps' ]) && $biilp[ 'smCaps' ]) { $p['FONT-VARIANT'] = 'small-caps'; }
1202
1203 }
1204 //===============================================
1205 //===============================================
1206/*-- LISTS --*/
1207 // Set Inherited properties
1208 if ($inherit == 'TOPLIST') {
1209 if ($this->listCSSlvl == 1) {
1210 $bilp = $this->mpdf->blk[$this->mpdf->blklvl]['InlineProperties'];
1211 if (isset($bilp[ 'family' ]) && $bilp[ 'family' ]) { $p['FONT-FAMILY'] = $bilp[ 'family' ]; }
1212 if (isset($bilp[ 'I' ]) && $bilp[ 'I' ]) { $p['FONT-STYLE'] = 'italic'; }
1213 if (isset($bilp[ 'sizePt' ]) && $bilp[ 'sizePt' ]) { $p['FONT-SIZE'] = $bilp[ 'sizePt' ] . 'pt'; }
1214 if (isset($bilp[ 'B' ]) && $bilp[ 'B' ]) { $p['FONT-WEIGHT'] = 'bold'; }
1215 if (isset($bilp[ 'colorarray' ]) && $bilp[ 'colorarray' ]) {
1216 $cor = $bilp[ 'colorarray' ];
1217 $p['COLOR'] = $this->mpdf->_colAtoString($cor);
1218 }
1219 if (isset($bilp[ 'toupper' ]) && $bilp[ 'toupper' ]) { $p['TEXT-TRANSFORM'] = 'uppercase'; }
1220 else if (isset($bilp[ 'tolower' ]) && $bilp[ 'tolower' ]) { $p['TEXT-TRANSFORM'] = 'lowercase'; }
1221 else if (isset($bilp[ 'capitalize' ]) && $bilp[ 'capitalize' ]) { $p['TEXT-TRANSFORM'] = 'capitalize'; }
1222 if (isset($bilp[ 'fontkerning' ])) {
1223 if ($bilp[ 'fontkerning' ]) { $p['FONT-KERNING'] = 'normal'; }
1224 else { $p['FONT-KERNING'] = 'none'; }
1225 }
1226 if (isset($bilp[ 'lSpacingCSS' ]) && $bilp[ 'lSpacingCSS' ]) { $p['LETTER-SPACING'] = $bilp[ 'lSpacingCSS' ]; }
1227 if (isset($bilp[ 'wSpacingCSS' ]) && $bilp[ 'wSpacingCSS' ]) { $p['WORD-SPACING'] = $bilp[ 'wSpacingCSS' ]; }
1228 // CSS says text-decoration is not inherited, but IE7 does??
1229 if (isset($bilp[ 'underline' ]) && $bilp[ 'underline' ]) { $p['TEXT-DECORATION'] = 'underline'; }
1230 if (isset($bilp[ 'smCaps' ]) && $bilp[ 'smCaps' ]) { $p['FONT-VARIANT'] = 'small-caps'; }
1231 if ($tag=='LI') {
1232 // Note to self - this should never work, as TOPLIST is not called when LI (see code removed in v5.3)
1233 $this->mpdf->Error("If you see this message, please report this as a bug to the mPDF Forum.");
1234 }
1235 }
1236 }
1237/*-- END LISTS --*/
1238 //===============================================
1239 //===============================================
1240 // DEFAULT for this TAG set in DefaultCSS
1241 if (isset($this->mpdf->defaultCSS[$tag])) {
1242 $zp = $this->fixCSS($this->mpdf->defaultCSS[$tag]);
1243 if (is_array($zp)) { // Default overwrites Inherited
1244 $p = array_merge($p,$zp); // !! Note other way round !!
1245 $this->_mergeBorders($p,$zp);
1246 }
1247 }
1248 //===============================================
1249/*-- TABLES --*/
1250 // cellPadding overwrites TD/TH default but not specific CSS set on cell
1251 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)) {
1252 $p['PADDING-LEFT'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
1253 $p['PADDING-RIGHT'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
1254 $p['PADDING-TOP'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
1255 $p['PADDING-BOTTOM'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
1256 }
1257/*-- END TABLES --*/
1258 //===============================================
1259 // STYLESHEET TAG e.g. h1 p div table
1260 if (isset($this->CSS[$tag]) && $this->CSS[$tag]) {
1261 $zp = $this->CSS[$tag];
1262 if ($tag=='TD' || $tag=='TH') { $this->setBorderDominance($zp, 9); } // *TABLES* // *TABLES-ADVANCED-BORDERS*
1263 if (is_array($zp)) {
1264 $p = array_merge($p,$zp);
1265 $this->_mergeBorders($p,$zp);
1266 }
1267 }
1268 //===============================================
1269 // STYLESHEET CLASS e.g. .smallone{} .redletter{}
1270 foreach($classes AS $class) {
1271 $zp = array();
1272 if (isset($this->CSS['CLASS>>'.$class]) && $this->CSS['CLASS>>'.$class]) { $zp = $this->CSS['CLASS>>'.$class]; }
1273 if ($tag=='TD' || $tag=='TH') { $this->setBorderDominance($zp, 9); } // *TABLES* // *TABLES-ADVANCED-BORDERS*
1274 if (is_array($zp)) {
1275 $p = array_merge($p,$zp);
1276 $this->_mergeBorders($p,$zp);
1277 }
1278 }
1279 //===============================================
1280/*-- TABLES --*/
1281 // STYLESHEET nth-child SELECTOR e.g. tr:nth-child(odd) td:nth-child(2n+1)
1282 if ($tag=='TR' || $tag=='TD' || $tag=='TH') {
1283 foreach($this->CSS AS $k=>$val) {
1284 if (preg_match('/'.$tag.'>>SELECTORNTHCHILD>>(.*)/',$k, $m)) {
1285 $select = false;
1286 if ($tag=='TR') {
1287 $row = $this->mpdf->row;
1288 $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);
1289 $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);
1290 if ($this->mpdf->tabletfoot) { $row -= $thnr; }
1291 else if (!$this->mpdf->tablethead) { $row -= ($thnr + $tfnr); }
1292 if ($m[1]=='ODD' && ($row % 2) == 0) { $select = true; }
1293 else if ($m[1]=='EVEN' && ($row % 2) == 1) { $select = true; }
1294 else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
1295 if ((($row + 1) % $a[1]) == $a[2]) { $select = true; }
1296 }
1297 }
1298 else if ($tag=='TD' || $tag=='TH') {
1299 if ($m[1]=='ODD' && ($this->mpdf->col % 2) == 0) { $select = true; }
1300 else if ($m[1]=='EVEN' && ($this->mpdf->col % 2) == 1) { $select = true; }
1301 else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
1302 if ((($this->mpdf->col+1) % $a[1]) == $a[2]) { $select = true; }
1303 }
1304 }
1305 if ($select) {
1306 $zp = $this->CSS[$tag.'>>SELECTORNTHCHILD>>'.$m[1]];
1307 if ($tag=='TD' || $tag=='TH') { $this->setBorderDominance($zp, 9); }
1308 if (is_array($zp)) {
1309 $p = array_merge($p,$zp);
1310 $this->_mergeBorders($p,$zp);
1311 }
1312 }
1313 }
1314 }
1315 }
1316/*-- END TABLES --*/
1317 //===============================================
1318 // STYLESHEET ID e.g. #smallone{} #redletter{}
1319 if (isset($attr['ID']) && isset($this->CSS['ID>>'.$attr['ID']]) && $this->CSS['ID>>'.$attr['ID']]) {
1320 $zp = $this->CSS['ID>>'.$attr['ID']];
1321 if ($tag=='TD' || $tag=='TH') { $this->setBorderDominance($zp, 9); } // *TABLES* // *TABLES-ADVANCED-BORDERS*
1322 if (is_array($zp)) {
1323 $p = array_merge($p,$zp);
1324 $this->_mergeBorders($p,$zp);
1325 }
1326 }
1327 //===============================================
1328 // STYLESHEET CLASS e.g. p.smallone{} div.redletter{}
1329 foreach($classes AS $class) {
1330 $zp = array();
1331 if (isset($this->CSS[$tag.'>>CLASS>>'.$class]) && $this->CSS[$tag.'>>CLASS>>'.$class]) { $zp = $this->CSS[$tag.'>>CLASS>>'.$class]; }
1332 if ($tag=='TD' || $tag=='TH') { $this->setBorderDominance($zp, 9); } // *TABLES* // *TABLES-ADVANCED-BORDERS*
1333 if (is_array($zp)) {
1334 $p = array_merge($p,$zp);
1335 $this->_mergeBorders($p,$zp);
1336 }
1337 }
1338 //===============================================
1339 // STYLESHEET CLASS e.g. p#smallone{} div#redletter{}
1340 if (isset($attr['ID']) && isset($this->CSS[$tag.'>>ID>>'.$attr['ID']]) && $this->CSS[$tag.'>>ID>>'.$attr['ID']]) {
1341 $zp = $this->CSS[$tag.'>>ID>>'.$attr['ID']];
1342 if ($tag=='TD' || $tag=='TH') { $this->setBorderDominance($zp, 9); } // *TABLES* // *TABLES-ADVANCED-BORDERS*
1343 if (is_array($zp)) {
1344 $p = array_merge($p,$zp);
1345 $this->_mergeBorders($p,$zp);
1346 }
1347 }
1348 //===============================================
1349 // Cascaded e.g. div.class p only works for block level
1350 if ($inherit == 'BLOCK') {
1351 $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'][$tag], $p);
1352 foreach($classes AS $class) {
1353 $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS']['CLASS>>'.$class], $p);
1354 }
1355 $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS']['ID>>'.$attr['ID']], $p);
1356 foreach($classes AS $class) {
1357 $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'][$tag.'>>CLASS>>'.$class], $p);
1358 }
1359 $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'][$tag.'>>ID>>'.$attr['ID']], $p);
1360 }
1361 else if ($inherit == 'INLINE') {
1362 $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$tag], $p);
1363 foreach($classes AS $class) {
1364 $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS']['CLASS>>'.$class], $p);
1365 }
1366 $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS']['ID>>'.$attr['ID']], $p);
1367 foreach($classes AS $class) {
1368 $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$tag.'>>CLASS>>'.$class], $p);
1369 }
1370 $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$tag.'>>ID>>'.$attr['ID']], $p);
1371 }
1372/*-- TABLES --*/
1373 else if ($inherit == 'TOPTABLE' || $inherit == 'TABLE') { // NB looks at $this->tablecascadeCSS-1 for cascading CSS
1374 // false, 9 = don't check for 'depth' and do set border dominance
1375 $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag], $p, false, 9);
1376 foreach($classes AS $class) {
1377 $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1]['CLASS>>'.$class], $p, false, 9);
1378 }
1379 // STYLESHEET nth-child SELECTOR e.g. tr:nth-child(odd) td:nth-child(2n+1)
1380 if ($tag=='TR' || $tag=='TD' || $tag=='TH') {
1381 foreach($this->tablecascadeCSS[$this->tbCSSlvl-1] AS $k=>$val) {
1382 if (preg_match('/'.$tag.'>>SELECTORNTHCHILD>>(.*)/',$k, $m)) {
1383 $select = false;
1384 if ($tag=='TR') {
1385 $row = $this->mpdf->row;
1386 $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);
1387 $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);
1388 if ($this->mpdf->tabletfoot) { $row -= $thnr; }
1389 else if (!$this->mpdf->tablethead) { $row -= ($thnr + $tfnr); }
1390 if ($m[1]=='ODD' && ($row % 2) == 0) { $select = true; }
1391 else if ($m[1]=='EVEN' && ($row % 2) == 1) { $select = true; }
1392 else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
1393 if ((($row + 1) % $a[1]) == $a[2]) { $select = true; }
1394 }
1395 }
1396 else if ($tag=='TD' || $tag=='TH') {
1397 if ($m[1]=='ODD' && ($this->mpdf->col % 2) == 0) { $select = true; }
1398 else if ($m[1]=='EVEN' && ($this->mpdf->col % 2) == 1) { $select = true; }
1399 else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
1400 if ((($this->mpdf->col + 1) % $a[1]) == $a[2]) { $select = true; }
1401 }
1402 }
1403 if ($select) {
1404 $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag.'>>SELECTORNTHCHILD>>'.$m[1]], $p, false, 9);
1405 }
1406 }
1407 }
1408 }
1409 $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1]['ID>>'.$attr['ID']], $p, false, 9);
1410 foreach($classes AS $class) {
1411 $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag.'>>CLASS>>'.$class], $p, false, 9);
1412 }
1413 $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag.'>>ID>>'.$attr['ID']], $p, false, 9);
1414 }
1415/*-- END TABLES --*/
1416 //===============================================
1417/*-- LISTS --*/
1418 else if ($inherit == 'TOPLIST' || $inherit == 'LIST') { // NB looks at $this->listcascadeCSS-1 for cascading CSS
1419 // false = don't check for 'depth'
1420 $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1][$tag], $p, false);
1421 foreach($classes AS $class) {
1422 $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1]['CLASS>>'.$class], $p, false);
1423 }
1424 $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1]['ID>>'.$attr['ID']], $p, false);
1425 foreach($classes AS $class) {
1426 $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1][$tag.'>>CLASS>>'.$class], $p, false);
1427 }
1428 $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1][$tag.'>>ID>>'.$attr['ID']], $p, false);
1429 }
1430/*-- END LISTS --*/
1431 //===============================================
1432 //===============================================
1433 // INLINE STYLE e.g. style="CSS:property"
1434 if (isset($attr['STYLE'])) {
1435 $zp = $this->readInlineCSS($attr['STYLE']);
1436 if ($tag=='TD' || $tag=='TH') { $this->setBorderDominance($zp, 9); } // *TABLES* // *TABLES-ADVANCED-BORDERS*
1437 if (is_array($zp)) {
1438 $p = array_merge($p,$zp);
1439 $this->_mergeBorders($p,$zp);
1440 }
1441 }
1442 //===============================================
1443 //===============================================
1444 // INLINE ATTRIBUTES e.g. .. ALIGN="CENTER">
1445 if (isset($attr['LANG']) and $attr['LANG']!='') {
1446 $p['LANG'] = $attr['LANG'];
1447 }
1448 if (isset($attr['COLOR']) and $attr['COLOR']!='') {
1449 $p['COLOR'] = $attr['COLOR'];
1450 }
1451 if ($tag != 'INPUT') {
1452 if (isset($attr['WIDTH']) and $attr['WIDTH']!='') {
1453 $p['WIDTH'] = $attr['WIDTH'];
1454 }
1455 if (isset($attr['HEIGHT']) and $attr['HEIGHT']!='') {
1456 $p['HEIGHT'] = $attr['HEIGHT'];
1457 }
1458 }
1459 if ($tag == 'FONT') {
1460 if (isset($attr['FACE'])) {
1461 $p['FONT-FAMILY'] = $attr['FACE'];
1462 }
1463 if (isset($attr['SIZE']) and $attr['SIZE']!='') {
1464 $s = '';
1465 if ($attr['SIZE'] === '+1') { $s = '120%'; }
1466 else if ($attr['SIZE'] === '-1') { $s = '86%'; }
1467 else if ($attr['SIZE'] === '1') { $s = 'XX-SMALL'; }
1468 else if ($attr['SIZE'] == '2') { $s = 'X-SMALL'; }
1469 else if ($attr['SIZE'] == '3') { $s = 'SMALL'; }
1470 else if ($attr['SIZE'] == '4') { $s = 'MEDIUM'; }
1471 else if ($attr['SIZE'] == '5') { $s = 'LARGE'; }
1472 else if ($attr['SIZE'] == '6') { $s = 'X-LARGE'; }
1473 else if ($attr['SIZE'] == '7') { $s = 'XX-LARGE'; }
1474 if ($s) $p['FONT-SIZE'] = $s;
1475 }
1476 }
1477 if (isset($attr['VALIGN']) and $attr['VALIGN']!='') {
1478 $p['VERTICAL-ALIGN'] = $attr['VALIGN'];
1479 }
1480 if (isset($attr['VSPACE']) and $attr['VSPACE']!='') {
1481 $p['MARGIN-TOP'] = $attr['VSPACE'];
1482 $p['MARGIN-BOTTOM'] = $attr['VSPACE'];
1483 }
1484 if (isset($attr['HSPACE']) and $attr['HSPACE']!='') {
1485 $p['MARGIN-LEFT'] = $attr['HSPACE'];
1486 $p['MARGIN-RIGHT'] = $attr['HSPACE'];
1487 }
1488 //===============================================
1489 return $p;
1490}
1491
1492function PreviewBlockCSS($tag,$attr) {
1493 // Looks ahead from current block level to a new level
1494 $p = array();
1495 $zp = array();
1496 $oldcascadeCSS = $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'];
1497 $classes = array();
1498 if (isset($attr['CLASS'])) { $classes = preg_split('/\s+/',$attr['CLASS']); }
1499 //===============================================
1500 // DEFAULT for this TAG set in DefaultCSS
1501 if (isset($this->mpdf->defaultCSS[$tag])) {
1502 $zp = $this->fixCSS($this->mpdf->defaultCSS[$tag]);
1503 if (is_array($zp)) { $p = array_merge($zp,$p); } // Inherited overwrites default
1504 }
1505 // STYLESHEET TAG e.g. h1 p div table
1506 if (isset($this->CSS[$tag])) {
1507 $zp = $this->CSS[$tag];
1508 if (is_array($zp)) { $p = array_merge($p,$zp); }
1509 }
1510 // STYLESHEET CLASS e.g. .smallone{} .redletter{}
1511 foreach($classes AS $class) {
1512 $zp = array();
1513 if (isset($this->CSS['CLASS>>'.$class])) { $zp = $this->CSS['CLASS>>'.$class]; }
1514 if (is_array($zp)) { $p = array_merge($p,$zp); }
1515 }
1516 // STYLESHEET ID e.g. #smallone{} #redletter{}
1517 if (isset($attr['ID']) && isset($this->CSS['ID>>'.$attr['ID']])) {
1518 $zp = $this->CSS['ID>>'.$attr['ID']];
1519 if (is_array($zp)) { $p = array_merge($p,$zp); }
1520 }
1521 // STYLESHEET CLASS e.g. p.smallone{} div.redletter{}
1522 foreach($classes AS $class) {
1523 $zp = array();
1524 if (isset($this->CSS[$tag.'>>CLASS>>'.$class])) { $zp = $this->CSS[$tag.'>>CLASS>>'.$class]; }
1525 if (is_array($zp)) { $p = array_merge($p,$zp); }
1526 }
1527 // STYLESHEET CLASS e.g. p#smallone{} div#redletter{}
1528 if (isset($attr['ID']) && isset($this->CSS[$tag.'>>ID>>'.$attr['ID']])) {
1529 $zp = $this->CSS[$tag.'>>ID>>'.$attr['ID']];
1530 if (is_array($zp)) { $p = array_merge($p,$zp); }
1531 }
1532 //===============================================
1533 // STYLESHEET TAG e.g. div h1 div p
1534
1535 $this->_set_mergedCSS($oldcascadeCSS[$tag], $p);
1536 // STYLESHEET CLASS e.g. .smallone{} .redletter{}
1537 foreach($classes AS $class) {
1538
1539 $this->_set_mergedCSS($oldcascadeCSS['CLASS>>'.$class], $p);
1540 }
1541 // STYLESHEET CLASS e.g. #smallone{} #redletter{}
1542 if (isset($attr['ID'])) {
1543
1544 $this->_set_mergedCSS($oldcascadeCSS['ID>>'.$attr['ID']], $p);
1545 }
1546 // STYLESHEET CLASS e.g. div.smallone{} p.redletter{}
1547 foreach($classes AS $class) {
1548
1549 $this->_set_mergedCSS($oldcascadeCSS[$tag.'>>CLASS>>'.$class], $p);
1550 }
1551 // STYLESHEET CLASS e.g. div#smallone{} p#redletter{}
1552 if (isset($attr['ID'])) {
1553
1554 $this->_set_mergedCSS($oldcascadeCSS[$tag.'>>ID>>'.$attr['ID']], $p);
1555 }
1556 //===============================================
1557 // INLINE STYLE e.g. style="CSS:property"
1558 if (isset($attr['STYLE'])) {
1559 $zp = $this->readInlineCSS($attr['STYLE']);
1560 if (is_array($zp)) { $p = array_merge($p,$zp); }
1561 }
1562 //===============================================
1563 return $p;
1564}
1565
1566
1567
1568
1569
1570} // end of class
1571
1572?> \ 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
index dc317d26..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/directw.php
+++ /dev/null
@@ -1,408 +0,0 @@
1<?php
2
3class directw {
4
5var $mpdf = null;
6
7function directw(&$mpdf) {
8 $this->mpdf = $mpdf;
9}
10
11
12function Write($h,$txt,$currentx=0,$link='',$directionality='ltr',$align='') {
13 if (!$align) {
14 if ($directionality=='rtl') { $align = 'R'; }
15 else { $align = 'L'; }
16 }
17 if ($h == 0) { $this->mpdf->SetLineHeight(); $h = $this->mpdf->lineheight; }
18 //Output text in flowing mode
19 $w = $this->mpdf->w - $this->mpdf->rMargin - $this->mpdf->x;
20
21 $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
22 $s=str_replace("\r",'',$txt);
23 if ($this->mpdf->usingCoreFont) { $nb=strlen($s); }
24 else {
25 $nb=mb_strlen($s, $this->mpdf->mb_enc );
26 // handle single space character
27 if(($nb==1) && $s == " ") {
28 $this->mpdf->x += $this->mpdf->GetStringWidth($s);
29 return;
30 }
31 }
32 $sep=-1;
33 $i=0;
34 $j=0;
35 $l=0;
36 $nl=1;
37 if (!$this->mpdf->usingCoreFont) {
38 if (preg_match("/([".$this->mpdf->pregRTLchars."])/u", $txt)) { $this->mpdf->biDirectional = true; } // *RTL*
39 $checkCursive=false;
40 if ($this->mpdf->biDirectional) { $checkCursive=true; } // *RTL*
41 else if (isset($this->mpdf->CurrentFont['indic']) && $this->mpdf->CurrentFont['indic']) { $checkCursive=true; } // *INDIC*
42 while($i<$nb) {
43 //Get next character
44 $c = mb_substr($s,$i,1,$this->mpdf->mb_enc );
45 if($c == "\n") {
46 // WORD SPACING
47 $this->mpdf->ResetSpacing();
48 //Explicit line break
49 $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mpdf->mb_enc));
50 if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; } // *RTL*
51 $this->mpdf->magic_reverse_dir($tmp, true, $directionality); // *RTL*
52 $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
53 $i++;
54 $sep = -1;
55 $j = $i;
56 $l = 0;
57 if($nl == 1) {
58 if ($currentx != 0) $this->mpdf->x=$currentx;
59 else $this->mpdf->x=$this->mpdf->lMargin;
60 $w = $this->mpdf->w - $this->mpdf->rMargin - $this->mpdf->x;
61 $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
62 }
63 $nl++;
64 continue;
65 }
66 if($c == " ") { $sep= $i; }
67 $l += $this->mpdf->GetCharWidthNonCore($c); // mPDF 5.3.04
68 if($l > $wmax) {
69 //Automatic line break (word wrapping)
70 if($sep == -1) {
71 // WORD SPACING
72 $this->mpdf->ResetSpacing();
73 if($this->mpdf->x > $this->mpdf->lMargin) {
74 //Move to next line
75 if ($currentx != 0) $this->mpdf->x=$currentx;
76 else $this->mpdf->x=$this->mpdf->lMargin;
77 $this->mpdf->y+=$h;
78 $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
79 $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
80 $i++;
81 $nl++;
82 continue;
83 }
84 if($i==$j) { $i++; }
85 $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mpdf->mb_enc));
86 if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; } // *RTL*
87 $this->mpdf->magic_reverse_dir($tmp, true, $directionality); // *RTL*
88 $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
89 }
90 else {
91 $tmp = rtrim(mb_substr($s,$j,$sep-$j,$this->mpdf->mb_enc));
92 if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; } // *RTL*
93 $this->mpdf->magic_reverse_dir($tmp, true, $directionality); // *RTL*
94
95 if($align=='J') {
96 //////////////////////////////////////////
97 // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
98 // WORD SPACING
99 // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
100 $tmp = str_replace(chr(194).chr(160),chr(32),$tmp );
101 $len_ligne = $this->mpdf->GetStringWidth($tmp );
102 $nb_carac = mb_strlen( $tmp , $this->mpdf->mb_enc ) ;
103 $nb_spaces = mb_substr_count( $tmp ,' ', $this->mpdf->mb_enc ) ;
104 $inclCursive=false;
105 if ($checkCursive) {
106 if (preg_match("/([".$this->mpdf->pregRTLchars."])/u", $tmp)) { $inclCursive = true; } // *RTL*
107 if (preg_match("/([".$this->mpdf->pregHIchars.$this->mpdf->pregBNchars.$this->mpdf->pregPAchars."])/u", $tmp)) { $inclCursive = true; } // *INDIC*
108 }
109 list($charspacing,$ws) = $this->mpdf->GetJspacing($nb_carac,$nb_spaces,((($w-2) - $len_ligne) * _MPDFK),$inclCursive);
110 $this->mpdf->SetSpacing($charspacing,$ws);
111 //////////////////////////////////////////
112 }
113 $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
114 $i=$sep+1;
115 }
116 $sep = -1;
117 $j = $i;
118 $l = 0;
119 if($nl==1) {
120 if ($currentx != 0) $this->mpdf->x=$currentx;
121 else $this->mpdf->x=$this->mpdf->lMargin;
122 $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
123 $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
124 }
125 $nl++;
126 }
127 else { $i++; }
128 }
129 //Last chunk
130 // WORD SPACING
131 $this->mpdf->ResetSpacing();
132 }
133 else {
134 while($i<$nb) {
135 //Get next character
136 $c=$s[$i];
137 if($c == "\n") {
138 //Explicit line break
139 // WORD SPACING
140 $this->mpdf->ResetSpacing();
141 $this->mpdf->Cell($w, $h, substr($s, $j, $i-$j), 0, 2, $align, $fill, $link);
142 $i++;
143 $sep = -1;
144 $j = $i;
145 $l = 0;
146 if($nl == 1) {
147 if ($currentx != 0) $this->mpdf->x=$currentx;
148 else $this->mpdf->x=$this->mpdf->lMargin;
149 $w = $this->mpdf->w - $this->mpdf->rMargin - $this->mpdf->x;
150 $wmax=$w-($this->mpdf->cMarginL+$this->mpdf->cMarginR);
151 }
152 $nl++;
153 continue;
154 }
155 if($c == " ") { $sep= $i; }
156 $l += $this->mpdf->GetCharWidthCore($c); // mPDF 5.3.04
157 if($l > $wmax) {
158 //Automatic line break (word wrapping)
159 if($sep == -1) {
160 // WORD SPACING
161 $this->mpdf->ResetSpacing();
162 if($this->mpdf->x > $this->mpdf->lMargin) {
163 //Move to next line
164 if ($currentx != 0) $this->mpdf->x=$currentx;
165 else $this->mpdf->x=$this->mpdf->lMargin;
166 $this->mpdf->y+=$h;
167 $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
168 $wmax=$w-($this->mpdf->cMarginL+$this->mpdf->cMarginR);
169 $i++;
170 $nl++;
171 continue;
172 }
173 if($i==$j) { $i++; }
174 $this->mpdf->Cell($w, $h, substr($s, $j, $i-$j), 0, 2, $align, $fill, $link);
175 }
176 else {
177 $tmp = substr($s, $j, $sep-$j);
178 if($align=='J') {
179 //////////////////////////////////////////
180 // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
181 // WORD SPACING
182 // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
183 $tmp = str_replace(chr(160),chr(32),$tmp );
184 $len_ligne = $this->mpdf->GetStringWidth($tmp );
185 $nb_carac = strlen( $tmp ) ;
186 $nb_spaces = substr_count( $tmp ,' ' ) ;
187 list($charspacing,$ws) = $this->mpdf->GetJspacing($nb_carac,$nb_spaces,((($w-2) - $len_ligne) * _MPDFK),$false);
188 $this->mpdf->SetSpacing($charspacing,$ws);
189 //////////////////////////////////////////
190 }
191 $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
192 $i=$sep+1;
193 }
194 $sep = -1;
195 $j = $i;
196 $l = 0;
197 if($nl==1) {
198 if ($currentx != 0) $this->mpdf->x=$currentx;
199 else $this->mpdf->x=$this->mpdf->lMargin;
200 $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
201 $wmax=$w-($this->mpdf->cMarginL+$this->mpdf->cMarginR);
202 }
203 $nl++;
204 }
205 else {
206 $i++;
207 }
208 }
209 // WORD SPACING
210 $this->mpdf->ResetSpacing();
211 }
212 //Last chunk
213 if($i!=$j) {
214 if ($currentx != 0) $this->mpdf->x=$currentx;
215 else $this->mpdf->x=$this->mpdf->lMargin;
216 if ($this->mpdf->usingCoreFont) { $tmp = substr($s,$j,$i-$j); }
217 else {
218 $tmp = mb_substr($s,$j,$i-$j,$this->mpdf->mb_enc);
219 if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; } // *RTL*
220 $this->mpdf->magic_reverse_dir($tmp, true, $directionality); // *RTL*
221 }
222 $this->mpdf->Cell($w,$h,$tmp,0,0,$align,$fill,$link);
223 }
224}
225
226
227function CircularText($x, $y, $r, $text, $align='top', $fontfamily='', $fontsizePt=0, $fontstyle='', $kerning=120, $fontwidth=100, $divider='') { // mPDF 5.5.23
228 if ($font || $fontstyle || $fontsizePt) $this->mpdf->SetFont($fontfamily,$fontstyle,$fontsizePt);
229 $kerning/=100;
230 $fontwidth/=100;
231 if($kerning==0) $this->mpdf->Error('Please use values unequal to zero for kerning (CircularText)');
232 if($fontwidth==0) $this->mpdf->Error('Please use values unequal to zero for font width (CircularText)');
233 $text=str_replace("\r",'',$text);
234 //circumference
235 $u=($r*2)*M_PI;
236 // mPDF 5.5.23
237 $checking = true;
238 $autoset = false;
239 while($checking) {
240 $t=0;
241 $w = array();
242 if ($this->mpdf->usingCoreFont) {
243 $nb=strlen($text);
244 for($i=0; $i<$nb; $i++){
245 $w[$i]=$this->mpdf->GetStringWidth($text[$i]);
246 $w[$i]*=$kerning*$fontwidth;
247 $t+=$w[$i];
248 }
249 }
250 else {
251 $nb=mb_strlen($text, $this->mpdf->mb_enc );
252 $lastchar = '';
253 $unicode = $this->mpdf->UTF8StringToArray($text);
254 for($i=0; $i<$nb; $i++){
255 $c = mb_substr($text,$i,1,$this->mpdf->mb_enc );
256 $w[$i]=$this->mpdf->GetStringWidth($c);
257 $w[$i]*=$kerning*$fontwidth;
258 $char = $unicode[$i];
259 if ($this->mpdf->useKerning && $lastchar) {
260 if (isset($this->mpdf->CurrentFont['kerninfo'][$lastchar][$char])) {
261 $tk = $this->mpdf->CurrentFont['kerninfo'][$lastchar][$char] * ($this->mpdf->FontSize/ 1000) * $kerning * $fontwidth;
262 $w[$i] += $tk/2;
263 $w[$i-1] += $tk/2;
264 $t+=$tk;
265 }
266 }
267 $lastchar = $char;
268 $t+=$w[$i];
269 }
270 }
271 if ($fontsizePt>=0 || $autoset) { $checking = false; }
272 else {
273 $t+=$this->mpdf->GetStringWidth(' ');
274 if ($divider)
275 $t+=$this->mpdf->GetStringWidth(' ');
276 if ($fontsizePt==-2)
277 $fontsizePt = $this->mpdf->FontSizePt * 0.5 * $u/$t;
278 else
279 $fontsizePt = $this->mpdf->FontSizePt * $u/$t;
280 $this->mpdf->SetFontSize($fontsizePt);
281 $autoset = true;
282 }
283 }
284
285 //total width of string in degrees
286 $d=($t/$u)*360;
287
288 $this->mpdf->StartTransform();
289 // rotate matrix for the first letter to center the text
290 // (half of total degrees)
291 if($align=='top'){
292 $this->mpdf->transformRotate(-$d/2, $x, $y);
293 }
294 else{
295 $this->mpdf->transformRotate($d/2, $x, $y);
296 }
297 //run through the string
298 for($i=0; $i<$nb; $i++){
299 if($align=='top'){
300 //rotate matrix half of the width of current letter + half of the width of preceding letter
301 if($i==0){
302 $this->mpdf->transformRotate((($w[$i]/2)/$u)*360, $x, $y);
303 }
304 else{
305 $this->mpdf->transformRotate((($w[$i]/2+$w[$i-1]/2)/$u)*360, $x, $y);
306 }
307 if($fontwidth!=1){
308 $this->mpdf->StartTransform();
309 $this->mpdf->transformScale($fontwidth*100, 100, $x, $y);
310 }
311 $this->mpdf->SetXY($x-$w[$i]/2, $y-$r);
312 }
313 else{
314 //rotate matrix half of the width of current letter + half of the width of preceding letter
315 if($i==0){
316 $this->mpdf->transformRotate(-(($w[$i]/2)/$u)*360, $x, $y);
317 }
318 else{
319 $this->mpdf->transformRotate(-(($w[$i]/2+$w[$i-1]/2)/$u)*360, $x, $y);
320 }
321 if($fontwidth!=1){
322 $this->mpdf->StartTransform();
323 $this->mpdf->transformScale($fontwidth*100, 100, $x, $y);
324 }
325 $this->mpdf->SetXY($x-$w[$i]/2, $y+$r-($this->mpdf->FontSize));
326 }
327 if ($this->mpdf->usingCoreFont) { $c=$text[$i]; }
328 else { $c = mb_substr($text,$i,1,$this->mpdf->mb_enc ); }
329 $this->mpdf->Cell(($w[$i]),$this->mpdf->FontSize,$c,0,0,'C'); // mPDF 5.3.53
330 if($fontwidth!=1){
331 $this->mpdf->StopTransform();
332 }
333 }
334 $this->mpdf->StopTransform();
335
336 // mPDF 5.5.23
337 if($align=='top' && $divider!=''){
338 $wc=$this->mpdf->GetStringWidth($divider);
339 $wc*=$kerning*$fontwidth;
340
341 $this->mpdf->StartTransform();
342 $this->mpdf->transformRotate(90, $x, $y);
343 $this->mpdf->SetXY($x-$wc/2, $y-$r);
344 $this->mpdf->Cell(($wc),$this->mpdf->FontSize,$divider,0,0,'C');
345 $this->mpdf->StopTransform();
346
347 $this->mpdf->StartTransform();
348 $this->mpdf->transformRotate(-90, $x, $y);
349 $this->mpdf->SetXY($x-$wc/2, $y-$r);
350 $this->mpdf->Cell(($wc),$this->mpdf->FontSize,$divider,0,0,'C');
351 $this->mpdf->StopTransform();
352 }
353}
354
355function Shaded_box( $text,$font='',$fontstyle='B',$szfont='',$width='70%',$style='DF',$radius=2.5,$fill='#FFFFFF',$color='#000000',$pad=2 )
356{
357// F (shading - no line),S (line, no shading),DF (both)
358 if (!$font) { $font= $this->mpdf->default_font; }
359 if (!$szfont) { $szfont = ($this->mpdf->default_font_size * 1.8); }
360
361 $text = $this->mpdf->purify_utf8_text($text);
362 if ($this->mpdf->text_input_as_HTML) {
363 $text = $this->mpdf->all_entities_to_utf8($text);
364 }
365 if ($this->mpdf->usingCoreFont) { $text = mb_convert_encoding($text,$this->mpdf->mb_enc,'UTF-8'); }
366 // DIRECTIONALITY
367 $this->mpdf->magic_reverse_dir($text, true, $this->mpdf->directionality); // *RTL*
368 // Font-specific ligature substitution for Indic fonts
369 if (isset($this->mpdf->CurrentFont['indic']) && $this->mpdf->CurrentFont['indic']) $this->mpdf->ConvertIndic($text); // *INDIC*
370 $text = ' '.$text.' ';
371 if (!$width) { $width = $this->mpdf->pgwidth; } else { $width=$this->mpdf->ConvertSize($width,$this->mpdf->pgwidth); }
372 $midpt = $this->mpdf->lMargin+($this->mpdf->pgwidth/2);
373 $r1 = $midpt-($width/2); //($this->mpdf->w / 2) - 40;
374 $r2 = $r1 + $width; //$r1 + 80;
375 $y1 = $this->mpdf->y;
376
377
378 $mid = ($r1 + $r2 ) / 2;
379 $loop = 0;
380
381 while ( $loop == 0 )
382 {
383 $this->mpdf->SetFont( $font, $fontstyle, $szfont );
384 $sz = $this->mpdf->GetStringWidth( $text );
385 if ( ($r1+$sz) > $r2 )
386 $szfont --;
387 else
388 $loop ++;
389 }
390
391 $y2 = $this->mpdf->FontSize+($pad*2);
392
393 $this->mpdf->SetLineWidth(0.1);
394 $fc = $this->mpdf->ConvertColor($fill);
395 $tc = $this->mpdf->ConvertColor($color);
396 $this->mpdf->SetFColor($fc);
397 $this->mpdf->SetTColor($tc);
398 $this->mpdf->RoundedRect($r1, $y1, ($r2 - $r1), $y2, $radius, $style);
399 $this->mpdf->SetX( $r1);
400 $this->mpdf->Cell($r2-$r1, $y2, $text, 0, 1, "C" );
401 $this->mpdf->SetY($y1+$y2+2); // +2 = mm margin below shaded box
402 $this->mpdf->Reset();
403}
404
405
406}
407
408?> \ 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
index 9367e717..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/form.php
+++ /dev/null
@@ -1,1498 +0,0 @@
1<?php
2
3class form {
4
5var $mpdf = null;
6
7var $forms;
8var $formn;
9
10//Active Forms
11var $formSubmitNoValueFields;
12var $formExportType;
13var $formSelectDefaultOption;
14var $formUseZapD;
15/* Form Styles */
16var $form_border_color;
17var $form_background_color;
18var $form_border_width;
19var $form_border_style;
20var $form_button_border_color;
21var $form_button_background_color;
22var $form_button_border_width;
23var $form_button_border_style;
24var $form_radio_color;
25var $form_radio_background_color;
26
27var $form_element_spacing;
28
29// Active forms
30var $formMethod;
31var $formAction;
32var $form_fonts;
33var $form_radio_groups;
34var $form_checkboxes;
35var $pdf_acro_array;
36
37var $pdf_array_co;
38var $array_form_button_js;
39var $array_form_choice_js;
40var $array_form_text_js;
41
42/* Button Text */
43var $form_button_text;
44var $form_button_text_over;
45var $form_button_text_click;
46var $form_button_icon;
47
48
49// FORMS
50var $textarea_lineheight;
51
52function form(&$mpdf) {
53 $this->mpdf = $mpdf;
54
55 // ACTIVE FORMS
56 $this->formExportType = 'xfdf'; // 'xfdf' or 'html'
57 $this->formSubmitNoValueFields = true; // Whether to include blank fields when submitting data
58 $this->formSelectDefaultOption = true; // for Select drop down box; if no option is explicitly maked as selected,
59 // this determines whether to select 1st option (as per browser)
60 // - affects whether "required" attribute is relevant
61 $this->formUseZapD = true; // Determine whether to use ZapfDingbat icons for radio/checkboxes
62
63 // FORM STYLES
64 // These can alternatively use a 4 number string to represent CMYK colours
65 $this->form_border_color = '0.6 0.6 0.72'; // RGB
66 $this->form_background_color = '0.975 0.975 0.975'; // RGB
67 $this->form_border_width = '1'; // 0 doesn't seem to work as it should
68 $this->form_border_style = 'S'; // B - Bevelled; D - Double
69 $this->form_button_border_color = '0.2 0.2 0.55';
70 $this->form_button_background_color = '0.941 0.941 0.941';
71 $this->form_button_border_width = '1';
72 $this->form_button_border_style = 'S';
73 $this->form_radio_color = '0.0 0.0 0.4'; // radio and checkbox
74 $this->form_radio_background_color = '0.9 0.9 0.9';
75
76 // FORMS
77 $this->textarea_lineheight = 1.25;
78
79 // FORM ELEMENT SPACING
80 $this->form_element_spacing['select']['outer']['h'] = 0.5; // Horizontal spacing around SELECT
81 $this->form_element_spacing['select']['outer']['v'] = 0.5; // Vertical spacing around SELECT
82 $this->form_element_spacing['select']['inner']['h'] = 0.7; // Horizontal padding around SELECT
83 $this->form_element_spacing['select']['inner']['v'] = 0.7; // Vertical padding around SELECT
84 $this->form_element_spacing['input']['outer']['h'] = 0.5;
85 $this->form_element_spacing['input']['outer']['v'] = 0.5;
86 $this->form_element_spacing['input']['inner']['h'] = 0.7;
87 $this->form_element_spacing['input']['inner']['v'] = 0.7;
88 $this->form_element_spacing['textarea']['outer']['h'] = 0.5;
89 $this->form_element_spacing['textarea']['outer']['v'] = 0.5;
90 $this->form_element_spacing['textarea']['inner']['h'] = 1;
91 $this->form_element_spacing['textarea']['inner']['v'] = 0.5;
92 $this->form_element_spacing['button']['outer']['h'] = 0.5;
93 $this->form_element_spacing['button']['outer']['v'] = 0.5;
94 $this->form_element_spacing['button']['inner']['h'] = 2;
95 $this->form_element_spacing['button']['inner']['v'] = 1;
96
97 // INITIALISE non-configurable
98 $this->formMethod = 'POST';
99 $this->formAction = '';
100 $this->form_fonts = array();
101 $this->form_radio_groups = array();
102 $this->form_checkboxes = false;
103 $this->forms = array();
104 $this->pdf_array_co = '';
105
106
107}
108
109
110function print_ob_text($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
111 // TEXT/PASSWORD INPUT
112 if ($this->mpdf->useActiveForms) {
113 // Flags: 1 - Readonly; 2 - Required; 3 - No export; 13 - textarea; 14 - Password
114 $flags = array();
115 if ($objattr['disabled'] || $objattr['readonly']) { $flags[] = 1; } // readonly
116 if ($objattr['disabled']) { $flags[] = 3; } // no export
117 if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); } // gray out disabled
118 if ($objattr['required']) { $flags[] = 2; } // required
119 if (!$objattr['spellcheck']) { $flags[] = 23; } // DoNotSpellCheck
120 if ($objattr['subtype']=='PASSWORD') { $flags[] = 14; }
121 $this->mpdf->SetTColor($objattr['color']);
122 $fieldalign = $rtlalign;
123 if ($objattr['text_align']) { $fieldalign = $objattr['text_align']; }
124 if ($objattr['subtype']=='PASSWORD') { $val = $objattr['value']; }
125 else { $val = $objattr['text']; }
126 // mPDF 5.3.25
127 $js = array();
128 if ($objattr['onCalculate']) { $js[] = array('C', $objattr['onCalculate']); }
129 if ($objattr['onValidate']) { $js[] = array('V', $objattr['onValidate']); }
130 if ($objattr['onFormat']) { $js[] = array('F', $objattr['onFormat']); }
131 if ($objattr['onKeystroke']) { $js[] = array('K', $objattr['onKeystroke']); }
132 $this->SetFormText( $w, $h, $objattr['fieldname'], $val, $val, $objattr['title'], $flags, $fieldalign, false, $objattr['maxlength'], $js, $objattr['background-col'], $objattr['border-col'] );
133 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
134 }
135 else {
136 $w -= $this->form_element_spacing['input']['outer']['h']*2 /$k;
137 $h -= $this->form_element_spacing['input']['outer']['v']*2 /$k;
138 $this->mpdf->x += $this->form_element_spacing['input']['outer']['h'] /$k;
139 $this->mpdf->y += $this->form_element_spacing['input']['outer']['v'] /$k;
140 // Chop texto to max length $w-inner-padding
141 while ($this->mpdf->GetStringWidth($texto) > $w-($this->form_element_spacing['input']['inner']['h']*2)) {
142 $texto = mb_substr($texto,0,mb_strlen($texto,$this->mpdf->mb_enc)-1,$this->mpdf->mb_enc);
143 }
144 $save_linemaxfontsize = $this->mpdf->linemaxfontsize;
145 $this->mpdf->linemaxfontsize = $this->mpdf->FontSize;
146 $this->mpdf->SetLineWidth(0.2 /$k );
147 $this->mpdf->magic_reverse_dir($texto, false, $blockdir); // *RTL*
148 if (isset($objattr['disabled']) && $objattr['disabled']) {
149 $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
150 $this->mpdf->SetTColor($this->mpdf->ConvertColor(127));
151 }
152 else if (isset($objattr['readonly']) && $objattr['readonly']) {
153 $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
154 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
155 }
156 else {
157 $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
158 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
159 }
160 $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');
161 $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
162 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
163 $this->mpdf->linemaxfontsize = $save_linemaxfontsize;
164 }
165}
166
167function print_ob_textarea($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
168 // TEXTAREA
169 if ($this->mpdf->useActiveForms) {
170 // Flags: 1 - Readonly; 2 - Required; 3 - No export; 13 - textarea; 14 - Password
171 $flags = array();
172 $flags = array(13); // textarea
173 if ($objattr['disabled'] || $objattr['readonly']) { $flags[] = 1; } // readonly
174 if ($objattr['disabled']) { $flags[] = 3; } // no export
175 if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); } // gray out disabled
176 if ($objattr['required']) { $flags[] = 2; } // required
177 if (!$objattr['spellcheck']) { $flags[] = 23; } // DoNotSpellCheck
178 if ($objattr['donotscroll']) { $flags[] = 24; } // DoNotScroll
179 $this->mpdf->SetTColor($objattr['color']);
180 $fieldalign = $rtlalign;
181 if ($texto == ' ') { $texto = ''; } // mPDF 5.3.24
182 if ($objattr['text_align']) { $fieldalign = $objattr['text_align']; }
183 // mPDF 5.3.25
184 $js = array();
185 if ($objattr['onCalculate']) { $js[] = array('C', $objattr['onCalculate']); }
186 if ($objattr['onValidate']) { $js[] = array('V', $objattr['onValidate']); }
187 if ($objattr['onFormat']) { $js[] = array('F', $objattr['onFormat']); }
188 if ($objattr['onKeystroke']) { $js[] = array('K', $objattr['onKeystroke']); }
189 $this->SetFormText( $w, $h, $objattr['fieldname'], $texto, $texto, $objattr['title'], $flags, $fieldalign , false, -1, $js, $objattr['background-col'], $objattr['border-col'] );
190 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
191 }
192 else {
193 $w -= $this->form_element_spacing['textarea']['outer']['h']*2 /$k ;
194 $h -= $this->form_element_spacing['textarea']['outer']['v']*2 /$k ;
195 $this->mpdf->x += $this->form_element_spacing['textarea']['outer']['h'] /$k ;
196 $this->mpdf->y += $this->form_element_spacing['textarea']['outer']['v'] /$k ;
197 $this->mpdf->SetLineWidth(0.2 /$k );
198 if (isset($objattr['disabled']) && $objattr['disabled']) {
199 $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
200 $this->mpdf->SetTColor($this->mpdf->ConvertColor(127));
201 }
202 else if (isset($objattr['readonly']) && $objattr['readonly']) {
203 $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
204 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
205 }
206 else {
207 $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
208 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
209 }
210 $this->mpdf->Rect($this->mpdf->x,$this->mpdf->y,$w,$h,'DF');
211 $w -= $this->form_element_spacing['textarea']['inner']['h']*2 /$k ;
212 $this->mpdf->x += $this->form_element_spacing['textarea']['inner']['h'] /$k ;
213 $this->mpdf->y += $this->form_element_spacing['textarea']['inner']['v'] /$k ;
214 $linesneeded = $this->mpdf->WordWrap($texto,$w);
215 if ($linesneeded > $objattr['rows']) { //Too many words inside textarea
216 $textoaux = explode("\n",$texto);
217 $texto = '';
218 for($i=0;$i<$objattr['rows'];$i++) {
219 if ($i == ($objattr['rows']-1)) $texto .= $textoaux[$i];
220 else $texto .= $textoaux[$i] . "\n";
221 }
222 $texto = mb_substr($texto,0,mb_strlen($texto,$this->mpdf->mb_enc)-4,$this->mpdf->mb_enc) . "...";
223 }
224 if ($texto != '') $this->mpdf->MultiCell($w,$this->mpdf->FontSize*$this->textarea_lineheight,$texto,0,'',0,'',$blockdir,true);
225 $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
226 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
227 }
228}
229
230function print_ob_select($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
231 // SELECT
232 if ($this->mpdf->useActiveForms) {
233 // Flags: 1 - Readonly; 2 - Required; 3 - No export; 19 - edit (only if combo)
234 $flags = array();
235 if ($objattr['disabled']) { $flags[] = 1; } // readonly
236 if ($objattr['disabled']) { $flags[] = 3; } // no export
237 if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); } // gray out disabled
238 if ($objattr['required']) { $flags[] = 2; } // required
239 if ($objattr['multiple'] && $objattr['size']>1) { $flags[] = 22; } //flag 22 = multiselect (listbox)
240 if ($objattr['size']<2) {
241 $flags[] = 18; //flag 18 = combobox (else a listbox)
242 if ($objattr['editable']) { $flags[] = 19; } // editable
243 }
244 // only spellcheck if combo and editable
245 if (!$objattr['spellcheck'] || $objattr['size']>1 || !$objattr['editable']) { $flags[] = 23; } // DoNotSpellCheck
246 if ($objattr['subtype']=='PASSWORD') { $flags[] = 14; }
247 if ($objattr['onChange']) { $js = $objattr['onChange']; }
248 else { $js = ''; } // mPDF 5.3.37
249 $data = array('VAL' => array(), 'OPT' => array(), 'SEL' => array(), );
250 for($i=0; $i<count($objattr['items']); $i++) {
251 $item = $objattr['items'][$i];
252 $data['VAL'][] = $item['exportValue'];
253 $data['OPT'][] = $item['content'];
254 if ($item['selected']) { $data['SEL'][] = $i; }
255 }
256 if (count($data['SEL'])==0 && $this->formSelectDefaultOption) {$data['SEL'][] = 0; }
257 $this->mpdf->SetTColor($objattr['color']);
258 $this->SetFormChoice( $w, $h, $objattr['fieldname'], $flags, $data, $rtlalign, $js );
259 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
260 }
261 else {
262 $save_linemaxfontsize = $this->mpdf->linemaxfontsize;
263 $this->mpdf->linemaxfontsize = $this->mpdf->FontSize;
264 $this->mpdf->magic_reverse_dir($texto, false, $blockdir); // *RTL*
265 $this->mpdf->SetLineWidth(0.2 /$k );
266 if (isset($objattr['disabled']) && $objattr['disabled']) {
267 $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
268 $this->mpdf->SetTColor($this->mpdf->ConvertColor(127));
269 }
270 else {
271 $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
272 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
273 }
274 $w -= $this->form_element_spacing['select']['outer']['h']*2 /$k ;
275 $h -= $this->form_element_spacing['select']['outer']['v']*2 /$k ;
276 $this->mpdf->x += $this->form_element_spacing['select']['outer']['h'] /$k ;
277 $this->mpdf->y += $this->form_element_spacing['select']['outer']['v'] /$k ;
278 $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') ;
279 $this->mpdf->SetFColor($this->mpdf->ConvertColor(190));
280 $save_font = $this->mpdf->FontFamily;
281 $save_currentfont = $this->mpdf->currentfontfamily;
282 if ($this->mpdf->PDFA || $this->mpdf->PDFX) {
283 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.)"; }
284 $this->mpdf->SetFont('sans');
285 if ($this->mpdf->_charDefined($this->mpdf->CurrentFont['cw'], 9660)) { $down = "\xe2\x96\xbc"; }
286 else { $down = '='; }
287 $this->mpdf->Cell(($this->mpdf->FontSize*1.4),$h,$down,1,0,'C',1,'',0,0,0, 'M') ;
288 }
289 else {
290 $this->mpdf->SetFont('czapfdingbats','',0);
291 $this->mpdf->Cell(($this->mpdf->FontSize*1.4),$h,chr(116),1,0,'C',1,'',0,0,0, 'M') ;
292 }
293 $this->mpdf->SetFont($save_font,'',0);
294 $this->mpdf->currentfontfamily = $save_currentfont;
295 $this->mpdf->linemaxfontsize = $save_linemaxfontsize;
296 $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
297 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
298 }
299}
300
301function print_ob_imageinput($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
302 // INPUT/BUTTON as IMAGE
303 if ($this->mpdf->useActiveForms) {
304 // Flags: 1 - Readonly; 3 - No export;
305 $flags = array();
306 if ($objattr['disabled']) { $flags[] = 1; } // readonly
307 if ($objattr['disabled']) { $flags[] = 3; } // no export
308 if ($objattr['onClick']) { $js = $objattr['onClick']; }
309 else { $js = ''; }
310 $this->SetJSButton( $w, $h, $objattr['fieldname'], $objattr['value'], $js, $objattr['ID'], $objattr['title'], $flags, $objattr['Indexed']);
311 }
312 else {
313 $this->mpdf->y = $objattr['INNER-Y'];
314 $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'] ) );
315 if (isset($objattr['BORDER-WIDTH']) && $objattr['BORDER-WIDTH']) { $this->mpdf->PaintImgBorder($objattr,$is_table); }
316 }
317}
318
319function print_ob_button($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
320 // BUTTON
321 if ($this->mpdf->useActiveForms) {
322 // Flags: 1 - Readonly; 3 - No export;
323 $flags = array();
324 if ($objattr['disabled']) { $flags[] = 1; } // readonly
325 if ($objattr['disabled']) { $flags[] = 3; } // no export
326 if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); }
327 $this->mpdf->SetTColor($objattr['color']);
328 if ($objattr['subtype'] == 'RESET') {
329 $this->SetFormButtonText( $objattr['value'] );
330 $this->SetFormReset( $w, $h, $objattr['fieldname'], $objattr['value'], $objattr['title'], $flags, $objattr['background-col'], $objattr['border-col'], $objattr['noprint'] );
331 }
332 else if ($objattr['subtype'] == 'SUBMIT') {
333 $url = $this->formAction;
334 $type = $this->formExportType;
335 $method = $this->formMethod;
336 $this->SetFormButtonText( $objattr['value'] );
337 $this->SetFormSubmit( $w, $h, $objattr['fieldname'], $objattr['value'], $url, $objattr['title'], $type, $method, $flags, $objattr['background-col'], $objattr['border-col'], $objattr['noprint'] );
338 }
339 else if ($objattr['subtype'] == 'BUTTON') {
340 $this->SetFormButtonText( $objattr['value'] );
341 if ($objattr['onClick']) { $js = $objattr['onClick']; }
342 else { $js = ''; }
343 $this->SetJSButton( $w, $h, $objattr['fieldname'], $objattr['value'], $js, 0, $objattr['title'], $flags, false, $objattr['background-col'], $objattr['border-col'], $objattr['noprint'] );
344 }
345 $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
346 }
347 else {
348 $this->mpdf->SetLineWidth(0.2 /$k );
349 $this->mpdf->SetFColor($this->mpdf->ConvertColor(190));
350 $w -= $this->form_element_spacing['button']['outer']['h']*2 /$k ;
351 $h -= $this->form_element_spacing['button']['outer']['v']*2 /$k ;
352 $this->mpdf->x += $this->form_element_spacing['button']['outer']['h'] /$k ;
353 $this->mpdf->y += $this->form_element_spacing['button']['outer']['v'] /$k ;
354 $this->mpdf->RoundedRect($this->mpdf->x, $this->mpdf->y, $w, $h, 0.5 /$k , 'DF');
355 $w -= $this->form_element_spacing['button']['inner']['h']*2 /$k ;
356 $h -= $this->form_element_spacing['button']['inner']['v']*2 /$k ;
357 $this->mpdf->x += $this->form_element_spacing['button']['inner']['h'] /$k ;
358 $this->mpdf->y += $this->form_element_spacing['button']['inner']['v'] /$k ;
359 $save_linemaxfontsize = $this->mpdf->linemaxfontsize;
360 $this->mpdf->linemaxfontsize = $this->mpdf->FontSize;
361 $this->mpdf->magic_reverse_dir($texto, false, $blockdir); // *RTL*
362 $this->mpdf->Cell($w,$h,$texto,'',0,'C',0,'',0,0,0, 'M') ;
363 $this->mpdf->SetFColor($this->mpdf->ConvertColor(0));
364 $this->mpdf->linemaxfontsize = $save_linemaxfontsize;
365 }
366}
367
368function print_ob_checkbox($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y) {
369 // CHECKBOX
370 if ($this->mpdf->useActiveForms) {
371 // Flags: 1 - Readonly; 2 - Required; 3 - No export;
372 $flags = array();
373 if ($objattr['disabled']) { $flags[] = 1; } // readonly
374 if ($objattr['disabled']) { $flags[] = 3; } // no export
375 $checked = false;
376 if ($objattr['checked']) { $checked = true; }
377 if ($this->formUseZapD) {
378 $save_font = $this->mpdf->FontFamily;
379 $save_currentfont = $this->mpdf->currentfontfamily;
380 $this->mpdf->SetFont('czapfdingbats','',0);
381 }
382 $this->SetCheckBox( $w, $h, $objattr['fieldname'], $objattr['value'], $objattr['title'], $checked, $flags, $objattr['disabled'] );
383 if ($this->formUseZapD) {
384 $this->mpdf->SetFont($save_font,'',0);
385 $this->mpdf->currentfontfamily = $save_currentfont;
386 }
387 }
388 else {
389 $iw = $w * 0.7;
390 $ih = $h * 0.7;
391 $lx = $x + (($w-$iw)/2);
392 $ty = $y + (($h-$ih)/2);
393 $rx = $lx + $iw;
394 $by = $ty + $ih;
395 $this->mpdf->SetLineWidth(0.2 /$k );
396 if (isset($objattr['disabled']) && $objattr['disabled']) {
397 $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
398 $this->mpdf->SetDColor($this->mpdf->ConvertColor(127));
399 }
400 else {
401 $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
402 $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
403 }
404 $this->mpdf->Rect($lx,$ty,$iw,$ih,'DF');
405 if (isset($objattr['checked']) && $objattr['checked']) {
406 //Round join and cap
407 $this->mpdf->SetLineCap(1);
408 $this->mpdf->Line($lx,$ty,$rx,$by);
409 $this->mpdf->Line($lx,$by,$rx,$ty);
410 //Set line cap style back to square
411 $this->mpdf->SetLineCap(2);
412 }
413 $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
414 $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
415 }
416}
417
418function print_ob_radio($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y) {
419 // RADIO
420 if ($this->mpdf->useActiveForms) {
421 // Flags: 1 - Readonly; 2 - Required; 3 - No export;
422 $flags = array();
423 if ($objattr['disabled']) { $flags[] = 1; } // readonly
424 if ($objattr['disabled']) { $flags[] = 3; } // no export
425 $checked = false;
426 if ($objattr['checked']) { $checked = true; }
427 if ($this->formUseZapD) {
428 $save_font = $this->mpdf->FontFamily;
429 $save_currentfont = $this->mpdf->currentfontfamily;
430 $this->mpdf->SetFont('czapfdingbats','',0);
431 }
432 $this->SetRadio( $w, $h, $objattr['fieldname'], $objattr['value'], $objattr['title'], $checked, $flags, $objattr['disabled'] );
433 if ($this->formUseZapD) {
434 $this->mpdf->SetFont($save_font,'',0);
435 $this->mpdf->currentfontfamily = $save_currentfont;
436 }
437 }
438 else {
439 $this->mpdf->SetLineWidth(0.2 /$k );
440 $radius = $this->mpdf->FontSize *0.35;
441 $cx = $x + ($w/2);
442 $cy = $y + ($h/2);
443 if (isset($objattr['disabled']) && $objattr['disabled']) {
444 $this->mpdf->SetFColor($this->mpdf->ConvertColor(127));
445 $this->mpdf->SetDColor($this->mpdf->ConvertColor(127));
446 }
447 else {
448 $this->mpdf->SetFColor($this->mpdf->ConvertColor(0));
449 $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
450 }
451 $this->mpdf->Circle($cx,$cy,$radius,'D');
452 if (isset($objattr['checked']) && $objattr['checked']) {
453 $this->mpdf->Circle($cx,$cy,$radius*0.4,'DF');
454 }
455 $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
456 $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
457
458 }
459}
460
461
462// In _putpages
463function countPageForms($n, &$totaladdnum) {
464 foreach( $this->forms as $form ) {
465 if ( $form['page'] == $n ) {
466 $totaladdnum++;
467 if ( $form['typ'] == 'Tx' ) {
468 if ( isset($this->array_form_text_js[$form['T']]) ) {
469 if ( isset($this->array_form_text_js[$form['T']]['F']) ) { $totaladdnum++; }
470 if ( isset($this->array_form_text_js[$form['T']]['K']) ) { $totaladdnum++; }
471 if ( isset($this->array_form_text_js[$form['T']]['V']) ) { $totaladdnum++; }
472 if ( isset($this->array_form_text_js[$form['T']]['C']) ) { $totaladdnum++; }
473 }
474 }
475 if ( $form['typ'] == 'Bt' ) {
476 if ( isset($this->array_form_button_js[$form['T']]) ) { $totaladdnum++; }
477 if ( isset($this->form_button_icon[$form['T']]) ) {
478 $totaladdnum++;
479 if ( $this->form_button_icon[$form['T']]['Indexed'] ) { $totaladdnum++; }
480 }
481 if ( $form['subtype'] == 'radio' ) { $totaladdnum+=2; }
482 else if ( $form['subtype'] == 'checkbox' && $this->formUseZapD ) { $totaladdnum++; }
483 else if ( $form['subtype'] == 'checkbox' && !$this->formUseZapD ) { $totaladdnum+=2; }
484 }
485 if ( $form['typ'] == 'Ch' ) {
486 if ( isset($this->array_form_choice_js[$form['T']]) ) { $totaladdnum++; }
487 }
488 }
489 }
490}
491
492// In _putpages
493function addFormIds($n, &$s, &$annotid) {
494 foreach( $this->forms as $form ) {
495 if ( $form['page'] == $n ) {
496 $s .= ($annotid) . ' 0 R ';
497 $annotid++;
498 if ( $form['typ'] == 'Tx' ) {
499 if ( isset($this->array_form_text_js[$form['T']]) ) {
500 if ( isset($this->array_form_text_js[$form['T']]['F']) ) { $annotid++; }
501 if ( isset($this->array_form_text_js[$form['T']]['K']) ) { $annotid++; }
502 if ( isset($this->array_form_text_js[$form['T']]['V']) ) { $annotid++; }
503 if ( isset($this->array_form_text_js[$form['T']]['C']) ) { $annotid++; }
504 }
505 }
506 if ( $form['typ'] == 'Bt' ) {
507 if ( isset($this->array_form_button_js[$form['T']]) ) { $annotid++; }
508 if ( isset($this->form_button_icon[$form['T']]) ) {
509 $annotid++;
510 if ( $this->form_button_icon[$form['T']]['Indexed'] ) { $annotid++; }
511 }
512 if ( $form['subtype'] == 'radio' ) { $annotid+=2; }
513 else if ( $form['subtype'] == 'checkbox' && $this->formUseZapD ) { $annotid++; }
514 else if ( $form['subtype'] == 'checkbox' && !$this->formUseZapD ) { $annotid+=2; }
515 }
516 if ( $form['typ'] == 'Ch' ) {
517 if ( isset($this->array_form_choice_js[$form['T']]) ) { $annotid++; }
518 }
519 }
520 }
521}
522
523// In _putannots
524function _putFormItems($n, $hPt) {
525 foreach( $this->forms as $val) {
526 if ( $val['page'] == $n ) {
527 if ( $val['typ'] == 'Tx' ) $this->_putform_tx( $val, $hPt );
528 if ( $val['typ'] == 'Ch' ) $this->_putform_ch( $val, $hPt );
529 if ( $val['typ'] == 'Bt' ) $this->_putform_bt( $val, $hPt );
530 }
531 }
532}
533
534// In _putannots
535function _putRadioItems($n) {
536 // Output Radio Groups
537 $key = 1;
538 foreach($this->form_radio_groups AS $name=>$frg) {
539 $this->mpdf->_newobj();
540 $this->pdf_acro_array .= $this->mpdf->n.' 0 R ';
541 $this->mpdf->_out('<<');
542 $this->mpdf->_out('/Type /Annot ');
543 $this->mpdf->_out('/Subtype /Widget');
544 $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (3000 + $key++))));
545 $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis')));
546 $this->mpdf->_out('/Rect [0 0 0 0] ');
547 $this->mpdf->_out('/FT /Btn ');
548 if ($frg['disabled']) { $flags=array(1,3,15,16); } // NoExport and readonly
549 else { $flags=array(15,16); } // Flags for Radiobutton, and NoToggleToOff
550 $this->mpdf->_out('/Ff '.$this->_setflag($flags) );
551 $kstr = '';
552 $optstr = '';
553 foreach($frg['kids'] AS $kid) {
554 $kstr .= $this->forms[$kid['n']]['obj'].' 0 R ';
555 // $optstr .= ' '.$this->mpdf->_textstring($kid['OPT']).' ';
556 }
557 $this->mpdf->_out('/Kids [ '.$kstr.' ] '); // 11 0 R 12 0 R etc.
558 // $this->mpdf->_out('/Opt [ '.$optstr.' ] ');
559
560 //V entry holds index corresponding to the appearance state of
561 //whichever child field is currently in the on state = or Off
562 if (isset($frg['on'])) { $state = $frg['on']; }
563 else { $state = 'Off'; }
564 $this->mpdf->_out('/V /'.$state.' ');
565 $this->mpdf->_out('/DV /'.$state.' ');
566 $this->mpdf->_out('/T '.$this->mpdf->_textstring($name).' ');
567 $this->mpdf->_out('>>');
568 $this->mpdf->_out('endobj');
569 }
570}
571
572function _putFormsCatalog() {
573 if (isset($this->pdf_acro_array) ) {
574 $this->mpdf->_out('/AcroForm << /DA (/F1 0 Tf 0 g )');
575 $this->mpdf->_out('/Q 0');
576 $this->mpdf->_out('/Fields ['.$this->pdf_acro_array.']');
577 $f = '';
578 foreach($this->form_fonts AS $fn) {
579 if (is_array($this->mpdf->fonts[$fn]['n'])) { $this->mpdf->Error("Cannot use fonts with SMP or SIP characters for interactive Form elements"); }
580 $f .= '/F'.$this->mpdf->fonts[$fn]['i'].' '.$this->mpdf->fonts[$fn]['n'].' 0 R ';
581 }
582 $this->mpdf->_out('/DR << /Font << '.$f.' >> >>');
583 // CO Calculation Order
584 if ( $this->pdf_array_co ) {
585 $this->mpdf->_out('/CO ['.$this->pdf_array_co.']');
586 }
587 $this->mpdf->_out('/NeedAppearances true');
588 $this->mpdf->_out('>>');
589 }
590}
591
592
593
594function SetFormButtonJS( $name, $js ) {
595 $js = str_replace("\t",' ', trim($js) );
596 if ( isset($name) && isset($js) ) {
597 $this->array_form_button_js[$this->mpdf->_escape($name)] = array(
598 'js' => $js
599 );
600 }
601}
602
603function SetFormChoiceJS( $name, $js ) {
604 $js = str_replace("\t",' ', trim($js) );
605 if ( isset($name) && isset($js) ) {
606 $this->array_form_choice_js[$this->mpdf->_escape($name)] = array(
607 'js' => $js
608 );
609 }
610}
611
612function SetFormTextJS( $name, $js) {
613 for ($i=0; $i<count($js); $i++) {
614 $j = str_replace("\t",' ', trim($js[$i][1]) );
615 $format = $js[$i][0];
616 if ($name) {
617 $this->array_form_text_js[$this->mpdf->_escape($name)][$format] = array('js' => $j);
618 }
619 }
620}
621
622
623function Win1252ToPDFDocEncoding($txt) {
624 $Win1252ToPDFDocEncoding = array(
625 chr(0200) => chr(0240), chr(0214) => chr(0226), chr(0212) => chr(0227), chr(0237) => chr(0230),
626 chr(0225) => chr(0200), chr(0210) => chr(0032), chr(0206) => chr(0201), chr(0207) => chr(0202),
627 chr(0205) => chr(0203), chr(0227) => chr(0204), chr(0226) => chr(0205), chr(0203) => chr(0206),
628 chr(0213) => chr(0210), chr(0233) => chr(0211), chr(0211) => chr(0213), chr(0204) => chr(0214),
629 chr(0223) => chr(0215), chr(0224) => chr(0216), chr(0221) => chr(0217), chr(0222) => chr(0220),
630 chr(0202) => chr(0221), chr(0232) => chr(0235), chr(0230) => chr(0037), chr(0231) => chr(0222),
631 chr(0216) => chr(0231), chr(0240) => chr(0040)
632 ); // mPDF 5.3.46
633 return strtr($txt, $Win1252ToPDFDocEncoding );
634}
635
636
637function SetFormText( $w, $h, $name, $value = '', $default = '', $title = '', $flags = array(), $align='L', $hidden = false, $maxlen=-1, $js='', $background_col=false, $border_col=false ) {
638 // Flags: 1 - Readonly; 2 - Required; 3 - No export; 13 - textarea; 14 - Password
639 $this->formn++;
640 if( $align == 'C' ) { $align = '1'; }
641 else if( $align == 'R' ) { $align = '2'; }
642 else { $align = '0'; }
643 if ($maxlen < 1) { $maxlen = false; }
644 if (!preg_match('/^[a-zA-Z0-9_:\-]+$/', $name)) {
645 $this->mpdf->Error("Field [".$name."] must have a name attribute, which can only contain letters, numbers, colon(:), undersore(_) or hyphen(-)");
646 }
647 if ($this->mpdf->onlyCoreFonts) {
648 $value = $this->Win1252ToPDFDocEncoding($value);
649 $default = $this->Win1252ToPDFDocEncoding($default);
650 $title = $this->Win1252ToPDFDocEncoding($title);
651 }
652 else {
653 if (isset($this->mpdf->CurrentFont['subset'])) {
654 $this->mpdf->UTF8StringToArray($value, true); // Add characters to font subset
655 $this->mpdf->UTF8StringToArray($default, true); // Add characters to font subset
656 $this->mpdf->UTF8StringToArray($title, true); // Add characters to font subset
657 }
658 if ($value) $value = $this->mpdf->UTF8ToUTF16BE($value, true);
659 if ($default ) $default = $this->mpdf->UTF8ToUTF16BE($default, true);
660 $title = $this->mpdf->UTF8ToUTF16BE($title, true);
661 }
662 if ($background_col) { $bg_c = $this->mpdf->SetColor($background_col, 'CodeOnly'); }
663 else { $bg_c = $this->form_background_color; }
664 if ($border_col) { $bc_c = $this->mpdf->SetColor($border_col, 'CodeOnly'); }
665 else { $bc_c = $this->form_border_color; }
666 $f = array( 'n' => $this->formn,
667 'typ' => 'Tx',
668 'page' => $this->mpdf->page,
669 'x' => $this->mpdf->x,
670 'y' => $this->mpdf->y,
671 'w' => $w,
672 'h' => $h,
673 'T' => $name,
674 'FF' => $flags,
675 'V' => $value,
676 'DV' => $default,
677 'TU' => $title,
678 'hidden' => $hidden,
679 'Q' => $align,
680 'maxlen' => $maxlen,
681 'BS_W' => $this->form_border_width,
682 'BS_S' => $this->form_border_style,
683 'BC_C' => $bc_c,
684 'BG_C' => $bg_c,
685 'style' => array(
686 'font' => $this->mpdf->FontFamily,
687 'fontsize' => $this->mpdf->FontSizePt,
688 'fontcolor' => $this->mpdf->TextColor,
689 )
690 );
691 if (is_array($js) && count($js)>0) { $this->SetFormTextJS( $name, $js); } // mPDF 5.3.25
692 if ($this->mpdf->keep_block_together) { $this->mpdf->ktForms[]= $f; }
693 else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) { $this->mpdf->HTMLheaderPageForms[]= $f; }
694 else {
695 if ($this->mpdf->ColActive) {
696 $this->mpdf->columnbuffer[] = array('s' => 'ACROFORM', 'col' => $this->mpdf->CurrCol, 'x' => $this->mpdf->x, 'y' => $this->mpdf->y,
697 'h' => $h);
698 $this->mpdf->columnForms[$this->mpdf->CurrCol][INTVAL($this->mpdf->x)][INTVAL($this->mpdf->y)] = $this->formn;
699 }
700 $this->forms[$this->formn] = $f;
701 }
702 if (!in_array($this->mpdf->FontFamily, $this->form_fonts)) {
703 $this->form_fonts[] = $this->mpdf->FontFamily;
704 $this->mpdf->fonts[$this->mpdf->FontFamily]['used'] = true;
705 }
706 if ( !$hidden ) $this->mpdf->x += $w;
707
708}
709
710
711 function SetFormChoice( $w, $h, $name, $flags, $array, $align='L', $js = '' ) {
712 $this->formn++;
713 if( $this->mpdf->blk[$this->mpdf->blklvl]['direction'] == 'rtl' ) { $align = '2'; }
714 else { $align = '0'; }
715 if (!preg_match('/^[a-zA-Z0-9_:\-]+$/', $name)) {
716 $this->mpdf->Error("Field [".$name."] must have a name attribute, which can only contain letters, numbers, colon(:), undersore(_) or hyphen(-)");
717 }
718 if ($this->mpdf->onlyCoreFonts) {
719 for($i=0;$i<count($array['VAL']);$i++) {
720 $array['VAL'][$i] = $this->Win1252ToPDFDocEncoding($array['VAL'][$i]);
721 $array['OPT'][$i] = $this->Win1252ToPDFDocEncoding($array['OPT'][$i]);
722 }
723 }
724 else {
725 for($i=0;$i<count($array['VAL']);$i++) {
726 if (isset($this->mpdf->CurrentFont['subset'])) {
727 $this->mpdf->UTF8StringToArray($array['VAL'][$i], true); // Add characters to font subset
728 $this->mpdf->UTF8StringToArray($array['OPT'][$i], true); // Add characters to font subset
729 }
730 if ($array['VAL'][$i] ) $array['VAL'][$i] = $this->mpdf->UTF8ToUTF16BE($array['VAL'][$i], true);
731 if ($array['OPT'][$i] ) $array['OPT'][$i] = $this->mpdf->UTF8ToUTF16BE($array['OPT'][$i], true);
732 }
733 }
734 $f = array( 'n' => $this->formn,
735 'typ' => 'Ch',
736 'page' => $this->mpdf->page,
737 'x' => $this->mpdf->x,
738 'y' => $this->mpdf->y,
739 'w' => $w,
740 'h' => $h,
741 'T' => $name,
742 'OPT' => $array,
743 'FF' => $flags,
744 'Q' => $align,
745 'BS_W' => $this->form_border_width,
746 'BS_S' => $this->form_border_style,
747 'BC_C' => $this->form_border_color,
748 'BG_C' => $this->form_background_color,
749 'style' => array(
750 'font' => $this->mpdf->FontFamily,
751 'fontsize' => $this->mpdf->FontSizePt,
752 'fontcolor' => $this->mpdf->TextColor,
753 )
754 );
755 if ($js) { $this->SetFormChoiceJS( $name, $js ); }
756 if ($this->mpdf->keep_block_together) { $this->mpdf->ktForms[]= $f; }
757 else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) { $this->mpdf->HTMLheaderPageForms[]= $f; }
758 else {
759 if ($this->mpdf->ColActive) {
760 $this->mpdf->columnbuffer[] = array('s' => 'ACROFORM', 'col' => $this->mpdf->CurrCol, 'x' => $this->mpdf->x, 'y' => $this->mpdf->y,
761 'h' => $h);
762 $this->mpdf->columnForms[$this->mpdf->CurrCol][INTVAL($this->mpdf->x)][INTVAL($this->mpdf->y)] = $this->formn;
763 }
764 $this->forms[$this->formn] = $f;
765 }
766 if (!in_array($this->mpdf->FontFamily, $this->form_fonts)) {
767 $this->form_fonts[] = $this->mpdf->FontFamily;
768 $this->mpdf->fonts[$this->mpdf->FontFamily]['used'] = true;
769 }
770 $this->mpdf->x += $w;
771 }
772
773 // CHECKBOX
774 function SetCheckBox( $w, $h, $name, $value, $title = '', $checked = false, $flags = array(), $disabled=false ) {
775 $this->SetFormButton( $w, $h, $name, $value, 'checkbox', $title, $flags, $checked, $disabled );
776 $this->mpdf->x += $w;
777 }
778
779
780 // RADIO
781 function SetRadio( $w, $h, $name, $value, $title = '', $checked = false, $flags = array(), $disabled=false ) {
782 $this->SetFormButton( $w, $h, $name, $value, 'radio', $title, $flags, $checked, $disabled );
783 $this->mpdf->x += $w;
784 }
785
786
787 function SetFormReset( $w, $h, $name, $value = 'Reset', $title = '', $flags = array(), $background_col=false, $border_col=false, $noprint=false ) {
788 if (!$name) { $name = 'Reset'; }
789 $this->SetFormButton( $w, $h, $name, $value, 'reset', $title, $flags, false, false, $background_col, $border_col, $noprint);
790 $this->mpdf->x += $w;
791 }
792
793
794 function SetJSButton( $w, $h, $name, $value, $js, $image_id = 0, $title = '', $flags = array(), $indexed=false , $background_col=false, $border_col=false, $noprint=false ) {
795 $this->SetFormButton( $w, $h, $name, $value, 'js_button', $title, $flags, false, false, $background_col, $border_col, $noprint);
796 // pos => 1 = no caption, icon only; 0 = caption only
797 if ($image_id) {
798 $this->form_button_icon[$this->mpdf->_escape($name)] = array(
799 'pos' => 1,
800 'image_id' => $image_id,
801 'Indexed' => $indexed,
802 );
803 }
804 if ($js) { $this->SetFormButtonJS( $name, $js ); }
805 $this->mpdf->x += $w;
806 }
807
808
809 function SetFormSubmit( $w, $h, $name, $value = 'Submit', $url, $title = '', $typ = 'html', $method = 'POST', $flags = array(), $background_col=false, $border_col=false, $noprint=false) {
810 if (!$name) { $name = 'Submit'; }
811 $this->SetFormButton( $w, $h, $name, $value, 'submit', $title, $flags, false, false, $background_col, $border_col, $noprint);
812 $this->forms[$this->formn]['URL'] = $url;
813 $this->forms[$this->formn]['method'] = $method;
814 $this->forms[$this->formn]['exporttype'] = $typ;
815 $this->mpdf->x += $w;
816 }
817
818
819 function SetFormButtonText( $ca, $rc = '', $ac = '' ) {
820 if ($this->mpdf->onlyCoreFonts) {
821 $ca = $this->Win1252ToPDFDocEncoding($ca);
822 if ($rc) $rc = $this->Win1252ToPDFDocEncoding($rc);
823 if ($ac) $ac = $this->Win1252ToPDFDocEncoding($ac);
824 }
825 else {
826 if (isset($this->mpdf->CurrentFont['subset'])) {
827 $this->mpdf->UTF8StringToArray($ca, true); // Add characters to font subset
828 }
829 $ca = $this->mpdf->UTF8ToUTF16BE($ca, true);
830 if ($rc) {
831 if (isset($this->mpdf->CurrentFont['subset'])) { $this->mpdf->UTF8StringToArray($rc, true); }
832 $rc = $this->mpdf->UTF8ToUTF16BE($rc, true);
833 }
834 if ($ac) {
835 if (isset($this->mpdf->CurrentFont['subset'])) { $this->mpdf->UTF8StringToArray($ac, true); }
836 $ac = $this->mpdf->UTF8ToUTF16BE($ac, true);
837 }
838 }
839 $this->form_button_text = $ca;
840 $this->form_button_text_over = $rc ? $rc : $ca;
841 $this->form_button_text_click = $ac ? $ac : $ca;
842 }
843
844
845 function SetFormButton( $bb, $hh, $name, $value, $type, $title = '', $flags = array(), $checked=false, $disabled=false, $background_col=false, $border_col=false, $noprint=false ) {
846 $this->formn++;
847 if (!preg_match('/^[a-zA-Z0-9_:\-]+$/', $name)) {
848 $this->mpdf->Error("Field [".$name."] must have a name attribute, which can only contain letters, numbers, colon(:), undersore(_) or hyphen(-)");
849 }
850 if (!$this->mpdf->onlyCoreFonts) {
851 if (isset($this->mpdf->CurrentFont['subset'])) {
852 $this->mpdf->UTF8StringToArray($title, true); // Add characters to font subset
853 $this->mpdf->UTF8StringToArray($value, true); // Add characters to font subset
854 }
855 $title = $this->mpdf->UTF8ToUTF16BE($title, true);
856 if ($type == 'checkbox') {
857 $uvalue = $this->mpdf->UTF8ToUTF16BE($value, true);
858 }
859 else if ($type == 'radio') {
860 $uvalue = $this->mpdf->UTF8ToUTF16BE($value, true);
861 $value = mb_convert_encoding($value, 'Windows-1252', 'UTF-8');
862 }
863 else {
864 $value = $this->mpdf->UTF8ToUTF16BE($value, true);
865 $uvalue = $value;
866 }
867 }
868 else {
869 $title = $this->Win1252ToPDFDocEncoding($title);
870 $value = $this->Win1252ToPDFDocEncoding($value); //// ??? not needed
871 $uvalue = mb_convert_encoding($value, 'UTF-8', 'Windows-1252');
872 $uvalue = $this->mpdf->UTF8ToUTF16BE($uvalue, true);
873 }
874 if ($type == 'radio' || $type == 'checkbox') {
875 if (!preg_match('/^[a-zA-Z0-9_:\-\.]+$/', $value)) {
876 $this->mpdf->Error("Field '".$name."' must have a value, which can only contain letters, numbers, colon(:), undersore(_), hyphen(-) or period(.)");
877 }
878 }
879 if ($type == 'radio') {
880 if (!isset($this->form_radio_groups[$name])) {
881 $this->form_radio_groups[$name] = array(
882 'page' => $this->mpdf->page,
883 'kids' => array(),
884 );
885 }
886 $this->form_radio_groups[$name]['kids'][] = array(
887 'n' => $this->formn, 'V'=> $value, 'OPT'=>$uvalue, 'disabled'=>$disabled
888 );
889 if ( $checked ) { $this->form_radio_groups[$name]['on'] = $value; }
890 // Disable the whole radio group if one is disabled, because of inconsistency in PDF readers
891 if ( $disabled ) { $this->form_radio_groups[$name]['disabled'] = true; }
892 }
893 if ($type == 'checkbox') {
894 $this->form_checkboxes = true;
895 }
896 if ( $checked ) { $activ = 1; }
897 else { $activ = 0; }
898 if ($background_col) { $bg_c = $this->mpdf->SetColor($background_col, 'CodeOnly'); }
899 else { $bg_c = $this->form_button_background_color; }
900 if ($border_col) { $bc_c = $this->mpdf->SetColor($border_col, 'CodeOnly'); }
901 else { $bc_c = $this->form_button_border_color; }
902 $f = array( 'n' => $this->formn,
903 'typ' => 'Bt',
904 'page' => $this->mpdf->page,
905 'subtype' => $type,
906 'x' => $this->mpdf->x,
907 'y' => $this->mpdf->y,
908 'w' => $bb,
909 'h' => $hh,
910 'T' => $name,
911 'V' => $value,
912 'OPT' => $uvalue,
913 'TU' => $title,
914 'FF' => $flags,
915 'CA' => $this->form_button_text,
916 'RC' => $this->form_button_text_over,
917 'AC' => $this->form_button_text_click,
918 'BS_W' => $this->form_button_border_width,
919 'BS_S' => $this->form_button_border_style,
920 'BC_C' => $bc_c,
921 'BG_C' => $bg_c,
922 'activ' => $activ,
923 'disabled' => $disabled,
924 'noprint' => $noprint,
925 'style' => array(
926 'font' => $this->mpdf->FontFamily,
927 'fontsize' => $this->mpdf->FontSizePt,
928 'fontcolor' => $this->mpdf->TextColor,
929 )
930 );
931 if ($this->mpdf->keep_block_together) { $this->mpdf->ktForms[]= $f; }
932 else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) { $this->mpdf->HTMLheaderPageForms[]= $f; }
933 else {
934 if ($this->mpdf->ColActive) {
935 $this->mpdf->columnbuffer[] = array('s' => 'ACROFORM', 'col' => $this->mpdf->CurrCol, 'x' => $this->mpdf->x, 'y' => $this->mpdf->y,
936 'h' => $hh);
937 $this->mpdf->columnForms[$this->mpdf->CurrCol][INTVAL($this->mpdf->x)][INTVAL($this->mpdf->y)] = $this->formn;
938 }
939 $this->forms[$this->formn] = $f;
940 }
941 if (!in_array($this->mpdf->FontFamily, $this->form_fonts)) {
942 $this->form_fonts[] = $this->mpdf->FontFamily;
943 $this->mpdf->fonts[$this->mpdf->FontFamily]['used'] = true;
944 }
945
946 $this->form_button_text = NULL;
947 $this->form_button_text_over = NULL;
948 $this->form_button_text_click = NULL;
949 }
950
951
952
953function SetFormBorderWidth ( $string ) {
954 switch( $string ) {
955 case 'S': $this->form_border_width = '1';
956 break;
957 case 'M': $this->form_border_width = '2';
958 break;
959 case 'B': $this->form_border_width = '3';
960 break;
961 case '0': $this->form_border_width = '0';
962 break;
963 default: $this->form_border_width = '0';
964 break;
965 }
966}
967
968
969function SetFormBorderStyle ( $string ) {
970 switch( $string ) {
971 case 'S': $this->form_border_style = 'S';
972 break;
973 case 'D': $this->form_border_style = 'D /D [3]';
974 break;
975 case 'B': $this->form_border_style = 'B';
976 break;
977 case 'I': $this->form_border_style = 'I';
978 break;
979 case 'U': $this->form_border_style = 'U';
980 break;
981 default: $this->form_border_style = 'B';
982 break;
983 }
984}
985
986function SetFormBorderColor ( $r, $g=-1, $b=-1 ) {
987 if ( ($r==0 and $g==0 and $b==0) || $g==-1 )
988 $this->form_border_color = sprintf('%.3F', $r/255);
989 else
990 $this->form_border_color = sprintf('%.3F %.3F %.3F', $r/255, $g/255, $b/255);
991}
992
993function SetFormBackgroundColor ( $r, $g=-1, $b=-1 ) {
994 if ( ($r==0 and $g==0 and $b==0) || $g==-1 )
995 $this->form_background_color = sprintf('%.3F', $r/255);
996 else
997 $this->form_background_color = sprintf('%.3F %.3F %.3F', $r/255, $g/255, $b/255);
998}
999
1000function SetFormD ( $W, $S, $BC, $BG ) {
1001 $this->SetFormBorderWidth ( $W );
1002 $this->SetFormBorderStyle ( $S );
1003 $this->SetFormBorderColor ( $BC );
1004 $this->SetFormBackgroundColor ( $BG );
1005}
1006
1007function _setflag( $array ) {
1008 $flag = 0;
1009 foreach($array as $val) { $flag += 1 << ($val-1); }
1010 return $flag;
1011}
1012
1013function _form_rect( $x, $y, $w, $h, $hPt ) {
1014 $x = $x * _MPDFK;
1015 $y = $hPt - ($y * _MPDFK);
1016 $x2 = $x + ($w * _MPDFK);
1017 $y2 = $y - ($h * _MPDFK);
1018 $rect = sprintf('%.3F %.3F %.3F %.3F', $x, $y2, $x2, $y );
1019 return $rect;
1020}
1021
1022
1023function _put_button_icon( $array , $w, $h ) {
1024 if (isset($array['image_id'])) {
1025 $info = false;
1026 foreach($this->mpdf->images AS $iid=>$img) {
1027 if ($img['i'] == $array['image_id']) {
1028 $info = $this->mpdf->images[$iid];
1029 break;
1030 }
1031 }
1032 }
1033 if (!$info) { die("Cannot find Button image"); }
1034 $this->mpdf->_newobj();
1035 $this->mpdf->_out('<<');
1036 $this->mpdf->_out('/Type /XObject');
1037 $this->mpdf->_out('/Subtype /Image');
1038 $this->mpdf->_out('/BBox [0 0 1 1]');
1039 $this->mpdf->_out('/Length '.strlen($info['data']));
1040 $this->mpdf->_out('/BitsPerComponent '.$info['bpc']);
1041 if ($info['cs']=='Indexed') {
1042 $this->mpdf->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->mpdf->n+1).' 0 R]');
1043 }
1044 else {
1045 $this->mpdf->_out('/ColorSpace /'.$info['cs']);
1046 if ($info['cs']=='DeviceCMYK')
1047 if($info['type']=='jpg') { $this->mpdf->_out('/Decode [1 0 1 0 1 0 1 0]'); }
1048 }
1049 if ( isset($info['f']) )
1050 $this->mpdf->_out('/Filter /'.$info['f']);
1051 if ( isset($info['parms']) )
1052 $this->mpdf->_out($info['parms']);
1053 $this->mpdf->_out('/Width '.$info['w']);
1054 $this->mpdf->_out('/Height '.$info['h']);
1055 $this->mpdf->_out('>>');
1056 $this->mpdf->_putstream($info['data']);
1057 $this->mpdf->_out('endobj');
1058 unset($array);
1059 //Palette
1060 if($info['cs']=='Indexed') {
1061 $filter=($this->mpdf->compress) ? '/Filter /FlateDecode ' : '';
1062 $this->mpdf->_newobj();
1063 $pal=($this->mpdf->compress) ? gzcompress($info['pal']) : $info['pal'];
1064 $this->mpdf->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
1065 $this->mpdf->_putstream($pal);
1066 $this->mpdf->_out('endobj');
1067 }
1068
1069}
1070
1071
1072function _putform_bt( $form, $hPt ) {
1073 $cc = 0;
1074 $put_xobject = 0;
1075 $put_js = 0;
1076 $put_icon = 0;
1077 $this->mpdf->_newobj();
1078 $n = $this->mpdf->n;
1079 if ($form['subtype'] != 'radio') $this->pdf_acro_array .= $n.' 0 R '; // Add to /Field element
1080 $this->forms[ $form['n'] ]['obj'] = $n;
1081 $this->mpdf->_out('<<');
1082 $this->mpdf->_out('/Type /Annot ');
1083 $this->mpdf->_out('/Subtype /Widget');
1084 $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (7000 + $form['n']))));
1085 $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis')));
1086 $this->mpdf->_out('/Rect [ '.$this->_form_rect($form['x'],$form['y'],$form['w'],$form['h'], $hPt).' ]');
1087 $form['noprint'] ? $this->mpdf->_out('/F 0 ') : $this->mpdf->_out('/F 4 ');
1088 $this->mpdf->_out('/FT /Btn ');
1089 $this->mpdf->_out('/H /P ');
1090 if ( $form['subtype'] != 'radio' ) // mPDF 5.3.23
1091 $this->mpdf->_out('/T '.$this->mpdf->_textstring($form['T']) );
1092 $this->mpdf->_out('/TU '.$this->mpdf->_textstring($form['TU']) );
1093 if ( isset( $this->form_button_icon[ $form['T'] ] ) ) { $form['BS_W'] = 0; }
1094 if ($form['BS_W'] == 0) { $form['BC_C'] = $form['BG_C']; }
1095 $bstemp = '';
1096 $bstemp .= '/W '.$form['BS_W'].' ';
1097 $bstemp .= '/S /'.$form['BS_S'].' ';
1098 $temp = '';
1099 $temp .= '/BC [ '.$form['BC_C']." ] ";
1100 $temp .= '/BG [ '.$form['BG_C']." ] ";
1101 if ( $form['subtype'] == 'checkbox' ) {
1102 if ($form['disabled']) {
1103 $radio_color = '0.5 0.5 0.5';
1104 $radio_background_color = '0.9 0.9 0.9';
1105 }
1106 else {
1107 $radio_color = $this->form_radio_color;
1108 $radio_background_color = $this->form_radio_background_color;
1109 }
1110 $temp = '';
1111 $temp .= '/BC [ '.$radio_color." ] ";
1112 $temp .= '/BG [ '.$radio_background_color." ] ";
1113 $this->mpdf->_out("/BS << /W 1 /S /S >>");
1114 $this->mpdf->_out("/MK << $temp >>");
1115 $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
1116 if ( $form['activ'] ) {
1117 $this->mpdf->_out('/V /'.$this->mpdf->_escape($form['V']).' ');
1118 $this->mpdf->_out('/DV /'.$this->mpdf->_escape($form['V']).' ');
1119 $this->mpdf->_out('/AS /'.$this->mpdf->_escape($form['V']).' ');
1120 } else {
1121 $this->mpdf->_out('/AS /Off ');
1122 }
1123 if ($this->formUseZapD) {
1124 $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts['czapfdingbats']['i'].' 0 Tf '.$radio_color.' rg)');
1125 $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off /Off >> >>");
1126 }
1127 else {
1128 $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$this->mpdf->CurrentFont['fontkey']]['i'].' 0 Tf '.$radio_color.' rg)');
1129 $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off ".($this->mpdf->n+2)." 0 R >> >>");
1130 }
1131 $this->mpdf->_out('/Opt [ '.$this->mpdf->_textstring($form['OPT']).' '.$this->mpdf->_textstring($form['OPT']).' ]');
1132 }
1133
1134
1135 if ( $form['subtype'] == 'radio' ) {
1136 if ($form['disabled'] || $this->form_radio_groups[$form['T']]['disabled']) {
1137 $radio_color = '0.5 0.5 0.5';
1138 $radio_background_color = '0.9 0.9 0.9';
1139 }
1140 else {
1141 $radio_color = $this->form_radio_color;
1142 $radio_background_color = $this->form_radio_background_color;
1143 }
1144 $this->mpdf->_out('/Parent '.$this->form_radio_groups[$form['T']]['obj_id'].' 0 R ');
1145 $temp = '';
1146 $temp .= '/BC [ '.$radio_color." ] ";
1147 $temp .= '/BG [ '.$radio_background_color." ] ";
1148 $this->mpdf->_out("/BS << /W 1 /S /S >>");
1149 $this->mpdf->_out('/MK << '.$temp.' >> ');
1150 $form['FF'][] = 16; // Radiobutton
1151 $form['FF'][] = 15; // NoToggleOff - must be same as radio button group setting?
1152 $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
1153 if ($this->formUseZapD)
1154 $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts['czapfdingbats']['i'].' 0 Tf '.$radio_color.' rg)');
1155 else
1156 $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$this->mpdf->CurrentFont['fontkey']]['i'].' 0 Tf '.$radio_color.' rg)');
1157 $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off ".($this->mpdf->n+2)." 0 R >> >>");
1158 if ( $form['activ'] ) {
1159 $this->mpdf->_out('/V /'.$this->mpdf->_escape($form['V']).' ');
1160 $this->mpdf->_out('/DV /'.$this->mpdf->_escape($form['V']).' ');
1161 $this->mpdf->_out('/AS /'.$this->mpdf->_escape($form['V']).' ');
1162 }
1163 else {
1164 $this->mpdf->_out('/AS /Off ');
1165 }
1166 $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off ".($this->mpdf->n+2)." 0 R >> >>");
1167 // $this->mpdf->_out('/Opt [ '.$this->mpdf->_textstring($form['OPT']).' '.$this->mpdf->_textstring($form['OPT']).' ]');
1168 }
1169
1170 if ( $form['subtype'] == 'reset' ) {
1171 $temp .= $form['CA'] ? '/CA '.$this->mpdf->_textstring($form['CA']).' ' : '/CA '.$this->mpdf->_textstring($form['T']).' ';
1172 $temp .= $form['RC'] ? '/RC '.$this->mpdf->_textstring($form['RC']).' ' : '/RC '.$this->mpdf->_textstring($form['T']).' ';
1173 $temp .= $form['AC'] ? '/AC '.$this->mpdf->_textstring($form['AC']).' ' : '/AC '.$this->mpdf->_textstring($form['T']).' ';
1174 $this->mpdf->_out("/BS << $bstemp >>");
1175 $this->mpdf->_out('/MK << '.$temp.' >>');
1176 $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
1177 $this->mpdf->_out('/AA << /D << /S /ResetForm /Flags 1 >> >>');
1178 $form['FF'][] = 17;
1179 $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
1180 }
1181
1182
1183 if ( $form['subtype'] == 'submit' ) {
1184 $temp .= $form['CA'] ? '/CA '.$this->mpdf->_textstring($form['CA']).' ' : '/CA '.$this->mpdf->_textstring($form['T']).' ';
1185 $temp .= $form['RC'] ? '/RC '.$this->mpdf->_textstring($form['RC']).' ' : '/RC '.$this->mpdf->_textstring($form['T']).' ';
1186 $temp .= $form['AC'] ? '/AC '.$this->mpdf->_textstring($form['AC']).' ' : '/AC '.$this->mpdf->_textstring($form['T']).' ';
1187 $this->mpdf->_out("/BS << $bstemp >>");
1188 $this->mpdf->_out("/MK << $temp >>");
1189 $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
1190 // Bit 4 (8) = useGETmethod else use POST
1191 // Bit 3 (4) = HTML export format (charset chosen by Adobe)--- OR ---
1192 // Bit 6 (32) = XFDF export format (form of XML in UTF-8)
1193 if ($form['exporttype'] == 'xfdf') { $flag = 32; } // 'xfdf' or 'html'
1194 else {
1195 if ($form['method'] == 'GET') { $flag = 12; }
1196 else { $flag = 4; }
1197 }
1198 // Bit 2 (2) = IncludeNoValueFields
1199 if ($this->formSubmitNoValueFields) $flag += 2;
1200 // To submit a value, needs to be in /AP dictionary, AND this object must contain a /Fields entry
1201 // listing all fields to output
1202 $this->mpdf->_out('/AA << /D << /S /SubmitForm /F ('.$form['URL'].') /Flags '.$flag.' >> >>');
1203 $form['FF'][] = 17;
1204 $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
1205 }
1206
1207 if ( $form['subtype'] == 'js_button' ) {
1208 // Icon / image
1209 if ( isset( $this->form_button_icon[ $form['T'] ] ) ) {
1210 $cc++;
1211 $temp .= '/TP '.$this->form_button_icon[$form['T']]['pos'].' ';
1212 $temp .= '/I '.($cc + $this->mpdf->n).' 0 R '; // Normal icon
1213 $temp .= '/RI '.($cc + $this->mpdf->n).' 0 R '; // onMouseOver
1214 $temp .= '/IX '.($cc + $this->mpdf->n).' 0 R '; // onClick / onMouseDown
1215 $temp .= '/IF << /SW /A /S /A /A [0.0 0.0] >> '; // Icon fit dictionary
1216 if ($this->form_button_icon[ $form['T'] ]['Indexed']) { $cc++; }
1217 $put_icon = 1;
1218 }
1219 $temp .= $form['CA'] ? '/CA '.$this->mpdf->_textstring($form['CA']).' ' : '/CA '.$this->mpdf->_textstring($form['T']).' ';
1220 $temp .= $form['RC'] ? '/RC '.$this->mpdf->_textstring($form['RC']).' ' : '/RC '.$this->mpdf->_textstring($form['T']).' ';
1221 $temp .= $form['AC'] ? '/AC '.$this->mpdf->_textstring($form['AC']).' ' : '/AC '.$this->mpdf->_textstring($form['T']).' ';
1222 $this->mpdf->_out("/BS << $bstemp >>");
1223 $this->mpdf->_out("/MK << $temp >>");
1224 $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
1225 $form['FF'][] = 17;
1226 $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
1227 // Javascript
1228 if ( isset($this->array_form_button_js[$form['T']]) ) {
1229 $cc++;
1230 $this->mpdf->_out("/AA << /D ".($cc + $this->mpdf->n)." 0 R >>");
1231 $put_js = 1;
1232 }
1233 }
1234
1235 $this->mpdf->_out('>>');
1236 $this->mpdf->_out('endobj');
1237
1238 // additional objects
1239 // obj icon
1240 if ( $put_icon == 1 ) {
1241 $this->_put_button_icon( $this->form_button_icon[ $form['T'] ], $form['w'], $form['h'] );
1242 $put_icon = NULL;
1243 }
1244 // obj + 1
1245 if ( $put_js == 1 ) {
1246 $this->mpdf->_set_object_javascript( $this->array_form_button_js[$form['T']]['js'] );
1247 unset( $this->array_form_button_js[$form['T']] );
1248 $put_js = NULL;
1249 }
1250
1251 // RADIO and CHECK BOX appearance streams
1252 $filter=($this->mpdf->compress) ? '/Filter /FlateDecode ' : '';
1253 if ( $form['subtype'] == 'radio' ) {
1254 // output 2 appearance streams for radio buttons on/off
1255 if ($this->formUseZapD) {
1256 $fs = sprintf('%.3F', $form['style']['fontsize']*1.25);
1257 $fi = 'czapfdingbats';
1258 $r_on = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (4) Tj ET Q';
1259 $r_off = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (8) Tj ET Q';
1260 }
1261 else {
1262 $matrix = sprintf('%.3F 0 0 %.3F 0 %.3F', $form['style']['fontsize']*1.33/10, $form['style']['fontsize']*1.25/10, $form['style']['fontsize']);
1263 $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 ';
1264 $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 ';
1265 $r_on = 'q '.$matrix.' cm '.$fill .$radio_color.' rg '.$circle.' '.$radio_color.' rg
12665.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
1267f Q ';
1268 $r_off = 'q '.$matrix.' cm '.$fill .$radio_color.' rg '.$circle.' Q ';
1269 }
1270
1271 $this->mpdf->_newobj();
1272 $p=($this->mpdf->compress) ? gzcompress($r_on) : $r_on;
1273 $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
1274 $this->mpdf->_putstream($p);
1275 $this->mpdf->_out('endobj');
1276
1277 $this->mpdf->_newobj();
1278 $p=($this->mpdf->compress) ? gzcompress($r_off) : $r_off;
1279 $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
1280 $this->mpdf->_putstream($p);
1281 $this->mpdf->_out('endobj');
1282 }
1283 if ( $form['subtype'] == 'checkbox' ) {
1284 // First output appearance stream for check box on
1285 if ($this->formUseZapD) {
1286 $fs = sprintf('%.3F', $form['style']['fontsize']*1.25);
1287 $fi = 'czapfdingbats';
1288 $cb_on = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (4) Tj ET Q';
1289 $cb_off = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (8) Tj ET Q';
1290 }
1291 else {
1292 $matrix = sprintf('%.3F 0 0 %.3F 0 %.3F', $form['style']['fontsize']*1.33/10, $form['style']['fontsize']*1.25/10, $form['style']['fontsize']);
1293 $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 ';
1294 $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 ';
1295 $cb_on = 'q '.$matrix.' cm '.$fill. $radio_color.' rg '.$square.' f '.$radio_color.' rg
12966.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 ';
1297 $cb_off = 'q '.$matrix.' cm '.$fill. $radio_color.' rg '.$square.' f Q ';
1298
1299 }
1300 $this->mpdf->_newobj();
1301 $p=($this->mpdf->compress) ? gzcompress($cb_on) : $cb_on;
1302 $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
1303 $this->mpdf->_putstream($p);
1304 $this->mpdf->_out('endobj');
1305
1306 // output appearance stream for check box off (only if not using ZapfDingbats)
1307 if (!$this->formUseZapD) {
1308 $this->mpdf->_newobj();
1309 $p=($this->mpdf->compress) ? gzcompress($cb_off) : $cb_off;
1310 $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
1311 $this->mpdf->_putstream($p);
1312 $this->mpdf->_out('endobj');
1313 }
1314
1315 }
1316 return $n;
1317}
1318
1319
1320function _putform_ch( $form, $hPt ) {
1321 $put_js = 0;
1322 $this->mpdf->_newobj();
1323 $n = $this->mpdf->n;
1324 $this->pdf_acro_array .= $n.' 0 R ';
1325 $this->forms[ $form['n'] ]['obj'] = $n;
1326
1327 $this->mpdf->_out('<<');
1328 $this->mpdf->_out('/Type /Annot ');
1329 $this->mpdf->_out('/Subtype /Widget');
1330 $this->mpdf->_out('/Rect [ '.$this->_form_rect($form['x'],$form['y'],$form['w'],$form['h'], $hPt).' ]');
1331 $this->mpdf->_out('/F 4');
1332 $this->mpdf->_out('/FT /Ch');
1333 if ($form['Q']) $this->mpdf->_out('/Q '.$form['Q'].'');
1334 $temp = '';
1335 $temp .= '/W '.$form['BS_W'].' ';
1336 $temp .= '/S /'.$form['BS_S'].' ';
1337 $this->mpdf->_out("/BS << $temp >>");
1338
1339 $temp = '';
1340 $temp .= '/BC [ '.$form['BC_C']." ] ";
1341 $temp .= '/BG [ '.$form['BG_C']." ] ";
1342 $this->mpdf->_out('/MK << '.$temp.' >>');
1343
1344 $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (6000 + $form['n']))));
1345 $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis')));
1346
1347 $this->mpdf->_out('/T '.$this->mpdf->_textstring($form['T']) );
1348 $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
1349
1350 $opt = '';
1351 for( $i = 0; $i < count($form['OPT']['VAL']) ; $i++ ) {
1352 $opt .= '[ '.$this->mpdf->_textstring($form['OPT']['VAL'][$i]).' '.$this->mpdf->_textstring($form['OPT']['OPT'][$i]).' ] ';
1353 }
1354 $this->mpdf->_out('/Opt [ '.$opt.']');
1355
1356 // selected
1357 $selectItem = false;
1358 $selectIndex = false;
1359 foreach ( $form['OPT']['SEL'] as $selectKey => $selectVal ) {
1360 $selectName = $this->mpdf->_textstring($form['OPT']['VAL'][$selectVal]);
1361 $selectItem .= ' '.$selectName.' ';
1362 $selectIndex .= ' '.$selectVal.' ';
1363 }
1364 if ( $selectItem ) {
1365 if (count($form['OPT']['SEL']) < 2) {
1366 $this->mpdf->_out('/V '.$selectItem.' ');
1367 $this->mpdf->_out('/DV '.$selectItem.' ');
1368 }
1369 else {
1370 $this->mpdf->_out('/V ['.$selectItem.'] ');
1371 $this->mpdf->_out('/DV ['.$selectItem.'] ');
1372 }
1373 $this->mpdf->_out('/I ['.$selectIndex.'] ');
1374 }
1375
1376 if ( is_array($form['FF']) && count($form['FF'])>0 ) {
1377 $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']).' ');
1378 }
1379 // Javascript
1380 if ( isset($this->array_form_choice_js[$form['T']]) ) {
1381 $this->mpdf->_out("/AA << /V ".($this->mpdf->n+1)." 0 R >>");
1382 $put_js = 1;
1383 }
1384
1385 $this->mpdf->_out('>>');
1386 $this->mpdf->_out('endobj');
1387 // obj + 1
1388 if ( $put_js == 1 ) {
1389 $this->mpdf->_set_object_javascript( $this->array_form_choice_js[$form['T']]['js'] );
1390 unset( $this->array_form_choice_js[$form['T']] );
1391 $put_js = NULL;
1392 }
1393
1394 return $n;
1395}
1396
1397
1398function _putform_tx( $form, $hPt ) {
1399 $put_js = 0;
1400 $this->mpdf->_newobj();
1401 $n = $this->mpdf->n;
1402 $this->pdf_acro_array .= $n.' 0 R ';
1403 $this->forms[ $form['n'] ]['obj'] = $n;
1404
1405 $this->mpdf->_out('<<');
1406 $this->mpdf->_out('/Type /Annot ');
1407 $this->mpdf->_out('/Subtype /Widget ');
1408
1409 $this->mpdf->_out('/Rect [ '.$this->_form_rect($form['x'],$form['y'],$form['w'],$form['h'], $hPt).' ] ');
1410 $form['hidden'] ? $this->mpdf->_out('/F 2 ') : $this->mpdf->_out('/F 4 ');
1411 $this->mpdf->_out('/FT /Tx ');
1412
1413 $this->mpdf->_out('/H /N ');
1414 $this->mpdf->_out('/R 0 ');
1415
1416 if ( is_array($form['FF']) && count($form['FF'])>0 ) {
1417 $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']).' ');
1418 }
1419 if ( isset($form['maxlen']) && $form['maxlen']>0 ) {
1420 $this->mpdf->_out('/MaxLen '.$form['maxlen']);
1421 }
1422
1423 $temp = '';
1424 $temp .= '/W '.$form['BS_W'].' ';
1425 $temp .= '/S /'.$form['BS_S'].' ';
1426 $this->mpdf->_out("/BS << $temp >>");
1427
1428 $temp = '';
1429 $temp .= '/BC [ '.$form['BC_C']." ] ";
1430 $temp .= '/BG [ '.$form['BG_C']." ] ";
1431 $this->mpdf->_out('/MK <<'.$temp.' >>');
1432
1433 $this->mpdf->_out('/T '.$this->mpdf->_textstring($form['T']) );
1434 $this->mpdf->_out('/TU '.$this->mpdf->_textstring($form['TU']) );
1435 if ($form['V'] || $form['V']==='0')
1436 $this->mpdf->_out('/V '.$this->mpdf->_textstring($form['V']) );
1437 $this->mpdf->_out('/DV '.$this->mpdf->_textstring($form['DV']) );
1438 $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
1439 if ( $form['Q'] ) $this->mpdf->_out('/Q '.$form['Q'].'');
1440
1441 $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (5000 + $form['n']))));
1442 $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis')));
1443
1444
1445 if ( isset($this->array_form_text_js[$form['T']]) ) {
1446 $put_js = 1;
1447 $cc = 0;
1448 $js_str = '';
1449
1450 if ( isset($this->array_form_text_js[$form['T']]['F']) ) {
1451 $cc++;
1452 $js_str .= '/F '.($cc + $this->mpdf->n).' 0 R ';
1453 }
1454 if ( isset($this->array_form_text_js[$form['T']]['K']) ) {
1455 $cc++;
1456 $js_str .= '/K '.($cc + $this->mpdf->n).' 0 R ';
1457 }
1458 if ( isset($this->array_form_text_js[$form['T']]['V']) ) {
1459 $cc++;
1460 $js_str .= '/V '.($cc + $this->mpdf->n).' 0 R ';
1461 }
1462 if ( isset($this->array_form_text_js[$form['T']]['C']) ) {
1463 $cc++;
1464 $js_str .= '/C '.($cc + $this->mpdf->n).' 0 R ';
1465 $this->pdf_array_co .= $this->mpdf->n.' 0 R ';
1466 }
1467 $this->mpdf->_out('/AA << '.$js_str.' >>');
1468 }
1469
1470 $this->mpdf->_out('>>');
1471 $this->mpdf->_out('endobj');
1472
1473 if ( $put_js == 1 ) {
1474 if ( isset($this->array_form_text_js[$form['T']]['F']) ) {
1475 $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['F']['js'] );
1476 unset( $this->array_form_text_js[$form['T']]['F'] );
1477 }
1478 if ( isset($this->array_form_text_js[$form['T']]['K']) ) {
1479 $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['K']['js'] );
1480 unset( $this->array_form_text_js[$form['T']]['K'] );
1481 }
1482 if ( isset($this->array_form_text_js[$form['T']]['V']) ) {
1483 $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['V']['js'] );
1484 unset( $this->array_form_text_js[$form['T']]['V'] );
1485 }
1486 if ( isset($this->array_form_text_js[$form['T']]['C']) ) {
1487 $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['C']['js'] );
1488 unset( $this->array_form_text_js[$form['T']]['C'] );
1489 }
1490 }
1491 return $n;
1492}
1493
1494
1495
1496}
1497
1498?> \ 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
index 263513e2..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/gif.php
+++ /dev/null
@@ -1,700 +0,0 @@
1<?php
2///////////////////////////////////////////////////////////////////////////////////////////////////
3// 2009-12-22 Adapted for mPDF 4.2
4///////////////////////////////////////////////////////////////////////////////////////////////////
5// GIF Util - (C) 2003 Yamasoft (S/C)
6// http://www.yamasoft.com
7// All Rights Reserved
8// This file can be freely copied, distributed, modified, updated by anyone under the only
9// condition to leave the original address (Yamasoft, http://www.yamasoft.com) and this header.
10///////////////////////////////////////////////////////////////////////////////////////////////////
11///////////////////////////////////////////////////////////////////////////////////////////////////
12// 2009-12-22 Adapted INB
13// Functions calling functionname($x, $len = 0) were not working on PHP5.1.5 as pass by reference
14// All edited to $len = 0; then call function.
15///////////////////////////////////////////////////////////////////////////////////////////////////
16
17
18///////////////////////////////////////////////////////////////////////////////////////////////////
19
20class CGIFLZW
21{
22 var $MAX_LZW_BITS;
23 var $Fresh, $CodeSize, $SetCodeSize, $MaxCode, $MaxCodeSize, $FirstCode, $OldCode;
24 var $ClearCode, $EndCode, $Next, $Vals, $Stack, $sp, $Buf, $CurBit, $LastBit, $Done, $LastByte;
25
26 ///////////////////////////////////////////////////////////////////////////
27
28 // CONSTRUCTOR
29 function CGIFLZW()
30 {
31 $this->MAX_LZW_BITS = 12;
32 unSet($this->Next);
33 unSet($this->Vals);
34 unSet($this->Stack);
35 unSet($this->Buf);
36
37 $this->Next = range(0, (1 << $this->MAX_LZW_BITS) - 1);
38 $this->Vals = range(0, (1 << $this->MAX_LZW_BITS) - 1);
39 $this->Stack = range(0, (1 << ($this->MAX_LZW_BITS + 1)) - 1);
40 $this->Buf = range(0, 279);
41 }
42
43 ///////////////////////////////////////////////////////////////////////////
44
45 function deCompress($data, &$datLen)
46 {
47 $stLen = strlen($data);
48 $datLen = 0;
49 $ret = "";
50 $dp = 0; // data pointer
51
52 // INITIALIZATION
53 $this->LZWCommandInit($data, $dp);
54
55 while(($iIndex = $this->LZWCommand($data, $dp)) >= 0) {
56 $ret .= chr($iIndex);
57 }
58
59 $datLen = $dp;
60
61 if($iIndex != -2) {
62 return false;
63 }
64
65 return $ret;
66 }
67
68 ///////////////////////////////////////////////////////////////////////////
69 function LZWCommandInit(&$data, &$dp)
70 {
71 $this->SetCodeSize = ord($data[0]);
72 $dp += 1;
73
74 $this->CodeSize = $this->SetCodeSize + 1;
75 $this->ClearCode = 1 << $this->SetCodeSize;
76 $this->EndCode = $this->ClearCode + 1;
77 $this->MaxCode = $this->ClearCode + 2;
78 $this->MaxCodeSize = $this->ClearCode << 1;
79
80 $this->GetCodeInit($data, $dp);
81
82 $this->Fresh = 1;
83 for($i = 0; $i < $this->ClearCode; $i++) {
84 $this->Next[$i] = 0;
85 $this->Vals[$i] = $i;
86 }
87
88 for(; $i < (1 << $this->MAX_LZW_BITS); $i++) {
89 $this->Next[$i] = 0;
90 $this->Vals[$i] = 0;
91 }
92
93 $this->sp = 0;
94 return 1;
95 }
96
97 function LZWCommand(&$data, &$dp)
98 {
99 if($this->Fresh) {
100 $this->Fresh = 0;
101 do {
102 $this->FirstCode = $this->GetCode($data, $dp);
103 $this->OldCode = $this->FirstCode;
104 }
105 while($this->FirstCode == $this->ClearCode);
106
107 return $this->FirstCode;
108 }
109
110 if($this->sp > 0) {
111 $this->sp--;
112 return $this->Stack[$this->sp];
113 }
114
115 while(($Code = $this->GetCode($data, $dp)) >= 0) {
116 if($Code == $this->ClearCode) {
117 for($i = 0; $i < $this->ClearCode; $i++) {
118 $this->Next[$i] = 0;
119 $this->Vals[$i] = $i;
120 }
121
122 for(; $i < (1 << $this->MAX_LZW_BITS); $i++) {
123 $this->Next[$i] = 0;
124 $this->Vals[$i] = 0;
125 }
126
127 $this->CodeSize = $this->SetCodeSize + 1;
128 $this->MaxCodeSize = $this->ClearCode << 1;
129 $this->MaxCode = $this->ClearCode + 2;
130 $this->sp = 0;
131 $this->FirstCode = $this->GetCode($data, $dp);
132 $this->OldCode = $this->FirstCode;
133
134 return $this->FirstCode;
135 }
136
137 if($Code == $this->EndCode) {
138 return -2;
139 }
140
141 $InCode = $Code;
142 if($Code >= $this->MaxCode) {
143 $this->Stack[$this->sp++] = $this->FirstCode;
144 $Code = $this->OldCode;
145 }
146
147 while($Code >= $this->ClearCode) {
148 $this->Stack[$this->sp++] = $this->Vals[$Code];
149
150 if($Code == $this->Next[$Code]) // Circular table entry, big GIF Error!
151 return -1;
152
153 $Code = $this->Next[$Code];
154 }
155
156 $this->FirstCode = $this->Vals[$Code];
157 $this->Stack[$this->sp++] = $this->FirstCode;
158
159 if(($Code = $this->MaxCode) < (1 << $this->MAX_LZW_BITS)) {
160 $this->Next[$Code] = $this->OldCode;
161 $this->Vals[$Code] = $this->FirstCode;
162 $this->MaxCode++;
163
164 if(($this->MaxCode >= $this->MaxCodeSize) && ($this->MaxCodeSize < (1 << $this->MAX_LZW_BITS))) {
165 $this->MaxCodeSize *= 2;
166 $this->CodeSize++;
167 }
168 }
169
170 $this->OldCode = $InCode;
171 if($this->sp > 0) {
172 $this->sp--;
173 return $this->Stack[$this->sp];
174 }
175 }
176
177 return $Code;
178 }
179
180 ///////////////////////////////////////////////////////////////////////////
181
182 function GetCodeInit(&$data, &$dp)
183 {
184 $this->CurBit = 0;
185 $this->LastBit = 0;
186 $this->Done = 0;
187 $this->LastByte = 2;
188 return 1;
189 }
190
191 function GetCode(&$data, &$dp)
192 {
193 if(($this->CurBit + $this->CodeSize) >= $this->LastBit) {
194 if($this->Done) {
195 if($this->CurBit >= $this->LastBit) {
196 // Ran off the end of my bits
197 return 0;
198 }
199 return -1;
200 }
201
202 $this->Buf[0] = $this->Buf[$this->LastByte - 2];
203 $this->Buf[1] = $this->Buf[$this->LastByte - 1];
204
205 $Count = ord($data[$dp]);
206 $dp += 1;
207
208 if($Count) {
209 for($i = 0; $i < $Count; $i++) {
210 $this->Buf[2 + $i] = ord($data[$dp+$i]);
211 }
212 $dp += $Count;
213 }
214 else {
215 $this->Done = 1;
216 }
217
218 $this->LastByte = 2 + $Count;
219 $this->CurBit = ($this->CurBit - $this->LastBit) + 16;
220 $this->LastBit = (2 + $Count) << 3;
221 }
222
223 $iRet = 0;
224 for($i = $this->CurBit, $j = 0; $j < $this->CodeSize; $i++, $j++) {
225 $iRet |= (($this->Buf[intval($i / 8)] & (1 << ($i % 8))) != 0) << $j;
226 }
227
228 $this->CurBit += $this->CodeSize;
229 return $iRet;
230 }
231}
232
233///////////////////////////////////////////////////////////////////////////////////////////////////
234
235class CGIFCOLORTABLE
236{
237 var $m_nColors;
238 var $m_arColors;
239
240 ///////////////////////////////////////////////////////////////////////////
241
242 // CONSTRUCTOR
243 function CGIFCOLORTABLE()
244 {
245 unSet($this->m_nColors);
246 unSet($this->m_arColors);
247 }
248
249 ///////////////////////////////////////////////////////////////////////////
250
251 function load($lpData, $num)
252 {
253 $this->m_nColors = 0;
254 $this->m_arColors = array();
255
256 for($i = 0; $i < $num; $i++) {
257 $rgb = substr($lpData, $i * 3, 3);
258 if(strlen($rgb) < 3) {
259 return false;
260 }
261
262 $this->m_arColors[] = (ord($rgb[2]) << 16) + (ord($rgb[1]) << 8) + ord($rgb[0]);
263 $this->m_nColors++;
264 }
265
266 return true;
267 }
268
269 ///////////////////////////////////////////////////////////////////////////
270
271 function toString()
272 {
273 $ret = "";
274
275 for($i = 0; $i < $this->m_nColors; $i++) {
276 $ret .=
277 chr(($this->m_arColors[$i] & 0x000000FF)) . // R
278 chr(($this->m_arColors[$i] & 0x0000FF00) >> 8) . // G
279 chr(($this->m_arColors[$i] & 0x00FF0000) >> 16); // B
280 }
281
282 return $ret;
283 }
284
285
286 ///////////////////////////////////////////////////////////////////////////
287
288 function colorIndex($rgb)
289 {
290 $rgb = intval($rgb) & 0xFFFFFF;
291 $r1 = ($rgb & 0x0000FF);
292 $g1 = ($rgb & 0x00FF00) >> 8;
293 $b1 = ($rgb & 0xFF0000) >> 16;
294 $idx = -1;
295
296 for($i = 0; $i < $this->m_nColors; $i++) {
297 $r2 = ($this->m_arColors[$i] & 0x000000FF);
298 $g2 = ($this->m_arColors[$i] & 0x0000FF00) >> 8;
299 $b2 = ($this->m_arColors[$i] & 0x00FF0000) >> 16;
300 $d = abs($r2 - $r1) + abs($g2 - $g1) + abs($b2 - $b1);
301
302 if(($idx == -1) || ($d < $dif)) {
303 $idx = $i;
304 $dif = $d;
305 }
306 }
307
308 return $idx;
309 }
310}
311
312///////////////////////////////////////////////////////////////////////////////////////////////////
313
314class CGIFFILEHEADER
315{
316 var $m_lpVer;
317 var $m_nWidth;
318 var $m_nHeight;
319 var $m_bGlobalClr;
320 var $m_nColorRes;
321 var $m_bSorted;
322 var $m_nTableSize;
323 var $m_nBgColor;
324 var $m_nPixelRatio;
325 var $m_colorTable;
326
327 ///////////////////////////////////////////////////////////////////////////
328
329 // CONSTRUCTOR
330 function CGIFFILEHEADER()
331 {
332 unSet($this->m_lpVer);
333 unSet($this->m_nWidth);
334 unSet($this->m_nHeight);
335 unSet($this->m_bGlobalClr);
336 unSet($this->m_nColorRes);
337 unSet($this->m_bSorted);
338 unSet($this->m_nTableSize);
339 unSet($this->m_nBgColor);
340 unSet($this->m_nPixelRatio);
341 unSet($this->m_colorTable);
342 }
343
344 ///////////////////////////////////////////////////////////////////////////
345
346 function load($lpData, &$hdrLen)
347 {
348 $hdrLen = 0;
349
350 $this->m_lpVer = substr($lpData, 0, 6);
351 if(($this->m_lpVer <> "GIF87a") && ($this->m_lpVer <> "GIF89a")) {
352 return false;
353 }
354
355 $this->m_nWidth = $this->w2i(substr($lpData, 6, 2));
356 $this->m_nHeight = $this->w2i(substr($lpData, 8, 2));
357 if(!$this->m_nWidth || !$this->m_nHeight) {
358 return false;
359 }
360
361 $b = ord(substr($lpData, 10, 1));
362 $this->m_bGlobalClr = ($b & 0x80) ? true : false;
363 $this->m_nColorRes = ($b & 0x70) >> 4;
364 $this->m_bSorted = ($b & 0x08) ? true : false;
365 $this->m_nTableSize = 2 << ($b & 0x07);
366 $this->m_nBgColor = ord(substr($lpData, 11, 1));
367 $this->m_nPixelRatio = ord(substr($lpData, 12, 1));
368 $hdrLen = 13;
369
370 if($this->m_bGlobalClr) {
371 $this->m_colorTable = new CGIFCOLORTABLE();
372 if(!$this->m_colorTable->load(substr($lpData, $hdrLen), $this->m_nTableSize)) {
373 return false;
374 }
375 $hdrLen += 3 * $this->m_nTableSize;
376 }
377
378 return true;
379 }
380
381 ///////////////////////////////////////////////////////////////////////////
382
383 function w2i($str)
384 {
385 return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
386 }
387}
388
389///////////////////////////////////////////////////////////////////////////////////////////////////
390
391class CGIFIMAGEHEADER
392{
393 var $m_nLeft;
394 var $m_nTop;
395 var $m_nWidth;
396 var $m_nHeight;
397 var $m_bLocalClr;
398 var $m_bInterlace;
399 var $m_bSorted;
400 var $m_nTableSize;
401 var $m_colorTable;
402
403 ///////////////////////////////////////////////////////////////////////////
404
405 // CONSTRUCTOR
406 function CGIFIMAGEHEADER()
407 {
408 unSet($this->m_nLeft);
409 unSet($this->m_nTop);
410 unSet($this->m_nWidth);
411 unSet($this->m_nHeight);
412 unSet($this->m_bLocalClr);
413 unSet($this->m_bInterlace);
414 unSet($this->m_bSorted);
415 unSet($this->m_nTableSize);
416 unSet($this->m_colorTable);
417 }
418
419 ///////////////////////////////////////////////////////////////////////////
420
421 function load($lpData, &$hdrLen)
422 {
423 $hdrLen = 0;
424
425 $this->m_nLeft = $this->w2i(substr($lpData, 0, 2));
426 $this->m_nTop = $this->w2i(substr($lpData, 2, 2));
427 $this->m_nWidth = $this->w2i(substr($lpData, 4, 2));
428 $this->m_nHeight = $this->w2i(substr($lpData, 6, 2));
429
430 if(!$this->m_nWidth || !$this->m_nHeight) {
431 return false;
432 }
433
434 $b = ord($lpData{8});
435 $this->m_bLocalClr = ($b & 0x80) ? true : false;
436 $this->m_bInterlace = ($b & 0x40) ? true : false;
437 $this->m_bSorted = ($b & 0x20) ? true : false;
438 $this->m_nTableSize = 2 << ($b & 0x07);
439 $hdrLen = 9;
440
441 if($this->m_bLocalClr) {
442 $this->m_colorTable = new CGIFCOLORTABLE();
443 if(!$this->m_colorTable->load(substr($lpData, $hdrLen), $this->m_nTableSize)) {
444 return false;
445 }
446 $hdrLen += 3 * $this->m_nTableSize;
447 }
448
449 return true;
450 }
451
452 ///////////////////////////////////////////////////////////////////////////
453
454 function w2i($str)
455 {
456 return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
457 }
458}
459
460///////////////////////////////////////////////////////////////////////////////////////////////////
461
462class CGIFIMAGE
463{
464 var $m_disp;
465 var $m_bUser;
466 var $m_bTrans;
467 var $m_nDelay;
468 var $m_nTrans;
469 var $m_lpComm;
470 var $m_gih;
471 var $m_data;
472 var $m_lzw;
473
474 ///////////////////////////////////////////////////////////////////////////
475
476 function CGIFIMAGE()
477 {
478 unSet($this->m_disp);
479 unSet($this->m_bUser);
480 unSet($this->m_bTrans);
481 unSet($this->m_nDelay);
482 unSet($this->m_nTrans);
483 unSet($this->m_lpComm);
484 unSet($this->m_data);
485 $this->m_gih = new CGIFIMAGEHEADER();
486 $this->m_lzw = new CGIFLZW();
487 }
488
489 ///////////////////////////////////////////////////////////////////////////
490
491 function load($data, &$datLen)
492 {
493 $datLen = 0;
494
495 while(true) {
496 $b = ord($data[0]);
497 $data = substr($data, 1);
498 $datLen++;
499
500 switch($b) {
501 case 0x21: // Extension
502 $len = 0;
503 if(!$this->skipExt($data, $len)) {
504 return false;
505 }
506 $datLen += $len;
507 break;
508
509 case 0x2C: // Image
510 // LOAD HEADER & COLOR TABLE
511 $len = 0;
512 if(!$this->m_gih->load($data, $len)) {
513 return false;
514 }
515 $data = substr($data, $len);
516 $datLen += $len;
517
518 // ALLOC BUFFER
519 $len = 0;
520
521 if(!($this->m_data = $this->m_lzw->deCompress($data, $len))) {
522 return false;
523 }
524
525 $data = substr($data, $len);
526 $datLen += $len;
527
528 if($this->m_gih->m_bInterlace) {
529 $this->deInterlace();
530 }
531
532 return true;
533
534 case 0x3B: // EOF
535 default:
536 return false;
537 }
538 }
539 return false;
540 }
541
542 ///////////////////////////////////////////////////////////////////////////
543
544 function skipExt(&$data, &$extLen)
545 {
546 $extLen = 0;
547
548 $b = ord($data[0]);
549 $data = substr($data, 1);
550 $extLen++;
551
552 switch($b) {
553 case 0xF9: // Graphic Control
554 $b = ord($data[1]);
555 $this->m_disp = ($b & 0x1C) >> 2;
556 $this->m_bUser = ($b & 0x02) ? true : false;
557 $this->m_bTrans = ($b & 0x01) ? true : false;
558 $this->m_nDelay = $this->w2i(substr($data, 2, 2));
559 $this->m_nTrans = ord($data[4]);
560 break;
561
562 case 0xFE: // Comment
563 $this->m_lpComm = substr($data, 1, ord($data[0]));
564 break;
565
566 case 0x01: // Plain text
567 break;
568
569 case 0xFF: // Application
570 break;
571 }
572
573 // SKIP DEFAULT AS DEFS MAY CHANGE
574 $b = ord($data[0]);
575 $data = substr($data, 1);
576 $extLen++;
577 while($b > 0) {
578 $data = substr($data, $b);
579 $extLen += $b;
580 $b = ord($data[0]);
581 $data = substr($data, 1);
582 $extLen++;
583 }
584 return true;
585 }
586
587 ///////////////////////////////////////////////////////////////////////////
588
589 function w2i($str)
590 {
591 return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
592 }
593
594 ///////////////////////////////////////////////////////////////////////////
595
596 function deInterlace()
597 {
598 $data = $this->m_data;
599
600 for($i = 0; $i < 4; $i++) {
601 switch($i) {
602 case 0:
603 $s = 8;
604 $y = 0;
605 break;
606
607 case 1:
608 $s = 8;
609 $y = 4;
610 break;
611
612 case 2:
613 $s = 4;
614 $y = 2;
615 break;
616
617 case 3:
618 $s = 2;
619 $y = 1;
620 break;
621 }
622
623 for(; $y < $this->m_gih->m_nHeight; $y += $s) {
624 $lne = substr($this->m_data, 0, $this->m_gih->m_nWidth);
625 $this->m_data = substr($this->m_data, $this->m_gih->m_nWidth);
626
627 $data =
628 substr($data, 0, $y * $this->m_gih->m_nWidth) .
629 $lne .
630 substr($data, ($y + 1) * $this->m_gih->m_nWidth);
631 }
632 }
633
634 $this->m_data = $data;
635 }
636}
637
638///////////////////////////////////////////////////////////////////////////////////////////////////
639
640class CGIF
641{
642 var $m_gfh;
643 var $m_lpData;
644 var $m_img;
645 var $m_bLoaded;
646
647 ///////////////////////////////////////////////////////////////////////////
648
649 // CONSTRUCTOR
650 function CGIF()
651 {
652 $this->m_gfh = new CGIFFILEHEADER();
653 $this->m_img = new CGIFIMAGE();
654 $this->m_lpData = "";
655 $this->m_bLoaded = false;
656 }
657
658 ///////////////////////////////////////////////////////////////////////////
659 function ClearData() {
660 $this->m_lpData = '';
661 unSet($this->m_img->m_data);
662 unSet($this->m_img->m_lzw->Next);
663 unSet($this->m_img->m_lzw->Vals);
664 unSet($this->m_img->m_lzw->Stack);
665 unSet($this->m_img->m_lzw->Buf);
666 }
667
668 function loadFile(&$data, $iIndex)
669 {
670 if($iIndex < 0) {
671 return false;
672 }
673 $this->m_lpData = $data;
674
675 // GET FILE HEADER
676 $len = 0;
677 if(!$this->m_gfh->load($this->m_lpData, $len)) {
678 return false;
679 }
680
681 $this->m_lpData = substr($this->m_lpData, $len);
682
683 do {
684 $imgLen = 0;
685 if(!$this->m_img->load($this->m_lpData, $imgLen)) {
686 return false;
687 }
688 $this->m_lpData = substr($this->m_lpData, $imgLen);
689 }
690 while($iIndex-- > 0);
691
692 $this->m_bLoaded = true;
693 return true;
694 }
695
696}
697
698///////////////////////////////////////////////////////////////////////////////////////////////////
699
700?> \ 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
index 2691bf5d..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/grad.php
+++ /dev/null
@@ -1,723 +0,0 @@
1<?php
2
3class grad {
4
5var $mpdf = null;
6
7function grad(&$mpdf) {
8 $this->mpdf = $mpdf;
9}
10
11// mPDF 5.3.A1
12function CoonsPatchMesh($x, $y, $w, $h, $patch_array=array(), $x_min=0, $x_max=1, $y_min=0, $y_max=1, $colspace='RGB', $return=false){
13 $s=' q ';
14 $s.=sprintf(' %.3F %.3F %.3F %.3F re W n ', $x*_MPDFK, ($this->mpdf->h-$y)*_MPDFK, $w*_MPDFK, -$h*_MPDFK);
15 $s.=sprintf(' %.3F 0 0 %.3F %.3F %.3F cm ', $w*_MPDFK, $h*_MPDFK, $x*_MPDFK, ($this->mpdf->h-($y+$h))*_MPDFK);
16 $n = count($this->mpdf->gradients)+1;
17 $this->mpdf->gradients[$n]['type'] = 6; //coons patch mesh
18 $this->mpdf->gradients[$n]['colorspace'] = $colspace; //coons patch mesh
19 $bpcd=65535; //16 BitsPerCoordinate
20 $trans = false;
21 $this->mpdf->gradients[$n]['stream']='';
22 for($i=0;$i<count($patch_array);$i++){
23 $this->mpdf->gradients[$n]['stream'].=chr($patch_array[$i]['f']); //start with the edge flag as 8 bit
24 for($j=0;$j<count($patch_array[$i]['points']);$j++){
25 //each point as 16 bit
26 if (($j % 2) == 1) { // Y coordinate (adjusted as input is From top left)
27 $patch_array[$i]['points'][$j]=(($patch_array[$i]['points'][$j]-$y_min)/($y_max-$y_min))*$bpcd;
28 $patch_array[$i]['points'][$j]=$bpcd-$patch_array[$i]['points'][$j];
29 }
30 else {
31 $patch_array[$i]['points'][$j]=(($patch_array[$i]['points'][$j]-$x_min)/($x_max-$x_min))*$bpcd;
32 }
33 if($patch_array[$i]['points'][$j]<0) $patch_array[$i]['points'][$j]=0;
34 if($patch_array[$i]['points'][$j]>$bpcd) $patch_array[$i]['points'][$j]=$bpcd;
35 $this->mpdf->gradients[$n]['stream'].=chr(floor($patch_array[$i]['points'][$j]/256));
36 $this->mpdf->gradients[$n]['stream'].=chr(floor($patch_array[$i]['points'][$j]%256));
37 }
38 for($j=0;$j<count($patch_array[$i]['colors']);$j++){
39 //each color component as 8 bit
40 if ($colspace=='RGB') {
41 $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][1]);
42 $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][2]);
43 $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][3]);
44 if (isset($patch_array[$i]['colors'][$j][4]) && ord($patch_array[$i]['colors'][$j][4])<100) { $trans = true; }
45 }
46 else if ($colspace=='CMYK') {
47 $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][1])*2.55);
48 $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][2])*2.55);
49 $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][3])*2.55);
50 $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][4])*2.55);
51 if (isset($patch_array[$i]['colors'][$j][5]) && ord($patch_array[$i]['colors'][$j][5])<100) { $trans = true; }
52 }
53 else if ($colspace=='Gray') {
54 $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][1]);
55 if ($patch_array[$i]['colors'][$j][2]==1) { $trans = true; } // transparency converted from rgba or cmyka()
56 }
57 }
58 }
59 // TRANSPARENCY
60 if ($trans) {
61 $this->mpdf->gradients[$n]['stream_trans']='';
62 for($i=0;$i<count($patch_array);$i++){
63 $this->mpdf->gradients[$n]['stream_trans'].=chr($patch_array[$i]['f']);
64 for($j=0;$j<count($patch_array[$i]['points']);$j++){
65 //each point as 16 bit
66 $this->mpdf->gradients[$n]['stream_trans'].=chr(floor($patch_array[$i]['points'][$j]/256));
67 $this->mpdf->gradients[$n]['stream_trans'].=chr(floor($patch_array[$i]['points'][$j]%256));
68 }
69 for($j=0;$j<count($patch_array[$i]['colors']);$j++){
70 //each color component as 8 bit // OPACITY
71 if ($colspace=='RGB') {
72 $this->mpdf->gradients[$n]['stream_trans'].=chr(intval(ord($patch_array[$i]['colors'][$j][4])*2.55));
73 }
74 else if ($colspace=='CMYK') {
75 $this->mpdf->gradients[$n]['stream_trans'].=chr(intval(ord($patch_array[$i]['colors'][$j][5])*2.55));
76 }
77 else if ($colspace=='Gray') {
78 $this->mpdf->gradients[$n]['stream_trans'].=chr(intval(ord($patch_array[$i]['colors'][$j][3])*2.55));
79 }
80 }
81 }
82 $this->mpdf->gradients[$n]['trans'] = true;
83 $s .= ' /TGS'.$n.' gs ';
84 }
85 //paint the gradient
86 $s .= '/Sh'.$n.' sh'."\n";
87 //restore previous Graphic State
88 $s .= 'Q'."\n";
89 if ($return) { return $s; }
90 else { $this->mpdf->_out($s); }
91}
92
93
94// type = linear:2; radial: 3;
95// Linear: $coords - array of the form (x1, y1, x2, y2) which defines the gradient vector (see linear_gradient_coords.jpg).
96// The default value is from left to right (x1=0, y1=0, x2=1, y2=0).
97// Radial: $coords - array of the form (fx, fy, cx, cy, r) where (fx, fy) is the starting point of the gradient with color1,
98// (cx, cy) is the center of the circle with color2, and r is the radius of the circle (see radial_gradient_coords.jpg).
99// (fx, fy) should be inside the circle, otherwise some areas will not be defined
100// $col = array(R,G,B/255); or array(G/255); or array(C,M,Y,K/100)
101// $stops = array('col'=>$col [, 'opacity'=>0-1] [, 'offset'=>0-1])
102function Gradient($x, $y, $w, $h, $type, $stops=array(), $colorspace='RGB', $coords='', $extend='', $return=false, $is_mask=false) {
103 if (strtoupper(substr($type,0,1)) == 'L') { $type = 2; } // linear
104 else if (strtoupper(substr($type,0,1)) == 'R') { $type = 3; } // radial
105 if ($colorspace != 'CMYK' && $colorspace != 'Gray') {
106 $colorspace = 'RGB';
107 }
108 $bboxw = $w;
109 $bboxh = $h;
110 $usex = $x;
111 $usey = $y;
112 $usew = $bboxw;
113 $useh = $bboxh;
114 if ($type < 1) { $type = 2; }
115 if ($coords[0]!==false && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$coords[0],$m)) {
116 $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
117 if ($tmp) { $coords[0] = $tmp/$w; }
118 }
119 if ($coords[1]!==false && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$coords[1],$m)) {
120 $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
121 if ($tmp) { $coords[1] = 1-($tmp/$h); }
122 }
123 // LINEAR
124 if ($type == 2) {
125 $angle = $coords[4];
126 $repeat = $coords[5];
127 // ALL POINTS SET (default for custom mPDF linear gradient) - no -moz
128 if ($coords[0]!==false && $coords[1]!==false && $coords[2]!==false && $coords[3]!==false) {
129 // do nothing - coords used as they are
130 }
131
132 // If both a <point> and <angle> are defined, the gradient axis starts from the point and runs along the angle. The end point is
133 // defined as before - in this case start points may not be in corners, and axis may not correctly fall in the right quadrant.
134 // NO end points (Angle defined & Start points)
135 else if ($angle!==false && $coords[0]!==false && $coords[1]!==false && $coords[2]===false && $coords[3]===false) {
136 if ($angle==0 || $angle==360) { $coords[3]=$coords[1]; if ($coords[0]==1) $coords[2]=2; else $coords[2]=1; }
137 else if ($angle==90) { $coords[2]=$coords[0]; $coords[3]=1; if ($coords[1]==1) $coords[3]=2; else $coords[3]=1; }
138 else if ($angle==180) { if ($coords[4]==0) $coords[2]=-1; else $coords[2]=0; $coords[3]=$coords[1]; }
139 else if ($angle==270) { $coords[2]=$coords[0]; if ($coords[1]==0) $coords[3]=-1; else $coords[3]=0; }
140 else {
141 $endx=1; $endy=1;
142 if ($angle <=90) {
143 if ($angle <=45) { $endy=tan(deg2rad($angle)); }
144 else { $endx=tan(deg2rad(90-$angle)); }
145 $b = atan2(($endy*$bboxh), ($endx*$bboxw));
146 $ny = 1 - $coords[1] - (tan($b) * (1-$coords[0]));
147 $tx = sin($b) * cos($b) * $ny;
148 $ty = cos($b) * cos($b) * $ny;
149 $coords[2] = 1+$tx; $coords[3] = 1-$ty;
150 }
151 else if ($angle <=180) {
152 if ($angle <=135) { $endx=tan(deg2rad($angle-90)); }
153 else { $endy=tan(deg2rad(180-$angle)); }
154 $b = atan2(($endy*$bboxh), ($endx*$bboxw));
155 $ny = 1 - $coords[1] - (tan($b) * ($coords[0]));
156 $tx = sin($b) * cos($b) * $ny;
157 $ty = cos($b) * cos($b) * $ny;
158 $coords[2] = -$tx; $coords[3] = 1-$ty;
159 }
160 else if ($angle <=270) {
161 if ($angle <=225) { $endy=tan(deg2rad($angle-180)); }
162 else { $endx=tan(deg2rad(270-$angle)); }
163 $b = atan2(($endy*$bboxh), ($endx*$bboxw));
164 $ny = $coords[1] - (tan($b) * ($coords[0]));
165 $tx = sin($b) * cos($b) * $ny;
166 $ty = cos($b) * cos($b) * $ny;
167 $coords[2] = -$tx; $coords[3] = $ty;
168 }
169 else {
170 if ($angle <=315) { $endx=tan(deg2rad($angle-270)); }
171 else { $endy=tan(deg2rad(360-$angle)); }
172 $b = atan2(($endy*$bboxh), ($endx*$bboxw));
173 $ny = $coords[1] - (tan($b) * (1-$coords[0]));
174 $tx = sin($b) * cos($b) * $ny;
175 $ty = cos($b) * cos($b) * $ny;
176 $coords[2] = 1+$tx; $coords[3] = $ty;
177
178 }
179 }
180 }
181
182 // -moz If the first parameter is only an <angle>, the gradient axis starts from the box's corner that would ensure the
183 // axis goes through the box. The axis runs along the specified angle. The end point of the axis is defined such that the
184 // farthest corner of the box from the starting point is perpendicular to the gradient axis at that point.
185 // NO end points or Start points (Angle defined)
186 else if ($angle!==false && $coords[0]===false && $coords[1]===false) {
187 if ($angle==0 || $angle==360) { $coords[0]=0; $coords[1]=0; $coords[2]=1; $coords[3]=0; }
188 else if ($angle==90) { $coords[0]=0; $coords[1]=0; $coords[2]=0; $coords[3]=1; }
189 else if ($angle==180) { $coords[0]=1; $coords[1]=0; $coords[2]=0; $coords[3]=0; }
190 else if ($angle==270) { $coords[0]=0; $coords[1]=1; $coords[2]=0; $coords[3]=0; }
191 else {
192 if ($angle <=90) {
193 $coords[0]=0; $coords[1]=0;
194 if ($angle <=45) { $endx=1; $endy=tan(deg2rad($angle)); }
195 else { $endx=tan(deg2rad(90-$angle)); $endy=1; }
196 }
197 else if ($angle <=180) {
198 $coords[0]=1; $coords[1]=0;
199 if ($angle <=135) { $endx=tan(deg2rad($angle-90)); $endy=1; }
200 else { $endx=1; $endy=tan(deg2rad(180-$angle)); }
201 }
202 else if ($angle <=270) {
203 $coords[0]=1; $coords[1]=1;
204 if ($angle <=225) { $endx=1; $endy=tan(deg2rad($angle-180)); }
205 else { $endx=tan(deg2rad(270-$angle)); $endy=1; }
206 }
207 else {
208 $coords[0]=0; $coords[1]=1;
209 if ($angle <=315) { $endx=tan(deg2rad($angle-270)); $endy=1; }
210 else { $endx=1; $endy=tan(deg2rad(360-$angle)); }
211 }
212 $b = atan2(($endy*$bboxh), ($endx*$bboxw));
213 $h2 = $bboxh - ($bboxh * tan($b));
214 $px = $bboxh + ($h2 * sin($b) * cos($b));
215 $py = ($bboxh * tan($b)) + ($h2 * sin($b) * sin($b));
216 $x1 = $px / $bboxh;
217 $y1 = $py / $bboxh;
218 if ($angle <=90) { $coords[2] = $x1; $coords[3] = $y1; }
219 else if ($angle <=180) { $coords[2] = 1-$x1; $coords[3] = $y1; }
220 else if ($angle <=270) { $coords[2] = 1-$x1; $coords[3] = 1-$y1; }
221 else { $coords[2] = $x1; $coords[3] = 1-$y1; }
222 }
223 }
224 // -moz If the first parameter to the gradient function is only a <point>, the gradient axis starts from the specified point,
225 // 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
226 // gradient is to be applied to.
227 // NO angle and NO end points (Start points defined)
228 else if ((!isset($angle) || $angle===false) && $coords[0]!==false && $coords[1]!==false) { // should have start and end defined
229 $coords[2] = 1-$coords[0]; $coords[3] = 1-$coords[1];
230 $angle = rad2deg(atan2($coords[3]-$coords[1],$coords[2]-$coords[0]));
231 if ($angle < 0) { $angle += 360; }
232 else if ($angle > 360) { $angle -= 360; }
233 if ($angle!=0 && $angle!=360 && $angle!=90 && $angle!=180 && $angle!=270) {
234 if ($w >= $h) {
235 $coords[1] *= $h/$w ;
236 $coords[3] *= $h/$w ;
237 $usew = $useh = $bboxw;
238 $usey -= ($w-$h);
239 }
240 else {
241 $coords[0] *= $w/$h ;
242 $coords[2] *= $w/$h ;
243 $usew = $useh = $bboxh;
244 }
245 }
246 }
247
248 // -moz If neither a <point> or <angle> is specified, i.e. the entire function consists of only <stop> values, the gradient
249 // axis starts from the top of the box and runs vertically downwards, ending at the bottom of the box.
250 else { // default values T2B
251 // All values are set in parseMozGradient - so won't appear here
252 $coords = array(0,0,1,0); // default for original linear gradient (L2R)
253 }
254 $s = ' q';
255 $s .= sprintf(' %.3F %.3F %.3F %.3F re W n', $x*_MPDFK, ($this->mpdf->h-$y)*_MPDFK, $w*_MPDFK, -$h*_MPDFK)."\n";
256 $s .= sprintf(' %.3F 0 0 %.3F %.3F %.3F cm', $usew*_MPDFK, $useh*_MPDFK, $usex*_MPDFK, ($this->mpdf->h-($usey+$useh))*_MPDFK)."\n";
257 }
258
259 // RADIAL
260 else if ($type == 3) {
261 $radius = $coords[4];
262 $angle = $coords[5]; // ?? no effect
263 $shape = $coords[6];
264 $size = $coords[7];
265 $repeat = $coords[8];
266 // ALL POINTS AND RADIUS SET (default for custom mPDF radial gradient) - no -moz
267 if ($coords[0]!==false && $coords[1]!==false && $coords[2]!==false && $coords[3]!==false && $coords[4]!==false) {
268 // do nothing - coords used as they are
269 }
270 // If a <point> is defined
271 else if ($shape!==false && $size!==false) {
272 if ($coords[2]==false) { $coords[2] = $coords[0]; }
273 if ($coords[3]==false) { $coords[3] = $coords[1]; }
274 // ELLIPSE
275 if ($shape=='ellipse') {
276 $corner1 = sqrt(pow($coords[0],2) + pow($coords[1],2));
277 $corner2 = sqrt(pow($coords[0],2) + pow((1-$coords[1]),2));
278 $corner3 = sqrt(pow((1-$coords[0]),2) + pow($coords[1],2));
279 $corner4 = sqrt(pow((1-$coords[0]),2) + pow((1-$coords[1]),2));
280 if ($size=='closest-side') { $radius = min($coords[0], $coords[1], (1-$coords[0]), (1-$coords[1])); }
281 else if ($size=='closest-corner') { $radius = min($corner1, $corner2, $corner3, $corner4); }
282 else if ($size=='farthest-side') { $radius = max($coords[0], $coords[1], (1-$coords[0]), (1-$coords[1])); }
283 else { $radius = max($corner1, $corner2, $corner3, $corner4); } // farthest corner (default)
284 }
285 // CIRCLE
286 else if ($shape=='circle') {
287 if ($w >= $h) {
288 $coords[1] = $coords[3] = ($coords[1] * $h/$w) ;
289 $corner1 = sqrt(pow($coords[0],2) + pow($coords[1],2));
290 $corner2 = sqrt(pow($coords[0],2) + pow((($h/$w)-$coords[1]),2));
291 $corner3 = sqrt(pow((1-$coords[0]),2) + pow($coords[1],2));
292 $corner4 = sqrt(pow((1-$coords[0]),2) + pow((($h/$w)-$coords[1]),2));
293 if ($size=='closest-side') { $radius = min($coords[0], $coords[1], (1-$coords[0]), (($h/$w)-$coords[1])); }
294 else if ($size=='closest-corner') { $radius = min($corner1, $corner2, $corner3, $corner4); }
295 else if ($size=='farthest-side') { $radius = max($coords[0], $coords[1], (1-$coords[0]), (($h/$w)-$coords[1])); }
296 else if ($size=='farthest-corner') { $radius = max($corner1, $corner2, $corner3, $corner4); } // farthest corner (default)
297 $usew = $useh = $bboxw;
298 $usey -= ($w-$h);
299 }
300 else {
301 $coords[0] = $coords[2] = ($coords[0] * $w/$h) ;
302 $corner1 = sqrt(pow($coords[0],2) + pow($coords[1],2));
303 $corner2 = sqrt(pow($coords[0],2) + pow((1-$coords[1]),2));
304 $corner3 = sqrt(pow((($w/$h)-$coords[0]),2) + pow($coords[1],2));
305 $corner4 = sqrt(pow((($w/$h)-$coords[0]),2) + pow((1-$coords[1]),2));
306 if ($size=='closest-side') { $radius = min($coords[0], $coords[1], (($w/$h)-$coords[0]), (1-$coords[1])); }
307 else if ($size=='closest-corner') { $radius = min($corner1, $corner2, $corner3, $corner4); }
308 else if ($size=='farthest-side') { $radius = max($coords[0], $coords[1], (($w/$h)-$coords[0]), (1-$coords[1])); }
309 else if ($size=='farthest-corner') { $radius = max($corner1, $corner2, $corner3, $corner4); } // farthest corner (default)
310 $usew = $useh = $bboxh;
311 }
312 }
313 if ($radius==0) { $radius=0.001; } // to prevent error
314 $coords[4] = $radius;
315 }
316
317 // -moz If entire function consists of only <stop> values
318 else { // default values
319 // All values are set in parseMozGradient - so won't appear here
320 $coords = array(0.5,0.5,0.5,0.5); // default for radial gradient (centred)
321 }
322 $s = ' q';
323 $s .= sprintf(' %.3F %.3F %.3F %.3F re W n', $x*_MPDFK, ($this->mpdf->h-$y)*_MPDFK, $w*_MPDFK, -$h*_MPDFK)."\n";
324 $s .= sprintf(' %.3F 0 0 %.3F %.3F %.3F cm', $usew*_MPDFK, $useh*_MPDFK, $usex*_MPDFK, ($this->mpdf->h-($usey+$useh))*_MPDFK)."\n";
325 }
326
327 $n = count($this->mpdf->gradients) + 1;
328 $this->mpdf->gradients[$n]['type'] = $type;
329 $this->mpdf->gradients[$n]['colorspace'] = $colorspace;
330 $trans = false;
331 $this->mpdf->gradients[$n]['is_mask'] = $is_mask;
332 if ($is_mask) { $trans = true; }
333 if (count($stops) == 1) { $stops[1] = $stops[0]; }
334 if (!isset($stops[0]['offset'])) { $stops[0]['offset'] = 0; }
335 if (!isset($stops[(count($stops)-1)]['offset'])) { $stops[(count($stops)-1)]['offset'] = 1; }
336
337 // Fix stop-offsets set as absolute lengths
338 if ($type==2) {
339 $axisx = ($coords[2]-$coords[0])*$usew;
340 $axisy = ($coords[3]-$coords[1])*$useh;
341 $axis_length = sqrt(pow($axisx,2) + pow($axisy,2));
342 }
343 else { $axis_length = $coords[4]*$usew; } // Absolute lengths are meaningless for an ellipse - Firefox uses Width as reference
344
345 for($i=0;$i<count($stops);$i++) {
346 if (isset($stops[$i]['offset']) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$stops[$i]['offset'],$m)) {
347 $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
348 $stops[$i]['offset'] = $tmp/$axis_length;
349 }
350 }
351
352
353 if (isset($stops[0]['offset']) && $stops[0]['offset']>0) {
354 $firststop = $stops[0];
355 $firststop['offset'] = 0;
356 array_unshift($stops, $firststop);
357 }
358 if (!$repeat && isset($stops[(count($stops)-1)]['offset']) && $stops[(count($stops)-1)]['offset']<1) {
359 $endstop = $stops[(count($stops)-1)];
360 $endstop['offset'] = 1;
361 $stops[] = $endstop;
362 }
363 if ($stops[0]['offset'] > $stops[(count($stops)-1)]['offset']) {
364 $stops[0]['offset'] = 0;
365 $stops[(count($stops)-1)]['offset'] = 1;
366 }
367
368 for($i=0;$i<count($stops);$i++) {
369 // mPDF 5.3.74
370 if ($colorspace == 'CMYK') {
371 $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));
372 }
373 else if ($colorspace == 'Gray') {
374 $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F', (ord($stops[$i]['col']{1})/255));
375 }
376 else {
377 $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));
378 }
379 if (!isset($stops[$i]['opacity'])) { $stops[$i]['opacity'] = 1; }
380 else if ($stops[$i]['opacity'] > 1 || $stops[$i]['opacity'] < 0) { $stops[$i]['opacity'] = 1; }
381 else if ($stops[$i]['opacity'] < 1) {
382 $trans = true;
383 }
384 $this->mpdf->gradients[$n]['stops'][$i]['opacity'] = $stops[$i]['opacity'];
385 // OFFSET
386 if ($i>0 && $i<(count($stops)-1)) {
387 if (!isset($stops[$i]['offset']) || (isset($stops[$i+1]['offset']) && $stops[$i]['offset']>$stops[$i+1]['offset']) || $stops[$i]['offset']<$stops[$i-1]['offset']) {
388 if (isset($stops[$i-1]['offset']) && isset($stops[$i+1]['offset'])) {
389 $stops[$i]['offset'] = ($stops[$i-1]['offset']+$stops[$i+1]['offset'])/2;
390 }
391 else {
392 for($j=($i+1);$j<count($stops);$j++) {
393 if(isset($stops[$j]['offset'])) { break; }
394 }
395 $int = ($stops[$j]['offset'] - $stops[($i-1)]['offset'])/($j-$i+1);
396 for($f=0;$f<($j-$i-1);$f++) {
397 $stops[($i+$f)]['offset'] = $stops[($i+$f-1)]['offset'] + ($int);
398 }
399 }
400 }
401 }
402 $this->mpdf->gradients[$n]['stops'][$i]['offset'] = $stops[$i]['offset'];
403 $this->mpdf->gradients[$n]['stops'][$i]['offset'] = $stops[$i]['offset'];
404 }
405
406 if ($repeat) {
407 $ns = count($this->mpdf->gradients[$n]['stops']);
408 $offs = array();
409 for($i=0;$i<$ns;$i++) {
410 $offs[$i] = $this->mpdf->gradients[$n]['stops'][$i]['offset'];
411 }
412 $gp = 0;
413 $inside=true;
414 while($inside) {
415 $gp++;
416 for($i=0;$i<$ns;$i++) {
417 $this->mpdf->gradients[$n]['stops'][(($ns*$gp)+$i)] = $this->mpdf->gradients[$n]['stops'][(($ns*($gp-1))+$i)];
418 $tmp = $this->mpdf->gradients[$n]['stops'][(($ns*($gp-1))+($ns-1))]['offset']+$offs[$i] ;
419 if ($tmp < 1) { $this->mpdf->gradients[$n]['stops'][(($ns*$gp)+$i)]['offset'] = $tmp; }
420 else {
421 $this->mpdf->gradients[$n]['stops'][(($ns*$gp)+$i)]['offset'] = 1;
422 $inside = false;
423 break(2);
424 }
425 }
426 }
427 }
428
429 if ($trans) {
430 $this->mpdf->gradients[$n]['trans'] = true;
431 $s .= ' /TGS'.$n.' gs ';
432 }
433 if (!is_array($extend) || count($extend) <1) {
434 $extend=array('true', 'true'); // These are supposed to be quoted - appear in PDF file as text
435 }
436 $this->mpdf->gradients[$n]['coords'] = $coords;
437 $this->mpdf->gradients[$n]['extend'] = $extend;
438 //paint the gradient
439 $s .= '/Sh'.$n.' sh '."\n";
440 //restore previous Graphic State
441 $s .= ' Q '."\n";
442 if ($return) { return $s; }
443 else { $this->mpdf->_out($s); }
444}
445
446
447function parseMozGradient($bg) {
448 // background[-image]: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 );
449 // background[-image]: linear-gradient(left, #c7Fdde 20%, #FF0000 ); // CSS3
450 if (preg_match('/repeating-/',$bg)) { $repeat = true; }
451 else { $repeat = false; }
452 if (preg_match('/linear-gradient\((.*)\)/',$bg,$m)) {
453 $g = array();
454 $g['type'] = 2;
455 $g['colorspace'] = 'RGB';
456 $g['extend'] = array('true','true');
457 $v = trim($m[1]);
458 // Change commas inside e.g. rgb(x,x,x)
459 while(preg_match('/(\([^\)]*?),/',$v)) { $v = preg_replace('/(\([^\)]*?),/','\\1@',$v); }
460 // Remove spaces inside e.g. rgb(x, x, x)
461 while(preg_match('/(\([^\)]*?)[ ]/',$v)) { $v = preg_replace('/(\([^\)]*?)[ ]/','\\1',$v); }
462 $bgr = preg_split('/\s*,\s*/',$v);
463 for($i=0;$i<count($bgr);$i++) { $bgr[$i] = preg_replace('/@/', ',', $bgr[$i]); }
464 // Is first part $bgr[0] a valid point/angle?
465 $first = preg_split('/\s+/',trim($bgr[0]));
466 if (preg_match('/(left|center|right|bottom|top|deg|grad|rad)/i',$bgr[0]) && !preg_match('/(<#|rgb|rgba|hsl|hsla)/i',$bgr[0])) {
467 $startStops = 1;
468 }
469 else if (trim($first[(count($first)-1)]) === "0") {
470 $startStops = 1;
471 }
472 else {
473 $check = $this->mpdf->ConvertColor($first[0]);
474 if ($check) $startStops = 0;
475 else $startStops = 1;
476 }
477 // first part a valid point/angle?
478 if ($startStops == 1) { // default values
479 // [<point> || <angle>,] = [<% em px left center right bottom top> || <deg grad rad 0>,]
480 if (preg_match('/([\-]*[0-9\.]+)(deg|grad|rad)/i',$bgr[0],$m)) {
481 $angle = $m[1] + 0;
482 if (strtolower($m[2])=='deg') { $angle = $angle; }
483 else if (strtolower($m[2])=='grad') { $angle *= (360/400); }
484 else if (strtolower($m[2])=='rad') { $angle = rad2deg($angle); }
485 while($angle < 0) { $angle += 360; }
486 $angle = ($angle % 360);
487 }
488 else if (trim($first[(count($first)-1)]) === "0") { $angle = 0; }
489 if (preg_match('/left/i',$bgr[0])) { $startx = 0; }
490 else if (preg_match('/right/i',$bgr[0])) { $startx = 1; }
491 if (preg_match('/top/i',$bgr[0])) { $starty = 1; }
492 else if (preg_match('/bottom/i',$bgr[0])) { $starty = 0; }
493 // Check for %? ?% or %%
494 if (preg_match('/(\d+)[%]/i',$first[0],$m)) { $startx = $m[1]/100; }
495 else if (!isset($startx) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[0],$m)) {
496 $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
497 if ($tmp) { $startx = $m[1]; }
498 }
499 if (isset($first[1]) && preg_match('/(\d+)[%]/i',$first[1],$m)) { $starty = 1 - ($m[1]/100); }
500 else if (!isset($starty) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[1],$m)) {
501 $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
502 if ($tmp) { $starty = $m[1]; }
503 }
504 if (isset($startx) && !isset($starty)) { $starty = 0.5; }
505 if (!isset($startx) && isset($starty)) { $startx = 0.5; }
506
507 }
508 // 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.
509 else { // default values T2B
510 $starty = 1; $startx = 0.5;
511 $endy = 0; $endx = 0.5;
512 }
513 $coords = array();
514 if (!isset($startx)) { $startx = false; }
515 if (!isset($starty)) { $starty = false; }
516 if (!isset($endx)) { $endx = false; }
517 if (!isset($endy)) { $endy = false; }
518 if (!isset($angle)) { $angle = false; }
519 $g['coords'] = array($startx ,$starty ,$endx ,$endy, $angle, $repeat );
520 $g['stops'] = array();
521 for($i=$startStops;$i<count($bgr);$i++) {
522 $stop = array();
523 // parse stops
524 $el = preg_split('/\s+/',trim($bgr[$i]));
525 // mPDF 5.3.74
526 $col = $this->mpdf->ConvertColor($el[0]);
527 if ($col) { $stop['col'] = $col; }
528 else { $stop['col'] = $col = $this->mpdf->ConvertColor(255); }
529 if ($col{0}==1) $g['colorspace'] = 'Gray';
530 else if ($col{0}==4 || $col{0}==6) $g['colorspace'] = 'CMYK';
531 if ($col{0}==5) { $stop['opacity'] = ord($col{4})/100; } // transparency from rgba()
532 else if ($col{0}==6) { $stop['opacity'] = ord($col{5})/100; } // transparency from cmyka()
533 else if ($col{0}==1 && $col{2}==1) { $stop['opacity'] = ord($col{3})/100; } // transparency converted from rgba or cmyka()
534
535 if (isset($el[1]) && preg_match('/(\d+)[%]/',$el[1],$m)) {
536 $stop['offset'] = $m[1]/100;
537 if ($stop['offset']>1) { unset($stop['offset']); }
538 }
539 else if (isset($el[1]) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$el[1],$m)) {
540 $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
541 if ($tmp) { $stop['offset'] = $m[1]; }
542 }
543 $g['stops'][] = $stop;
544 }
545 if (count($g['stops'] )) { return $g; }
546 }
547 else if (preg_match('/radial-gradient\((.*)\)/',$bg,$m)) {
548 $g = array();
549 $g['type'] = 3;
550 $g['colorspace'] = 'RGB';
551 $g['extend'] = array('true','true');
552 $v = trim($m[1]);
553 // Change commas inside e.g. rgb(x,x,x)
554 while(preg_match('/(\([^\)]*?),/',$v)) { $v = preg_replace('/(\([^\)]*?),/','\\1@',$v); }
555 // Remove spaces inside e.g. rgb(x, x, x)
556 while(preg_match('/(\([^\)]*?)[ ]/',$v)) { $v = preg_replace('/(\([^\)]*?)[ ]/','\\1',$v); }
557 $bgr = preg_split('/\s*,\s*/',$v);
558 for($i=0;$i<count($bgr);$i++) { $bgr[$i] = preg_replace('/@/', ',', $bgr[$i]); }
559
560 // Is first part $bgr[0] a valid point/angle?
561 $startStops = 0;
562 $pos_angle = false;
563 $shape_size = false;
564 $first = preg_split('/\s+/',trim($bgr[0]));
565 $checkCol = $this->mpdf->ConvertColor($first[0]);
566 if (preg_match('/(left|center|right|bottom|top|deg|grad|rad)/i',$bgr[0]) && !preg_match('/(<#|rgb|rgba|hsl|hsla)/i',$bgr[0])) {
567 $startStops=1;
568 $pos_angle = $bgr[0];
569 }
570 else if (trim($first[(count($first)-1)]) === "0") {
571 $startStops=1;
572 $pos_angle = $bgr[0];
573 }
574 else if (preg_match('/(circle|ellipse|closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/i',$bgr[0])) {
575 $startStops=1;
576 $shape_size = $bgr[0];
577 }
578 else if (!$checkCol) {
579 $startStops=1;
580 $pos_angle = $bgr[0];
581 }
582 if (preg_match('/(circle|ellipse|closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/i',$bgr[1])) {
583 $startStops=2;
584 $shape_size = $bgr[1];
585 }
586
587 // If valid point/angle?
588 if ($pos_angle) { // default values
589 // [<point> || <angle>,] = [<% em px left center right bottom top> || <deg grad rad 0>,]
590 if (preg_match('/left/i',$pos_angle)) { $startx = 0; }
591 else if (preg_match('/right/i',$pos_angle)) { $startx = 1; }
592 if (preg_match('/top/i',$pos_angle)) { $starty = 1; }
593 else if (preg_match('/bottom/i',$pos_angle)) { $starty = 0; }
594 // Check for %? ?% or %%
595 if (preg_match('/(\d+)[%]/i',$first[0],$m)) { $startx = $m[1]/100; }
596 else if (!isset($startx) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[0],$m)) {
597 $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
598 if ($tmp) { $startx = $m[1]; }
599 }
600 if (isset($first[1]) && preg_match('/(\d+)[%]/i',$first[1],$m)) { $starty = 1 - ($m[1]/100); }
601 else if (!isset($starty) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[1],$m)) {
602 $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
603 if ($tmp) { $starty = $m[1]; }
604 }
605
606/*
607 // ?? Angle has no effect in radial gradient (does not exist in CSS3 spec.)
608 if (preg_match('/([\-]*[0-9\.]+)(deg|grad|rad)/i',$pos_angle,$m)) {
609 $angle = $m[1] + 0;
610 if (strtolower($m[2])=='deg') { $angle = $angle; }
611 else if (strtolower($m[2])=='grad') { $angle *= (360/400); }
612 else if (strtolower($m[2])=='rad') { $angle = rad2deg($angle); }
613 while($angle < 0) { $angle += 360; }
614 $angle = ($angle % 360);
615 }
616*/
617 if (!isset($starty)) { $starty = 0.5; }
618 if (!isset($startx)) { $startx = 0.5; }
619
620 }
621 // 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.
622 else { // default values Center
623 $starty = 0.5; $startx = 0.5;
624 $endy = 0.5; $endx = 0.5;
625 }
626
627 // If valid shape/size?
628 $shape = 'ellipse'; // default
629 $size = 'farthest-corner'; // default
630 if ($shape_size) { // default values
631 if (preg_match('/(circle|ellipse)/i',$shape_size, $m)) {
632 $shape = $m[1];
633 }
634 if (preg_match('/(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/i',$shape_size, $m)) {
635 $size = $m[1];
636 if ($size=='contain') { $size = 'closest-side'; }
637 else if ($size=='cover') { $size = 'farthest-corner'; }
638 }
639 }
640
641 $coords = array();
642 if (!isset($startx)) { $startx = false; }
643 if (!isset($starty)) { $starty = false; }
644 if (!isset($endx)) { $endx = false; }
645 if (!isset($endy)) { $endy = false; }
646 if (!isset($radius)) { $radius = false; }
647 if (!isset($angle)) { $angle = 0; }
648 $g['coords'] = array($startx ,$starty ,$endx ,$endy, $radius, $angle, $shape, $size, $repeat );
649
650 $g['stops'] = array();
651 for($i=$startStops;$i<count($bgr);$i++) {
652 $stop = array();
653 // parse stops
654 $el = preg_split('/\s+/',trim($bgr[$i]));
655 // mPDF 5.3.74
656 $col = $this->mpdf->ConvertColor($el[0]);
657 if ($col) { $stop['col'] = $col; }
658 else { $stop['col'] = $col = $this->mpdf->ConvertColor(255); }
659 if ($col{0}==1) $g['colorspace'] = 'Gray';
660 else if ($col{0}==4 || $col{0}==6) $g['colorspace'] = 'CMYK';
661 if ($col{0}==5) { $stop['opacity'] = ord($col{4})/100; } // transparency from rgba()
662 else if ($col{0}==6) { $stop['opacity'] = ord($col{5})/100; } // transparency from cmyka()
663 else if ($col{0}==1 && $col{2}==1) { $stop['opacity'] = ord($col{3})/100; } // transparency converted from rgba or cmyka()
664
665 if (isset($el[1]) && preg_match('/(\d+)[%]/',$el[1],$m)) {
666 $stop['offset'] = $m[1]/100;
667 if ($stop['offset']>1) { unset($stop['offset']); }
668 }
669 else if (isset($el[1]) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$el[1],$m)) {
670 $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
671 $stop['offset'] = $el[1];
672 }
673 $g['stops'][] = $stop;
674 }
675 if (count($g['stops'] )) { return $g; }
676 }
677 return array();
678}
679
680function parseBackgroundGradient($bg) {
681 // background-gradient: linear #00FFFF #FFFF00 0 0.5 1 0.5; or
682 // background-gradient: radial #00FFFF #FFFF00 0.5 0.5 1 1 1.2;
683
684 $v = trim($bg);
685 $bgr = preg_split('/\s+/',$v);
686 $g = array();
687 if (count($bgr)> 6) {
688 if (strtoupper(substr($bgr[0],0,1)) == 'L' && count($bgr)==7) { // linear
689 $g['type'] = 2;
690 //$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
691 // Linear: $coords - array of the form (x1, y1, x2, y2) which defines the gradient vector (see linear_gradient_coords.jpg).
692 // The default value is from left to right (x1=0, y1=0, x2=1, y2=0).
693 $g['coords'] = array($bgr[3], $bgr[4], $bgr[5], $bgr[6]);
694 }
695 else if (count($bgr)==8) { // radial
696 $g['type'] = 3;
697 // Radial: $coords - array of the form (fx, fy, cx, cy, r) where (fx, fy) is the starting point of the gradient with color1,
698 // (cx, cy) is the center of the circle with color2, and r is the radius of the circle (see radial_gradient_coords.jpg).
699 // (fx, fy) should be inside the circle, otherwise some areas will not be defined
700 $g['coords'] = array($bgr[3], $bgr[4], $bgr[5], $bgr[6], $bgr[7]);
701 }
702 $g['colorspace'] = 'RGB';
703 // mPDF 5.3.74
704 $cor = $this->mpdf->ConvertColor($bgr[1]);
705 if ($cor{0}==1) $g['colorspace'] = 'Gray';
706 else if ($cor{0}==4 || $cor{0}==6) $g['colorspace'] = 'CMYK';
707 if ($cor) { $g['col'] = $cor; }
708 else { $g['col'] = $this->mpdf->ConvertColor(255); }
709 $cor = $this->mpdf->ConvertColor($bgr[2]);
710 if ($cor) { $g['col2'] = $cor; }
711 else { $g['col2'] = $this->mpdf->ConvertColor(255); }
712 $g['extend'] = array('true','true');
713 $g['stops'] = array(array('col'=>$g['col'], 'opacity'=>1, 'offset'=>0), array('col'=>$g['col2'], 'opacity'=>1, 'offset'=>1));
714 return $g;
715 }
716 return false;
717}
718
719
720
721}
722
723?> \ 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
index 0573053b..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/indic.php
+++ /dev/null
@@ -1,433 +0,0 @@
1<?php
2
3class indic {
4
5function indic() {
6
7}
8
9
10function substituteIndic($earr, $lang, $font) {
11 global $voltdata;
12
13 if (!isset($voltdata[$font])) {
14 include_once(_MPDF_PATH.'includes/'.$font.'.volt.php');
15 $voltdata[$font] = $volt;
16 }
17
18 foreach($earr as $eid=>$char) {
19 $earr[$eid] = sprintf("%04s", strtoupper(dechex($char)));
20 }
21 $vstr = "0020 ".implode(" ",$earr)." 0020";
22 //============================
23 // Common Indic Punctuation marks
24 // If NOT devanagari
25 if ($lang!='hi') {
26 $vstr = str_replace('0964','007C', $vstr); // U+0964 replace with "|"
27 $vstr = str_replace('0965','007C 007C', $vstr); // U+0964 replace with "|"
28 }
29 //============================
30 // Tamil numeral for Zero missing Added mPDF 4.2
31 if ($lang=='ta') {
32 $vstr = str_replace('0BE6','0030', $vstr); // U+0BEB replace with "0"
33 }
34
35 //============================
36 // Re-order vowels
37
38 // DEVANAGARI vowel sign matraI[093F] before consonant
39 if ($lang=='hi') {
40 $prebasedvowels = "(093F)";
41 $nukta = "093C";
42 $halant = "094D";
43 $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr); // vowel sign pre-based shift left
44 $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr); // before NUKTA
45 $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr); // before CHAR HALANT == VIRAMA
46 }
47
48 // BENGALI vowels [09BF 09C7 09C8]
49 else if ($lang=='bn') {
50
51 // Khanda Ta 09CE not in font -> replace with 09A4|09CD
52 $vstr = preg_replace('/09CE/','09A4 09CD 200D', $vstr); // mPDF 5.3.09
53
54 // BENGALI double-part vowels [09CB 09C7 09BE][09CC 09C7 09D7]
55 $vstr = str_replace('09CB','09C7 09BE', $vstr); // convert to 2 parts
56 $vstr = str_replace('09CC','09C7 09D7', $vstr); // 09C7 pre-based is then shifted below
57 $prebasedvowels = "(09BF|09C7|09C8)";
58 $nukta = "09BC";
59 $halant = "09CD";
60 // mPDF 5.0.044
61 $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";
62 $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr); // vowel sign pre-based shift left
63 $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr); // before NUKTA
64 $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr); // before CHAR HALANT
65 // mPDF 5.0.044
66 // .. and shifting left-based vowel further to the left in case 3 consonants together.
67 $vstr = preg_replace('/('.$bnfullcons.') '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr);
68
69 // mPDF 5.0.044
70 // If left-based vowel has now been shifted to left of RA/Halant (09B0/09CD)
71 // Convert here to above-line form (E068) as it would get missed later
72 // e.g. 09B0 09CD 09AD 09C7 would be changed above =>
73 // e.g. 09C7 09B0 09CD 09AD. The 09B0 09CD should => E068
74 // ??? need to add 09BF as well (09BF|09C7|09C8)
75 $vstr = preg_replace('/(09C7|09C8) 09B0 09CD/', '\\1 E068', $vstr);
76
77 }
78
79 // GUJARATI pre-based vowel [0ABF]
80 else if ($lang=='gu') {
81 $prebasedvowels = "(0ABF)";
82 $nukta = "0ABC";
83 $halant = "0ACD";
84 $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr); // vowel sign pre-based shift left
85 $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr); // before NUKTA
86 $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr); // before CHAR HALANT
87 }
88
89 // GURMUKHI/PUNJABI pre-based vowel [0ABF]
90 else if ($lang=='pa') {
91 $prebasedvowels = "(0A3F)";
92 $nukta = "0A3C";
93 $halant = "0A4D";
94 $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr); // vowel sign pre-based shift left
95 $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr); // before NUKTA
96 $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr); // before CHAR HALANT
97 }
98
99 // TAMIL pre-based vowel [0ABF]
100 else if ($lang=='ta') {
101 // Shrii (Shree)
102 $vstr = preg_replace('/0BB6 0BCD 0BB0 0BC0/','E04B', $vstr);
103
104 // TAMIL double-part vowels [0BCA 0BC6 0BBE][0BCB 0BC7 0BBE][0BCC 0BC6 0BD7]
105 $vstr = preg_replace('/0BCA/','0BC6 0BBE', $vstr); // convert to 2 parts
106 $vstr = preg_replace('/0BCB/','0BC7 0BBE', $vstr); // pre-based is then shifted below
107 $vstr = preg_replace('/0BCC/','0BC6 0BD7', $vstr);
108 $prebasedvowels = "(0BC6|0BC7|0BC8)";
109 // No nukta
110 $halant = "0BCD"; // Doesn't seem to move most in front of halanted consonants
111 $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr); // vowel sign pre-based shift left
112 // ? Only for special case KSS (already moved to left of 0BB7)
113 $vstr = preg_replace('/0B95 '.$halant.' '.$prebasedvowels.' 0BB7/','\\1 0B95 '.$halant.' 0BB7', $vstr);
114 }
115
116 // ORIYA
117 else if ($lang=='or') {
118 // ORIYA double-part vowels []
119 $vstr = str_replace('0B48','0B47 0B56', $vstr); // 2-part Vowel
120 $vstr = str_replace('0B4B','0B47 0B3E', $vstr); // 2-part Vowel
121 $vstr = str_replace('0B4C','0B47 0B57', $vstr); // 2-part Vowel
122 $orprebasedvowels = "(0B47)";
123 // No nukta
124 $halant = "0B4D";
125 $vstr = preg_replace('/([A-F0-9]{4}) '.$orprebasedvowels.'/','\\2 \\1', $vstr); // vowel sign pre-based shift left
126 $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$orprebasedvowels.'/','\\2 \\1 '.$halant, $vstr); // before CHAR HALANT
127 $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$orprebasedvowels.'/','\\2 \\1 '.$halant, $vstr); // before CHAR HALANT
128 }
129
130 // MALAYALAM
131 else if ($lang=='ml') {
132 // Chillus - old forms - remove ZWNJ after
133 // This font Volt rules recognises e.g. "Na Halant(Virama)" as ChilluN
134 $vstr = preg_replace('/(0D23 0D4D|0D28 0D4D|0D30 0D4D|0D32 0D4D|0D33 0D4D) 200D/','\\1', $vstr);
135 // See Chillus in Unicode [http://en.wikipedia.org/wiki/Malayalam_script]
136 $vstr = str_replace('0D7A','0D23 0D4D', $vstr); // [mlymChilluNn]
137 $vstr = str_replace('0D7B','0D28 0D4D', $vstr); // [mlymChilluN]
138 $vstr = str_replace('0D7C','0D30 0D4D', $vstr); // [mlymChilluR]
139 $vstr = str_replace('0D7D','0D32 0D4D', $vstr); // [mlymChilluL]
140 $vstr = str_replace('0D7E','0D33 0D4D', $vstr); // [mlymChilluLl]
141/*
142 // Chillus - 0D7A-0D7E not in font directly, but as E005-E009
143 $vstr = preg_replace('/0D23 0D4D 200D/','0D7A', $vstr);
144 $vstr = preg_replace('/0D28 0D4D 200D/','0D7B', $vstr);
145 $vstr = preg_replace('/0D30 0D4D 200D/','0D7C', $vstr);
146 $vstr = preg_replace('/0D32 0D4D 200D/','0D7D', $vstr);
147 $vstr = preg_replace('/0D33 0D4D 200D/','0D7E', $vstr);
148
149 $vstr = preg_replace('/0D7F/','E004', $vstr); // [mlymChilluK]
150 $vstr = preg_replace('/0D7A/','E005', $vstr); // [mlymChilluNn]
151 $vstr = preg_replace('/0D7B/','E006', $vstr); // [mlymChilluN]
152 $vstr = preg_replace('/0D7C/','E007', $vstr); // [mlymChilluR]
153 $vstr = preg_replace('/0D7D/','E008', $vstr); // [mlymChilluL]
154 $vstr = preg_replace('/0D7E/','E009', $vstr); // [mlymChilluLl]
155*/
156
157 // MALAYALAM double-part vowels []
158 $vstr = str_replace('0D4A','0D46 0D3E', $vstr); // 2-part Vowel
159 $vstr = str_replace('0D4B','0D47 0D3E', $vstr); // 2-part Vowel
160 $vstr = str_replace('0D4C','0D46 0D57', $vstr); // 2-part Vowel
161 $mlprebasedvowels = "(0D46|0D47|0D48)";
162 // No nukta
163 $halant = "0D4D";
164 $vstr = preg_replace('/([A-F0-9]{4}) '.$mlprebasedvowels.'/','\\2 \\1', $vstr); // vowel sign pre-based shift left
165 $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$mlprebasedvowels.'/','\\2 \\1 '.$halant, $vstr); // before CHAR HALANT
166 }
167
168 // TELUGU
169 else if ($lang=='te') {
170 // TELUGU double-part vowels [0C48 -> 0C46 0C56]
171 $vstr = str_replace('0C48','0C46 0C56', $vstr); // 2-part Vowel
172 $prebasedvowels = "(0C46)";
173 $abvvowels = "(0C3E|0C3F|0C40|0C46|0C47|0C4A|0C4B|0C4C|0C55)";
174 // No nukta
175 $halant = "0C4D";
176 $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";
177 $vstr = preg_replace('/('.$tefullforms .') '.$halant.' ('.$tefullforms .') '.$abvvowels .'/','\\1 \\3 '.$halant.' \\2', $vstr); // before HALANT
178 }
179
180
181 // KANNADA
182 else if ($lang=='kn') {
183 // KANNADA double-part vowels [0CC8 -> 0CC6 0CD6]
184 $vstr = str_replace('0CC0','0CBF 0CD5', $vstr); // 2-part Vowel
185 $vstr = str_replace('0CC7','0CC6 0CD5', $vstr); // 2-part Vowel
186 $vstr = str_replace('0CC8','0CC6 0CD6', $vstr); // 2-part Vowel AI - no glyph for single
187 $vstr = str_replace('0CCA','0CC6 0CC2', $vstr); // 2-part Vowel
188 $vstr = str_replace('0CCB','0CC6 0CC2 0CD5', $vstr); // 2-part Vowel
189 $prebasedvowels = "(0CBF|0CC6)";
190 $halant = "0CCD";
191 }
192
193
194 //============================
195
196 // SPECIALS
197
198 // DEVANAGARI Ra Halant Ra
199 if ($lang=='hi') {
200 $vstr = str_replace('0930 094D 0930','E05D 0930', $vstr); // Ra Halant Ra => halfRa FullRa
201 }
202
203 // GUJARATI
204 if ($lang=='gu') {
205 $vstr = str_replace('0AB0 0AC2','E02E', $vstr); // Ra VowelUu => SpecialForm RaUu
206 }
207
208 // TELUGU Ra Halant <Consonant> Halant => halfRa Halant<Consonant> Halant
209 if ($lang=='te') {
210 $vstr = preg_replace('/0C30 0C4D ([A-F0-9]{4}) 0C4D/','E021 0C4D \\1 0C4D', $vstr);
211 }
212
213 // KANNADA
214 // Reph at end of word becomes E0CC instead of E00B
215 if ($lang=='kn') {
216 $vstr = str_replace('0CB0 0CCD 0020','E0CC 0020', $vstr); // mPDF 5.3.87
217 }
218
219
220 //============================
221 // MAIN BIT FROM VOLT RULES
222 foreach($voltdata[$font] AS $rid=>$reps) {
223//echo $rid . ': ' . $vstr.'<br />';
224 $vstr = preg_replace('/'.$reps['match'].'/',$reps['replace'], $vstr);
225 }
226//echo $vstr.'<br />'; exit;
227
228
229 //============================
230
231 // SPECIALS
232
233 // KANNADA
234 // <Base> <BelowBase1> [<BelowBase2> ] MatraI -> <Base/MatraI ligature> <Belowbase1> etc
235 if ($lang=='kn') {
236 $matraI = "0CBF";
237 $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");
238 $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");
239 $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";
240 $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";
241 for ($i=0; $i<count($knbase);$i++) {
242 $vstr = preg_replace('/'.$knbase[$i].' ('.$belowbase1.') ('.$belowbase2.') '.$matraI.'/', $knmatraIligature[$i].' \\1 \\2', $vstr);
243 $vstr = preg_replace('/'.$knbase[$i].' ('.$belowbase1.') '.$matraI.'/', $knmatraIligature[$i].' \\1', $vstr);
244 }
245 }
246
247 // KANNADA
248 // [KanTtaFull] [matraI] => [KanTtaPartial] [matraI]
249 if ($lang=='kn') {
250 $vstr = preg_replace('/0C9F '.$matraI.'/', 'E015 '.$matraI, $vstr);
251 }
252
253 // ORIYA
254 if ($lang=='or') {
255 // SpecialCase Ra[0B30] Halant still left before [oryaFullNnNna] => E00F
256 $vstr = preg_replace('/0B30 '.$halant.' E00F/','E00F E069', $vstr); // convert to Reph
257 }
258
259 //============================
260 // SHIFT REPH
261
262 // DEVANAGARI Shift Reph [E015]
263 if ($lang=='hi') {
264 // FIRSTLY - halfRa = E05D - Change this to Reph [E015]
265 $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";
266 $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";
267 $vstr = preg_replace('/E05D ('.$himatchhalfforms.'|'.$himatchfullforms.')/', 'E015 \\1', $vstr);
268
269 // Reph = E015 - Shift Right to just after end of syllable
270 // FullAllForms + HalfAllForms + 093E matraA
271 while(preg_match('/E015 ('.$himatchhalfforms.')/', $vstr)) {
272 $vstr = preg_replace('/E015 ('.$himatchhalfforms.')/', '\\1 E015', $vstr);
273 }
274 $vstr = preg_replace('/E015 ('.$himatchfullforms.')/', '\\1 E015', $vstr);
275
276 // Now shift it beyond post-based vowels // ??? Need to add others e.g. 0949,094A,094B,094C + presentation forms like E198
277 $vstr = str_replace('E015 093E', '093E E015', $vstr);
278 $vstr = preg_replace('/E015 (0940|E194|E195|E196|E197|E198)/', '\\1 E014', $vstr); // (Small) reph [E014] to Right of matraI
279 $vstr = str_replace('E015 0947', '0947 E014', $vstr); // (Small) reph [E014] to Right of matraI
280 }
281
282 // BENGALI Shift Reph [E068]
283 else if ($lang=='bn') {
284 $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";
285 // $bnfullcons - set above;
286 $vstr = preg_replace('/E068 ('.$bnfullconjuncts.'|'.$bnfullcons.')/', '\\1 E068', $vstr);
287 // ? Need to shift it beyond post-base vowels 09BE, 09C0, 09D7 haven't found so can't test??
288 $vstr = preg_replace('/E068 (09BE|09C0|09D7)/', '\\1 E068', $vstr);
289 }
290
291 // GUJARATI Shift Reph [E032]
292 else if ($lang=='gu') {
293 $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";
294 $vstr = preg_replace('/E032 ('.$gufullforms.')/', '\\1 E032', $vstr);
295 // Now shift it beyond post-based vowels // ??? Need to add others e.g. 0949,094A,094B,094C + presentation forms like E198
296 // ? Need to shift it beyond post-base vowels 0ABE, 0AC0 haven't found so can't test??
297 $vstr = preg_replace('/E032 (0ABE|0AC0)/', '\\1 E032', $vstr);
298 }
299
300
301 // TELUGU Shift Reph to LEFT [E046|E069|E077] [TelRaSmallOne] => E046 [TelRaSmallTwo] => E069 [TelRaSmallThree] => E077
302 else if ($lang=='te') {
303 // tefullforms defined earlier
304 $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";
305 $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";
306 $tevowels = "0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C"
307 ."|0C41|0C42|0C43|0C44"; // post matras
308 $vstr = preg_replace('/('.$tevowels.') (E046|E069|E077)/', '\\2 \\1', $vstr);
309 while(preg_match('/('.$tepartialforms.') (E046|E069|E077)/', $vstr)) {
310 $vstr = preg_replace('/('.$tepartialforms.') (E046|E069|E077)/', '\\2 \\1', $vstr);
311 }
312 $vstr = preg_replace('/('.$tefullforms .'|'.$matraligs.') (E046|E069|E077)/', '\\2 \\1', $vstr);
313 }
314
315
316 // KANNADA Shift Reph to RIGHT [E00B]
317 else if ($lang=='kn') {
318 $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";
319 $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";
320 while(preg_match('/E00B ('.$knpartialforms.')/', $vstr)) {
321 $vstr = preg_replace('/E00B ('.$knpartialforms.')/', '\\1 E00B', $vstr);
322 }
323 // mPDF 5.3.47 Also move Reph to right of matraIligatures
324 $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";
325 $vstr = preg_replace('/E00B ('.$knfullforms.')/', '\\1 E00B', $vstr);
326
327 // ? Need to shift it beyond base or below-base forms - haven't found so can't test??
328 // mPDF 5.3.87
329 // E004 added to list (which is a transformed version of 0CBE)
330 $knvowels = "0CBE|0CC0|0CC1|0CC2|0CC3|0CC4|0CC7|0CC8|0CCA|0CCB|0CD5|0CD6|E004";
331 $vstr = preg_replace('/E00B ('.$knvowels.')/', '\\1 E00B', $vstr);
332 }
333
334
335 // ORIYA Shift Reph to RIGHT [E069|E06A|E06B|E06C]
336 else if ($lang=='or') {
337 $orrephs = "E069|E06A|E06B|E06C";
338 $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";
339 // E123 - E147 FullHalant forms ? add to FullForms
340 $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";
341
342 // Combined MatraIReph[E06D] split [0B3F & E069] to allow reph to be shifted forwards
343 $vstr = preg_replace('/('.$orfullforms.') E06D ('.$orfullforms.') 0B3E/', '\\1 0B3F E069 \\2 0B3E', $vstr);
344
345
346 while(preg_match('/('.$orrephs.') ('.$orpartialforms.')/', $vstr)) {
347 $vstr = preg_replace('/('.$orrephs.') ('.$orpartialforms.')/', '\\2 \\1', $vstr);
348 }
349 $vstr = preg_replace('/('.$orrephs.') ('.$orfullforms.')/', '\\2 \\1', $vstr);
350
351
352 // Combine Reph and MatraI
353 $vstr = str_replace('E069 0B3F', 'E06D', $vstr); // Reph and MatraI -> MatraIReph
354 $vstr = str_replace('E06A 0B3F', 'E06E', $vstr); // Reph and MatraI -> MatraIReph
355 $vstr = str_replace('E06B 0B3F', 'E06F', $vstr); // Reph and MatraI -> MatraIReph
356 }
357
358
359 // MALAYALAM Shift Reph to LEFT [E00E] (mlylmRaVattu)
360 else if ($lang=='ml') {
361 $halant = "0D4D";
362 $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' 0D30/','E00E \\1', $vstr); // 0D30 = Ra
363 $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$mlprebasedvowels .' 0D30/','\\2 E00E \\1', $vstr); // 0D30 = Ra
364
365 $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"
366 ."|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";
367 // = FullConsonants + FullConjuncts
368
369 // = Add Chillu characters // mPDF 5.0.024
370 $mlfullforms .= "|E004|E005|E006|E007|E008|E009";
371 while(preg_match('/('.$mlfullforms.') E00E/', $vstr))
372 $vstr = preg_replace('/('.$mlfullforms.') E00E/', 'E00E \\1', $vstr);
373 }
374
375 //============================
376
377 // SHIFT post-based vowels to Left of SmallForms (NOT to left of full forms)
378
379 // TELUGU Shift
380 if ($lang=='te') {
381 // NB $tevowels defined above
382 // NB $tefullforms defined above
383 $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'
384 $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'
385 $vstr = preg_replace('/('.$tebelowbase2.') ('.$tevowels.')/', '\\2 \\1', $vstr);
386 $vstr = preg_replace('/('.$tebelowbase1.') ('.$tevowels.')/', '\\2 \\1', $vstr);
387 }
388
389
390 // KANNADA Shift
391 else if ($lang=='kn') {
392 $knvowels = "0CBE|0CC0|0CC1|0CC2|0CC3|0CC4|0CC7|0CC8|0CCA|0CCB|0CD5|0CD6"
393 // mPDF 5.3.87 Shouldn't swop E082 and E047 (belowbase1) below
394 // E082 is a matraIligature
395 // ."|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"
396 ."|E004|E007|E008|E009|E00A";
397
398
399 // NB $knvowels defined above
400 // NB $fullforms defined above
401 // $belowbase1/2 defined above
402 $vstr = preg_replace('/('.$belowbase2.') ('.$knvowels.')/', '\\2 \\1', $vstr);
403 // mPDF 5.3.87
404 $vstr = preg_replace('/('.$belowbase1.') ('.$knvowels.')/', '\\2 \\1', $vstr);
405
406 //$vstr = preg_replace('/('.$fullforms.') ('.$knvowels.')/', '\\2 \\1', $vstr);
407 }
408
409 //============================
410 // Clear unwanted ZWJ, ZWNJ
411 // MALAYALAM
412 if ($lang=='ml') {
413 $vstr = preg_replace('/(200C|200D) /','', $vstr);
414 }
415
416 //============================
417 // END & PUT IT BACK TOGETHER
418 $vstr = preg_replace('/^0020 (.*) 0020$/', '\\1', $vstr);
419
420 $varr = explode(" ",$vstr);
421 $e = '';
422 foreach($varr AS $v) {
423 $e.=code2utf(hexdec($v));
424 }
425 //============================
426
427 return $e;
428}
429
430
431}
432
433?> \ 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
index 46fa9d5a..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/meter.php
+++ /dev/null
@@ -1,224 +0,0 @@
1<?php
2
3class meter {
4
5
6function __construct() {
7
8}
9
10function makeSVG($tag, $type, $value, $max, $min, $optimum, $low, $high) {
11 $svg = '';
12 if ($tag == 'meter') {
13
14 if ($type=='2') {
15 /////////////////////////////////////////////////////////////////////////////////////
16 ///////// CUSTOM <meter type="2">
17 /////////////////////////////////////////////////////////////////////////////////////
18 $h = 10;
19 $w = 160;
20 $border_radius = 0.143; // Factor of Height
21
22 $svg = '<?xml version="1.0" encoding="UTF-8"?>
23 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
24 <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>
25
26
27 <defs>
28 <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
29 <stop offset="0%" stop-color="rgb(222, 222, 222)" />
30 <stop offset="20%" stop-color="rgb(232, 232, 232)" />
31 <stop offset="25%" stop-color="rgb(232, 232, 232)" />
32 <stop offset="100%" stop-color="rgb(182, 182, 182)" />
33 </linearGradient>
34
35 </defs>
36';
37 $svg .= '<rect x="0" y="0" width="'.$w.'" height="'.$h.'" fill="#f4f4f4" stroke="none" />';
38
39 // LOW to HIGH region
40 //if ($low && $high && ($low != $min || $high != $max)) {
41 if ($low && $high) {
42 $barx = (($low-$min) / ($max-$min) ) * $w;
43 $barw = (($high-$low) / ($max-$min) ) * $w;
44 $svg .= '<rect x="'.$barx.'" y="0" width="'.$barw.'" height="'.$h.'" fill="url(#GrGRAY)" stroke="#888888" stroke-width="0.5px" />';
45 }
46
47 // OPTIMUM Marker (? AVERAGE)
48 if ($optimum) {
49 $barx = (($optimum-$min) / ($max-$min) ) * $w;
50 $barw = $h/2;
51 $barcol = '#888888';
52 $svg .= '<rect x="'.$barx.'" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
53 }
54
55 // VALUE Marker
56 if ($value) {
57 if ($min != $low && $value < $low) { $col = 'orange'; }
58 else if ($max != $high && $value > $high) { $col = 'orange'; }
59 else { $col = '#008800'; }
60 $cx = (($value-$min) / ($max-$min) ) * $w;
61 $cy = $h/2;
62 $rx = $h/3.5;
63 $ry = $h/2.2;
64 $svg .= '<ellipse fill="'.$col.'" stroke="#000000" stroke-width="0.5px" cx="'.$cx.'" cy="'.$cy.'" rx="'.$rx.'" ry="'.$ry.'"/>';
65 }
66
67 // BoRDER
68 $svg .= '<rect x="0" y="0" width="'.$w.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
69
70 $svg .= '</g></svg>';
71 }
72 else {
73 /////////////////////////////////////////////////////////////////////////////////////
74 ///////// DEFAULT <meter>
75 /////////////////////////////////////////////////////////////////////////////////////
76 $h = 10;
77 $w = 50;
78 $border_radius = 0.143; // Factor of Height
79
80 $svg = '<?xml version="1.0" encoding="UTF-8"?>
81 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
82 <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>
83
84 <defs>
85 <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
86 <stop offset="0%" stop-color="rgb(222, 222, 222)" />
87 <stop offset="20%" stop-color="rgb(232, 232, 232)" />
88 <stop offset="25%" stop-color="rgb(232, 232, 232)" />
89 <stop offset="100%" stop-color="rgb(182, 182, 182)" />
90 </linearGradient>
91
92 <linearGradient id="GrRED" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
93 <stop offset="0%" stop-color="rgb(255, 162, 162)" />
94 <stop offset="20%" stop-color="rgb(255, 218, 218)" />
95 <stop offset="25%" stop-color="rgb(255, 218, 218)" />
96 <stop offset="100%" stop-color="rgb(255, 0, 0)" />
97 </linearGradient>
98
99 <linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
100 <stop offset="0%" stop-color="rgb(102, 230, 102)" />
101 <stop offset="20%" stop-color="rgb(218, 255, 218)" />
102 <stop offset="25%" stop-color="rgb(218, 255, 218)" />
103 <stop offset="100%" stop-color="rgb(0, 148, 0)" />
104 </linearGradient>
105
106 <linearGradient id="GrBLUE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
107 <stop offset="0%" stop-color="rgb(102, 102, 230)" />
108 <stop offset="20%" stop-color="rgb(238, 238, 238)" />
109 <stop offset="25%" stop-color="rgb(238, 238, 238)" />
110 <stop offset="100%" stop-color="rgb(0, 0, 128)" />
111 </linearGradient>
112
113 <linearGradient id="GrORANGE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
114 <stop offset="0%" stop-color="rgb(255, 186, 0)" />
115 <stop offset="20%" stop-color="rgb(255, 238, 168)" />
116 <stop offset="25%" stop-color="rgb(255, 238, 168)" />
117 <stop offset="100%" stop-color="rgb(255, 155, 0)" />
118 </linearGradient>
119 </defs>
120
121 <rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="url(#GrGRAY)" stroke="none" />
122';
123
124 if ($value) {
125 $barw = (($value-$min) / ($max-$min) ) * $w;
126 if ($optimum < $low) {
127 if ($value < $low) { $barcol = 'url(#GrGREEN)'; }
128 else if ($value > $high) { $barcol = 'url(#GrRED)'; }
129 else { $barcol = 'url(#GrORANGE)'; }
130 }
131 else if ($optimum > $high) {
132 if ($value < $low) { $barcol = 'url(#GrRED)'; }
133 else if ($value > $high) { $barcol = 'url(#GrGREEN)'; }
134 else { $barcol = 'url(#GrORANGE)'; }
135 }
136 else {
137 if ($value < $low) { $barcol = 'url(#GrORANGE)'; }
138 else if ($value > $high) { $barcol = 'url(#GrORANGE)'; }
139 else { $barcol = 'url(#GrGREEN)'; }
140 }
141 $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
142 }
143
144
145 // Borders
146 //$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" />';
147 if ($value) {
148 // $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" />';
149 }
150
151
152 $svg .= '</g></svg>';
153 }
154 }
155 else { // $tag == 'progress'
156
157 if ($type=='2') {
158 /////////////////////////////////////////////////////////////////////////////////////
159 ///////// CUSTOM <progress type="2">
160 /////////////////////////////////////////////////////////////////////////////////////
161 }
162 else {
163 /////////////////////////////////////////////////////////////////////////////////////
164 ///////// DEFAULT <progress>
165 /////////////////////////////////////////////////////////////////////////////////////
166 $h = 10;
167 $w = 100;
168 $border_radius = 0.143; // Factor of Height
169
170 if ($value or $value==='0') {
171 $fill = 'url(#GrGRAY)';
172 }
173 else {
174 $fill = '#f8f8f8';
175 }
176
177 $svg = '<svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'"><g>
178
179 <defs>
180 <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
181 <stop offset="0%" stop-color="rgb(222, 222, 222)" />
182 <stop offset="20%" stop-color="rgb(232, 232, 232)" />
183 <stop offset="25%" stop-color="rgb(232, 232, 232)" />
184 <stop offset="100%" stop-color="rgb(182, 182, 182)" />
185 </linearGradient>
186
187 <linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
188 <stop offset="0%" stop-color="rgb(102, 230, 102)" />
189 <stop offset="20%" stop-color="rgb(218, 255, 218)" />
190 <stop offset="25%" stop-color="rgb(218, 255, 218)" />
191 <stop offset="100%" stop-color="rgb(0, 148, 0)" />
192 </linearGradient>
193
194 </defs>
195
196 <rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="'.$fill.'" stroke="none" />
197';
198
199 if ($value) {
200 $barw = (($value-$min) / ($max-$min) ) * $w;
201 $barcol = 'url(#GrGREEN)';
202 $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
203 }
204
205
206 // Borders
207 $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" />';
208 if ($value) {
209 // $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" />';
210 }
211
212
213 $svg .= '</g></svg>';
214
215 }
216 }
217
218 return $svg;
219}
220
221
222} // end of class
223
224?> \ 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
index 571f4edd..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/svg.php
+++ /dev/null
@@ -1,2703 +0,0 @@
1<?php
2// svg class modified for mPDF version 4.4.003 by Ian Back: based on -
3// svg2pdf fpdf class
4// sylvain briand (syb@godisaduck.com), modified by rick trevino (rtrevino1@yahoo.com)
5// http://www.godisaduck.com/svg2pdf_with_fpdf
6// http://rhodopsin.blogspot.com
7//
8// cette class etendue est open source, toute modification devra cependant etre repertoriée~
9
10
11// NB UNITS - Works in pixels as main units - converting to PDF units when outputing to PDF string
12// and on returning size
13
14class SVG {
15
16 var $svg_gradient; // array - contient les infos sur les gradient fill du svg classé par id du svg
17 var $svg_shadinglist; // array - contient les ids des objet shading
18 var $svg_info; // array contenant les infos du svg voulue par l'utilisateur
19 var $svg_attribs; // array - holds all attributes of root <svg> tag
20 var $svg_style; // array contenant les style de groupes du svg
21 var $svg_string; // String contenant le tracage du svg en lui même.
22 var $txt_data; // array - holds string info to write txt to image
23 var $txt_style; // array - current text style
24 var $mpdf_ref;
25 var $xbase; // mPDF 4.4.003
26 var $ybase; // mPDF 4.4.003
27 var $svg_error; // mPDF 4.4.003
28 var $subPathInit; // mPDF 4.4.003
29 var $spxstart; // mPDF 4.4.003
30 var $spystart; // mPDF 4.4.003
31 var $kp; // mPDF 4.4.003 convert pixels to PDF units
32 var $pathBBox; // mPDF 5.0.039
33
34 function SVG(&$mpdf){
35 $this->svg_gradient = array();
36 $this->svg_shadinglist = array();
37 $this->txt_data = array();
38 $this->svg_string = '';
39 $this->svg_info = array();
40 $this->svg_attribs = array();
41 $this->xbase = 0;
42 $this->ybase = 0;
43 $this->svg_error = false;
44 $this->subPathInit = false; // mPDF 4.4.003
45 $this->dashesUsed = false; // mPDF 5.0
46 $this->mpdf_ref =& $mpdf;
47
48 $this->kp = 72 / $mpdf->img_dpi; // mPDF 4.4.003 constant To convert pixels to pts/PDF units
49 $this->kf = 1; // mPDF 5.0.039 constant To convert font size if re-mapped
50 $this->pathBBox = array(); // mPDF 5.0.039
51
52 $this->svg_style = array(
53 array(
54 'fill' => 'black', // mPDF 4.4.008
55 'fill-opacity' => 1, // remplissage opaque par defaut
56 'fill-rule' => 'nonzero', // mode de remplissage par defaut
57 'stroke' => 'none', // pas de trait par defaut
58 'stroke-linecap' => 'butt', // style de langle par defaut
59 'stroke-linejoin' => 'miter', //
60 'stroke-miterlimit' => 4, // limite de langle par defaut
61 'stroke-opacity' => 1, // trait opaque par defaut
62 'stroke-width' => 1, // mPDF 4.4.011
63 'stroke-dasharray' => 0, // mPDF 4.4.003
64 'stroke-dashoffset' => 0, // mPDF 4.4.003
65 'color' => '' // mPDF 4.4.005
66 )
67 );
68
69 $this->txt_style = array(
70 array(
71 'fill' => 'black', // pas de remplissage par defaut
72 'font-family' => $mpdf->default_font,
73 'font-size' => $mpdf->default_font_size, // ****** this is pts
74 'font-weight' => 'normal', // normal | bold
75 'font-style' => 'normal', // italic | normal
76 'text-anchor' => 'start', // alignment: start, middle, end
77/* mPDF 5.0.041 */
78 'fill-opacity' => 1, // remplissage opaque par defaut
79 'fill-rule' => 'nonzero', // mode de remplissage par defaut
80 'stroke' => 'none', // pas de trait par defaut
81 'stroke-opacity' => 1, // trait opaque par defaut
82 'stroke-width' => 1, // mPDF 4.4.011
83 'color' => '' // mPDF 4.4.005
84 )
85 );
86
87
88
89 }
90
91 function svgGradient($gradient_info, $attribs, $element){
92 $n = count($this->mpdf_ref->gradients)+1;
93
94 // Get bounding dimensions of element
95 $w = 100;
96 $h = 100;
97 $x_offset = 0;
98 $y_offset = 0;
99 if ($element=='rect') {
100 $w = $attribs['width'];
101 $h = $attribs['height'];
102 $x_offset = $attribs['x'];
103 $y_offset = $attribs['y'];
104 }
105 else if ($element=='ellipse') {
106 $w = $attribs['rx']*2;
107 $h = $attribs['ry']*2;
108 $x_offset = $attribs['cx']-$attribs['rx'];
109 $y_offset = $attribs['cy']-$attribs['ry'];
110 }
111 else if ($element=='circle') {
112 $w = $attribs['r']*2;
113 $h = $attribs['r']*2;
114 $x_offset = $attribs['cx']-$attribs['r'];
115 $y_offset = $attribs['cy']-$attribs['r'];
116 }
117 else if ($element=='polygon') {
118 $pts = preg_split('/[ ,]+/', trim($attribs['points']));
119 $maxr=$maxb=0;
120 $minl=$mint=999999;
121 for ($i=0;$i<count($pts); $i++) {
122 if ($i % 2 == 0) { // x values
123 $minl = min($minl,$pts[$i]);
124 $maxr = max($maxr,$pts[$i]);
125 }
126 else { // y values
127 $mint = min($mint,$pts[$i]);
128 $maxb = max($maxb,$pts[$i]);
129 }
130 }
131 $w = $maxr-$minl;
132 $h = $maxb-$mint;
133 $x_offset = $minl;
134 $y_offset = $mint;
135 }
136 else if ($element=='path') {
137 // mPDF 5.0.039
138 if (is_array($this->pathBBox) && $this->pathBBox[2]>0) {
139 $w = $this->pathBBox[2];
140 $h = $this->pathBBox[3];
141 $x_offset = $this->pathBBox[0];
142 $y_offset = $this->pathBBox[1];
143 }
144 else {
145 preg_match_all('/([a-z]|[A-Z])([ ,\-.\d]+)*/', $attribs['d'], $commands, PREG_SET_ORDER);
146 $maxr=$maxb=0;
147 $minl=$mint=999999;
148 foreach($commands as $c){
149 if(count($c)==3){
150 list($tmp, $cmd, $arg) = $c;
151 if ($cmd=='M' || $cmd=='L' || $cmd=='C' || $cmd=='S' || $cmd=='Q' || $cmd=='T') {
152 $pts = preg_split('/[ ,]+/', trim($arg));
153 for ($i=0;$i<count($pts); $i++) {
154 if ($i % 2 == 0) { // x values
155 $minl = min($minl,$pts[$i]);
156 $maxr = max($maxr,$pts[$i]);
157 }
158 else { // y values
159 $mint = min($mint,$pts[$i]);
160 $maxb = max($maxb,$pts[$i]);
161 }
162 }
163 }
164 if ($cmd=='H') { // sets new x
165 $minl = min($minl,$arg);
166 $maxr = max($maxr,$arg);
167 }
168 if ($cmd=='V') { // sets new y
169 $mint = min($mint,$arg);
170 $maxb = max($maxb,$arg);
171 }
172 }
173 }
174 $w = $maxr-$minl;
175 $h = $maxb-$mint;
176 $x_offset = $minl;
177 $y_offset = $mint;
178 }
179 }
180 if (!$w || $w==-999999) { $w = 100; }
181 if (!$h || $h==-999999) { $h = 100; }
182 if ($x_offset==999999) { $x_offset = 0; }
183 if ($y_offset==999999) { $y_offset = 0; }
184
185 // mPDF 4.5.010
186 // TRANSFORMATIONS
187 $transformations = '';
188 if (isset($gradient_info['transform'])){
189 preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)\((.*?)\)/is',$gradient_info['transform'],$m);
190 if (count($m[0])) {
191 for($i=0; $i<count($m[0]); $i++) {
192 $c = strtolower($m[1][$i]);
193 $v = trim($m[2][$i]);
194 $vv = preg_split('/[ ,]+/',$v);
195 if ($c=='matrix' && count($vv)==6) {
196 // mPDF 5.0.039
197 // Note angle of rotation is reversed (from SVG to PDF), so vv[1] and vv[2] are negated
198 // cf svgDefineStyle()
199 $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);
200 }
201 else if ($c=='translate' && count($vv)) {
202 $tm[4] = $vv[0];
203 if (count($vv)==2) { $t_y = -$vv[1]; }
204 else { $t_y = 0; }
205 $tm[5] = $t_y;
206 $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $tm[4]*$this->kp, $tm[5]*$this->kp);
207 }
208 else if ($c=='scale' && count($vv)) {
209 if (count($vv)==2) { $s_y = $vv[1]; }
210 else { $s_y = $vv[0]; }
211 $tm[0] = $vv[0];
212 $tm[3] = $s_y;
213 $transformations .= sprintf(' %.3F 0 0 %.3F 0 0 cm ', $tm[0], $tm[3]);
214 }
215 else if ($c=='rotate' && count($vv)) {
216 $tm[0] = cos(deg2rad(-$vv[0]));
217 $tm[1] = sin(deg2rad(-$vv[0]));
218 $tm[2] = -$tm[1];
219 $tm[3] = $tm[0];
220 if (count($vv)==3) {
221 $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $vv[1]*$this->kp, -$vv[2]*$this->kp);
222 }
223 $transformations .= sprintf(' %.3F %.3F %.3F %.3F 0 0 cm ', $tm[0], $tm[1], $tm[2], $tm[3]);
224 if (count($vv)==3) {
225 $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', -$vv[1]*$this->kp, $vv[2]*$this->kp);
226 }
227 }
228 else if ($c=='skewx' && count($vv)) {
229 $tm[2] = tan(deg2rad(-$vv[0]));
230 $transformations .= sprintf(' 1 0 %.3F 1 0 0 cm ', $tm[2]);
231 }
232 else if ($c=='skewy' && count($vv)) {
233 $tm[1] = tan(deg2rad(-$vv[0]));
234 $transformations .= sprintf(' 1 %.3F 0 1 0 0 cm ', $tm[1]);
235 }
236
237 }
238 }
239 }
240
241
242 $return = "";
243
244 // mPDF 5.0.039
245 if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
246 if ($transformations) { $return .= $transformations; }
247 }
248 // mPDF 5.0.040
249 $spread = 'P'; // pad
250 if (isset($gradient_info['spread'])) {
251 if (strtolower($gradient_info['spread'])=='reflect') { $spread = 'F'; } // reflect
252 else if (strtolower($gradient_info['spread'])=='repeat') { $spread = 'R'; } // repeat
253 }
254
255
256 for ($i=0; $i<(count($gradient_info['color'])); $i++) {
257 if (stristr($gradient_info['color'][$i]['offset'], '%')!== false) { $gradient_info['color'][$i]['offset'] = ($gradient_info['color'][$i]['offset']+0)/100; }
258 if (stristr($gradient_info['color'][($i+1)]['offset'], '%')!== false) { $gradient_info['color'][($i+1)]['offset'] = ($gradient_info['color'][($i+1)]['offset']+0)/100; }
259 if ($gradient_info['color'][$i]['offset']<0) { $gradient_info['color'][$i]['offset'] = 0; }
260 if ($gradient_info['color'][$i]['offset']>1) { $gradient_info['color'][$i]['offset'] = 1; }
261 if ($i>0) {
262 if ($gradient_info['color'][$i]['offset']<$gradient_info['color'][($i-1)]['offset']) {
263 $gradient_info['color'][$i]['offset']=$gradient_info['color'][($i-1)]['offset'];
264 }
265 }
266 }
267
268 if ($gradient_info['color'][0]['offset']>0) {
269 array_unshift($gradient_info['color'], $gradient_info['color'][0]);
270 $gradient_info['color'][0]['offset'] = 0;
271 }
272 $ns = count($gradient_info['color']);
273 if ($gradient_info['color'][($ns-1)]['offset']<1) {
274 $gradient_info['color'][] = $gradient_info['color'][($ns-1)];
275 $gradient_info['color'][($ns)]['offset'] = 1;
276 }
277 $ns = count($gradient_info['color']);
278
279
280
281
282 if ($gradient_info['type'] == 'linear'){
283 // mPDF 4.4.003
284 if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
285 if (isset($gradient_info['info']['x1'])) { $gradient_info['info']['x1'] = ($gradient_info['info']['x1']-$x_offset) / $w; }
286 if (isset($gradient_info['info']['y1'])) { $gradient_info['info']['y1'] = ($gradient_info['info']['y1']-$y_offset) / $h; }
287 if (isset($gradient_info['info']['x2'])) { $gradient_info['info']['x2'] = ($gradient_info['info']['x2']-$x_offset) / $w; }
288 if (isset($gradient_info['info']['y2'])) { $gradient_info['info']['y2'] = ($gradient_info['info']['y2']-$y_offset) / $h; }
289 }
290 if (isset($gradient_info['info']['x1'])) { $x1 = $gradient_info['info']['x1']; }
291 else { $x1 = 0; }
292 if (isset($gradient_info['info']['y1'])) { $y1 = $gradient_info['info']['y1']; }
293 else { $y1 = 0; }
294 if (isset($gradient_info['info']['x2'])) { $x2 = $gradient_info['info']['x2']; }
295 else { $x2 = 1; }
296 if (isset($gradient_info['info']['y2'])) { $y2 = $gradient_info['info']['y2']; }
297 else { $y2 = 0; }
298
299 if (stristr($x1, '%')!== false) { $x1 = ($x1+0)/100; }
300 if (stristr($x2, '%')!== false) { $x2 = ($x2+0)/100; }
301 if (stristr($y1, '%')!== false) { $y1 = ($y1+0)/100; }
302 if (stristr($y2, '%')!== false) { $y2 = ($y2+0)/100; }
303
304 // mPDF 5.0.042
305 $bboxw = $w;
306 $bboxh = $h;
307 $usex = $x_offset;
308 $usey = $y_offset;
309 $usew = $bboxw;
310 $useh = $bboxh;
311 if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
312 $angle = rad2deg(atan2(($gradient_info['info']['y2']-$gradient_info['info']['y1']), ($gradient_info['info']['x2']-$gradient_info['info']['x1'])));
313 if ($angle < 0) { $angle += 360; }
314 else if ($angle > 360) { $angle -= 360; }
315 if ($angle!=0 && $angle!=360 && $angle!=90 && $angle!=180 && $angle!=270) {
316 if ($w >= $h) {
317 $y1 *= $h/$w ;
318 $y2 *= $h/$w ;
319 $usew = $useh = $bboxw;
320 }
321 else {
322 $x1 *= $w/$h ;
323 $x2 *= $w/$h ;
324 $usew = $useh = $bboxh;
325 }
326 }
327 }
328 $a = $usew; // width
329 $d = -$useh; // height
330 $e = $usex; // x- offset
331 $f = -$usey; // -y-offset
332
333 $return .= sprintf('%.3F 0 0 %.3F %.3F %.3F cm ', $a*$this->kp, $d*$this->kp, $e*$this->kp, $f*$this->kp);
334
335 // mPDF 5.0.039
336 if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='objectboundingbox') {
337 if ($transformations) { $return .= $transformations; }
338 }
339
340 // mPDF 5.0.020
341 $trans = false;
342
343 // mPDF 5.0.040
344 if ($spread=='R' || $spread=='F') { // Repeat / Reflect
345 $offs = array();
346 for($i=0;$i<$ns;$i++) {
347 $offs[$i] = $gradient_info['color'][$i]['offset'];
348 }
349 $gp = 0;
350 $inside=true;
351 while($inside) {
352 $gp++;
353 for($i=0;$i<$ns;$i++) {
354 if ($spread=='F' && ($gp % 2) == 1) { // Reflect
355 $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][(($ns*($gp-1))+($ns-$i-1))];
356 $tmp = $gp+(1-$offs[($ns-$i-1)]) ;
357 $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp;
358 }
359 else { // Reflect
360 $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][$i];
361 $tmp = $gp+$offs[$i] ;
362 $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp;
363 }
364 // IF STILL INSIDE BOX OR STILL VALID
365 // Point on axis to test
366 $px1 = $x1 + ($x2-$x1)*$tmp;
367 $py1 = $y1 + ($y2-$y1)*$tmp;
368 // Get perpendicular axis
369 $alpha = atan2($y2-$y1, $x2-$x1);
370 $alpha += M_PI/2; // rotate 90 degrees
371 // Get arbitrary point to define line perpendicular to axis
372 $px2 = $px1+cos($alpha);
373 $py2 = $py1+sin($alpha);
374
375 $res1 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 0, 1); // $x=0 vert axis
376 $res2 = _testIntersect($px1, $py1, $px2, $py2, 1, 0, 1, 1); // $x=1 vert axis
377 $res3 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 1, 0); // $y=0 horiz axis
378 $res4 = _testIntersect($px1, $py1, $px2, $py2, 0, 1, 1, 1); // $y=1 horiz axis
379 if (!$res1 && !$res2 && !$res3 && !$res4) { $inside = false; }
380 }
381 }
382
383 $inside=true;
384 $gp = 0;
385 while($inside) {
386 $gp++;
387 $newarr = array();
388 for($i=0;$i<$ns;$i++) {
389 if ($spread=='F') { // Reflect
390 $newarr[$i] = $gradient_info['color'][($ns-$i-1)];
391 if (($gp % 2) == 1) {
392 $tmp = -$gp+(1-$offs[($ns-$i-1)]);
393 $newarr[$i]['offset'] = $tmp;
394 }
395 else {
396 $tmp = -$gp+$offs[$i];
397 $newarr[$i]['offset'] = $tmp;
398 }
399 }
400 else { // Reflect
401 $newarr[$i] = $gradient_info['color'][$i];
402 $tmp = -$gp+$offs[$i];
403 $newarr[$i]['offset'] = $tmp;
404 }
405
406 // IF STILL INSIDE BOX OR STILL VALID
407 // Point on axis to test
408 $px1 = $x1 + ($x2-$x1)*$tmp;
409 $py1 = $y1 + ($y2-$y1)*$tmp;
410 // Get perpendicular axis
411 $alpha = atan2($y2-$y1, $x2-$x1);
412 $alpha += M_PI/2; // rotate 90 degrees
413 // Get arbitrary point to define line perpendicular to axis
414 $px2 = $px1+cos($alpha);
415 $py2 = $py1+sin($alpha);
416
417 $res1 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 0, 1); // $x=0 vert axis
418 $res2 = _testIntersect($px1, $py1, $px2, $py2, 1, 0, 1, 1); // $x=1 vert axis
419 $res3 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 1, 0); // $y=0 horiz axis
420 $res4 = _testIntersect($px1, $py1, $px2, $py2, 0, 1, 1, 1); // $y=1 horiz axis
421 if (!$res1 && !$res2 && !$res3 && !$res4) { $inside = false; }
422 }
423 for($i=($ns-1);$i>=0;$i--) {
424 if (isset($newarr[$i]['offset'])) array_unshift($gradient_info['color'], $newarr[$i]);
425 }
426 }
427 }
428
429 // mPDF 4.4.007 Gradient STOPs
430 $stops = count($gradient_info['color']);
431 if ($stops < 2) { return ''; }
432
433 // mPDF 5.0.042
434 $range = $gradient_info['color'][count($gradient_info['color'])-1]['offset']-$gradient_info['color'][0]['offset'];
435 $min = $gradient_info['color'][0]['offset'];
436
437 for ($i=0; $i<($stops); $i++) {
438 // mPDF 5.0.051
439 if (!$gradient_info['color'][$i]['color']) {
440 if ($gradient_info['colorspace']=='RGB') $gradient_info['color'][$i]['color'] = '0 0 0';
441 else if ($gradient_info['colorspace']=='Gray') $gradient_info['color'][$i]['color'] = '0';
442 else if ($gradient_info['colorspace']=='CMYK') $gradient_info['color'][$i]['color'] = '1 1 1 1';
443 }
444 $offset = ($gradient_info['color'][$i]['offset'] - $min)/$range;
445 $this->mpdf_ref->gradients[$n]['stops'][] = array(
446 'col' => $gradient_info['color'][$i]['color'],
447 'opacity' => $gradient_info['color'][$i]['opacity'],
448 'offset' => $offset);
449 if ($gradient_info['color'][$i]['opacity']<1) { $trans = true; }
450 }
451 $grx1 = $x1 + ($x2-$x1)*$gradient_info['color'][0]['offset'];
452 $gry1 = $y1 + ($y2-$y1)*$gradient_info['color'][0]['offset'];
453 $grx2 = $x1 + ($x2-$x1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
454 $gry2 = $y1 + ($y2-$y1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
455
456 $this->mpdf_ref->gradients[$n]['coords']=array($grx1, $gry1, $grx2, $gry2);
457
458 $this->mpdf_ref->gradients[$n]['colorspace'] = $gradient_info['colorspace']; // mPDF 5.0.051
459
460 $this->mpdf_ref->gradients[$n]['type'] = 2;
461 $this->mpdf_ref->gradients[$n]['fo'] = true;
462
463 $this->mpdf_ref->gradients[$n]['extend']=array('true','true');
464 if ($trans) {
465 $this->mpdf_ref->gradients[$n]['trans'] = true;
466 $return .= ' /TGS'.($n).' gs ';
467 }
468 $return .= ' /Sh'.($n).' sh ';
469 $return .= " Q\n";
470 }
471 else if ($gradient_info['type'] == 'radial'){
472 // mPDF 4.4.003
473 if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
474 if ($w > $h) { $h = $w; }
475 else { $w = $h; }
476 if (isset($gradient_info['info']['x0'])) { $gradient_info['info']['x0'] = ($gradient_info['info']['x0']-$x_offset) / $w; }
477 if (isset($gradient_info['info']['y0'])) { $gradient_info['info']['y0'] = ($gradient_info['info']['y0']-$y_offset) / $h; }
478 if (isset($gradient_info['info']['x1'])) { $gradient_info['info']['x1'] = ($gradient_info['info']['x1']-$x_offset) / $w; }
479 if (isset($gradient_info['info']['y1'])) { $gradient_info['info']['y1'] = ($gradient_info['info']['y1']-$y_offset) / $h; }
480 if (isset($gradient_info['info']['r'])) { $gradient_info['info']['rx'] = $gradient_info['info']['r'] / $w; }
481 if (isset($gradient_info['info']['r'])) { $gradient_info['info']['ry'] = $gradient_info['info']['r'] / $h; }
482 }
483
484 if ($gradient_info['info']['x0'] || $gradient_info['info']['x0']===0) { $x0 = $gradient_info['info']['x0']; }
485 else { $x0 = 0.5; }
486 if ($gradient_info['info']['y0'] || $gradient_info['info']['y0']===0) { $y0 = $gradient_info['info']['y0']; }
487 else { $y0 = 0.5; }
488 if ($gradient_info['info']['rx'] || $gradient_info['info']['rx']===0) { $rx = $gradient_info['info']['rx']; }
489 else if ($gradient_info['info']['r'] || $gradient_info['info']['r']===0) { $rx = $gradient_info['info']['r']; }
490 else { $rx = 0.5; }
491 if ($gradient_info['info']['ry'] || $gradient_info['info']['ry']===0) { $ry = $gradient_info['info']['ry']; }
492 else if ($gradient_info['info']['r'] || $gradient_info['info']['r']===0) { $ry = $gradient_info['info']['r']; }
493 else { $ry = 0.5; }
494 if ($gradient_info['info']['x1'] || $gradient_info['info']['x1']===0) { $x1 = $gradient_info['info']['x1']; }
495 else { $x1 = $x0; }
496 if ($gradient_info['info']['y1'] || $gradient_info['info']['y1']===0) { $y1 = $gradient_info['info']['y1']; }
497 else { $y1 = $y0; }
498
499 if (stristr($x1, '%')!== false) { $x1 = ($x1+0)/100; }
500 if (stristr($x0, '%')!== false) { $x0 = ($x0+0)/100; }
501 if (stristr($y1, '%')!== false) { $y1 = ($y1+0)/100; }
502 if (stristr($y0, '%')!== false) { $y0 = ($y0+0)/100; }
503 if (stristr($rx, '%')!== false) { $rx = ($rx+0)/100; }
504 if (stristr($ry, '%')!== false) { $ry = ($ry+0)/100; }
505
506 // mPDF 5.0.043
507 $bboxw = $w;
508 $bboxh = $h;
509 $usex = $x_offset;
510 $usey = $y_offset;
511 $usew = $bboxw;
512 $useh = $bboxh;
513 if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
514 $angle = rad2deg(atan2(($gradient_info['info']['y0']-$gradient_info['info']['y1']), ($gradient_info['info']['x0']-$gradient_info['info']['x1'])));
515 if ($angle < 0) { $angle += 360; }
516 else if ($angle > 360) { $angle -= 360; }
517 if ($angle!=0 && $angle!=360 && $angle!=90 && $angle!=180 && $angle!=270) {
518 if ($w >= $h) {
519 $y1 *= $h/$w ;
520 $y0 *= $h/$w ;
521 $rx *= $h/$w ;
522 $ry *= $h/$w ;
523 $usew = $useh = $bboxw;
524 }
525 else {
526 $x1 *= $w/$h ;
527 $x0 *= $w/$h ;
528 $rx *= $w/$h ;
529 $ry *= $w/$h ;
530 $usew = $useh = $bboxh;
531 }
532 }
533 }
534 $a = $usew; // width
535 $d = -$useh; // height
536 $e = $usex; // x- offset
537 $f = -$usey; // -y-offset
538
539 $r = $rx;
540
541
542 $return .= sprintf('%.3F 0 0 %.3F %.3F %.3F cm ', $a*$this->kp, $d*$this->kp, $e*$this->kp, $f*$this->kp);
543
544 // mPDF 5.0.039
545 if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='objectboundingbox') {
546 if ($transformations) { $return .= $transformations; }
547 }
548
549 // x1 and y1 (fx, fy) should be inside the circle defined by x0 y0 and r else error in mPDF
550 while (pow(($x1-$x0),2) + pow(($y1 - $y0),2) >= pow($r,2)) { $r += 0.05; }
551
552 // mPDF 5.0.040
553 if ($spread=='R' || $spread=='F') { // Repeat / Reflect
554 $offs = array();
555 for($i=0;$i<$ns;$i++) {
556 $offs[$i] = $gradient_info['color'][$i]['offset'];
557 }
558 $gp = 0;
559 $inside=true;
560 while($inside) {
561 $gp++;
562 for($i=0;$i<$ns;$i++) {
563 if ($spread=='F' && ($gp % 2) == 1) { // Reflect
564 $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][(($ns*($gp-1))+($ns-$i-1))];
565 $tmp = $gp+(1-$offs[($ns-$i-1)]) ;
566 $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp;
567 }
568 else { // Reflect
569 $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][$i];
570 $tmp = $gp+$offs[$i] ;
571 $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp;
572 }
573 // IF STILL INSIDE BOX OR STILL VALID
574 // TEST IF circle (perimeter) intersects with
575 // or is enclosed
576 // Point on axis to test
577 $px = $x1 + ($x0-$x1)*$tmp;
578 $py = $y1 + ($y0-$y1)*$tmp;
579 $pr = $r*$tmp;
580 $res = _testIntersectCircle($px, $py, $pr);
581 if (!$res) { $inside = false; }
582 }
583 }
584 }
585
586 // mPDF 4.4.007 Gradient STOPs
587 $stops = count($gradient_info['color']);
588 if ($stops < 2) { return ''; }
589
590 // mPDF 5.0.043
591 $range = $gradient_info['color'][count($gradient_info['color'])-1]['offset']-$gradient_info['color'][0]['offset'];
592 $min = $gradient_info['color'][0]['offset'];
593
594 for ($i=0; $i<($stops); $i++) {
595 // mPDF 5.0.051
596 if (!$gradient_info['color'][$i]['color']) {
597 if ($gradient_info['colorspace']=='RGB') $gradient_info['color'][$i]['color'] = '0 0 0';
598 else if ($gradient_info['colorspace']=='Gray') $gradient_info['color'][$i]['color'] = '0';
599 else if ($gradient_info['colorspace']=='CMYK') $gradient_info['color'][$i]['color'] = '1 1 1 1';
600 }
601 $offset = ($gradient_info['color'][$i]['offset'] - $min)/$range;
602 $this->mpdf_ref->gradients[$n]['stops'][] = array(
603 'col' => $gradient_info['color'][$i]['color'],
604 'opacity' => $gradient_info['color'][$i]['opacity'],
605 'offset' => $offset);
606 if ($gradient_info['color'][$i]['opacity']<1) { $trans = true; }
607 }
608 $grx1 = $x1 + ($x0-$x1)*$gradient_info['color'][0]['offset'];
609 $gry1 = $y1 + ($y0-$y1)*$gradient_info['color'][0]['offset'];
610 $grx2 = $x1 + ($x0-$x1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
611 $gry2 = $y1 + ($y0-$y1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
612 $grir = $r*$gradient_info['color'][0]['offset'];
613 $grr = $r*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
614
615 $this->mpdf_ref->gradients[$n]['coords']=array($grx1, $gry1, $grx2, $gry2, abs($grr), abs($grir) );
616
617 $grx1 = $x1 + ($x0-$x1)*$first_stop;
618 $gry1 = $y1 + ($y0-$y1)*$first_stop;
619 $grx2 = $x1 + ($x0-$x1)*$last_stop;
620 $gry2 = $y1 + ($y0-$y1)*$last_stop;
621 $grir = $r*$first_stop;
622 $grr = $r*$last_stop;
623 $this->mpdf_ref->gradients[$n]['colorspace'] = $gradient_info['colorspace']; // mPDF 5.0.051
624
625 $this->mpdf_ref->gradients[$n]['type'] = 3;
626 $this->mpdf_ref->gradients[$n]['fo'] = true;
627
628 $this->mpdf_ref->gradients[$n]['extend']=array('true','true');
629 if ($trans) {
630 $this->mpdf_ref->gradients[$n]['trans'] = true;
631 $return .= ' /TGS'.($n).' gs ';
632 }
633 $return .= ' /Sh'.($n).' sh ';
634 $return .= " Q\n";
635
636
637 }
638
639 return $return;
640 }
641
642
643 function svgOffset ($attribs){
644 // save all <svg> tag attributes
645 $this->svg_attribs = $attribs;
646 if(isset($this->svg_attribs['viewBox'])) {
647 $vb = preg_split('/\s+/is', trim($this->svg_attribs['viewBox']));
648 if (count($vb)==4) {
649 $this->svg_info['x'] = $vb[0];
650 $this->svg_info['y'] = $vb[1];
651 $this->svg_info['w'] = $vb[2];
652 $this->svg_info['h'] = $vb[3];
653// return; // mPDF 5.0.005
654 }
655 }
656
657 $svg_w = $this->mpdf_ref->ConvertSize($attribs['width']); // mm (interprets numbers as pixels)
658 $svg_h = $this->mpdf_ref->ConvertSize($attribs['height']); // mm
659
660///*
661 // mPDF 5.0.005
662 if ($this->svg_info['w']) { // if 'w' set by viewBox
663 if ($svg_w) { // if width also set, use these values to determine to set size of "pixel"
664 $this->kp *= ($svg_w/0.2645) / $this->svg_info['w'];
665 $this->kf = ($svg_w/0.2645) / $this->svg_info['w']; // mPDF 5.0.039
666 }
667 else if ($svg_h) {
668 $this->kp *= ($svg_h/0.2645) / $this->svg_info['h'];
669 $this->kf = ($svg_h/0.2645) / $this->svg_info['h']; // mPDF 5.0.039
670 }
671 return;
672 }
673//*/
674
675 // Added to handle file without height or width specified
676 if (!$svg_w && !$svg_h) { $svg_w = $svg_h = $this->mpdf_ref->blk[$this->mpdf_ref->blklvl]['inner_width'] ; } // DEFAULT
677 if (!$svg_w) { $svg_w = $svg_h; }
678 if (!$svg_h) { $svg_h = $svg_w; }
679
680 $this->svg_info['x'] = 0;
681 $this->svg_info['y'] = 0;
682 $this->svg_info['w'] = $svg_w/0.2645; // mm->pixels
683 $this->svg_info['h'] = $svg_h/0.2645; // mm->pixels
684
685 }
686
687
688 //
689 // check if points are within svg, if not, set to max
690 function svg_overflow($x,$y)
691 {
692 $x2 = $x;
693 $y2 = $y;
694 if(isset($this->svg_attribs['overflow']))
695 {
696 if($this->svg_attribs['overflow'] == 'hidden')
697 {
698 // Not sure if this is supposed to strip off units, but since I dont use any I will omlt this step
699 $svg_w = preg_replace("/([0-9\.]*)(.*)/i","$1",$this->svg_attribs['width']);
700 $svg_h = preg_replace("/([0-9\.]*)(.*)/i","$1",$this->svg_attribs['height']);
701
702 // $xmax = floor($this->svg_attribs['width']);
703 $xmax = floor($svg_w);
704 $xmin = 0;
705 // $ymax = floor(($this->svg_attribs['height'] * -1));
706 $ymax = floor(($svg_h * -1));
707 $ymin = 0;
708
709 if($x > $xmax) $x2 = $xmax; // right edge
710 if($x < $xmin) $x2 = $xmin; // left edge
711 if($y < $ymax) $y2 = $ymax; // bottom
712 if($y > $ymin) $y2 = $ymin; // top
713
714 }
715 }
716
717
718 return array( 'x' => $x2, 'y' => $y2);
719 }
720
721
722
723 function svgDefineStyle($critere_style){
724
725 $tmp = count($this->svg_style)-1;
726 $current_style = $this->svg_style[$tmp];
727
728 unset($current_style['transformations']);
729
730 // TRANSFORM SCALE
731 $transformations = '';
732 if (isset($critere_style['transform'])){
733 preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)\((.*?)\)/is',$critere_style['transform'],$m);
734 if (count($m[0])) {
735 for($i=0; $i<count($m[0]); $i++) {
736 $c = strtolower($m[1][$i]);
737 $v = trim($m[2][$i]);
738 $vv = preg_split('/[ ,]+/',$v);
739 if ($c=='matrix' && count($vv)==6) {
740 // mPDF 5.0.039
741 // Note angle of rotation is reversed (from SVG to PDF), so vv[1] and vv[2] are negated
742 $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);
743
744/*
745// The long way of doing this??
746// need to reverse angle of rotation from SVG to PDF
747$sx=sqrt(pow($vv[0],2)+pow($vv[2],2));
748if ($vv[0] < 0) { $sx *= -1; } // change sign
749$sy=sqrt(pow($vv[1],2)+pow($vv[3],2));
750if ($vv[3] < 0) { $sy *= -1; } // change sign
751
752// rotation angle is
753$t=atan2($vv[1],$vv[3]);
754$t=atan2(-$vv[2],$vv[0]); // Should be the same value or skew has been applied
755
756// Reverse angle
757$t *= -1;
758
759// Rebuild matrix
760$ma = $sx * cos($t);
761$mb = $sy * sin($t);
762$mc = -$sx * sin($t);
763$md = $sy * cos($t);
764
765// $transformations .= sprintf(' %.3F %.3F %.3F %.3F %.3F %.3F cm ', $ma, $mb, $mc, $md, $vv[4]*$this->kp, -$vv[5]*$this->kp);
766*/
767
768 }
769 else if ($c=='translate' && count($vv)) {
770 $tm[4] = $vv[0];
771 if (count($vv)==2) { $t_y = -$vv[1]; }
772 else { $t_y = 0; }
773 $tm[5] = $t_y;
774 $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $tm[4]*$this->kp, $tm[5]*$this->kp);
775 }
776 else if ($c=='scale' && count($vv)) {
777 if (count($vv)==2) { $s_y = $vv[1]; }
778 else { $s_y = $vv[0]; }
779 $tm[0] = $vv[0];
780 $tm[3] = $s_y;
781 $transformations .= sprintf(' %.3F 0 0 %.3F 0 0 cm ', $tm[0], $tm[3]);
782 }
783 else if ($c=='rotate' && count($vv)) {
784 $tm[0] = cos(deg2rad(-$vv[0]));
785 $tm[1] = sin(deg2rad(-$vv[0]));
786 $tm[2] = -$tm[1];
787 $tm[3] = $tm[0];
788 if (count($vv)==3) {
789 $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $vv[1]*$this->kp, -$vv[2]*$this->kp);
790 }
791 $transformations .= sprintf(' %.3F %.3F %.3F %.3F 0 0 cm ', $tm[0], $tm[1], $tm[2], $tm[3]);
792 if (count($vv)==3) {
793 $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', -$vv[1]*$this->kp, $vv[2]*$this->kp);
794 }
795 }
796 else if ($c=='skewx' && count($vv)) {
797 $tm[2] = tan(deg2rad(-$vv[0]));
798 $transformations .= sprintf(' 1 0 %.3F 1 0 0 cm ', $tm[2]);
799 }
800 else if ($c=='skewy' && count($vv)) {
801 $tm[1] = tan(deg2rad(-$vv[0]));
802 $transformations .= sprintf(' 1 %.3F 0 1 0 0 cm ', $tm[1]);
803 }
804
805 }
806 }
807 $current_style['transformations'] = $transformations;
808 }
809
810 if (isset($critere_style['style'])){
811 if (preg_match('/fill:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/i',$critere_style['style'], $m)) { // mPDF 5.7.2
812 $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);
813 }
814 else { $tmp = preg_replace("/(.*)fill:\s*([a-z0-9#_()]*|none)(.*)/i","$2",$critere_style['style']); // mPDF 4.4.003
815 if ($tmp != $critere_style['style']){ $current_style['fill'] = $tmp; }
816 }
817
818 // mPDF 5.7.2
819 if (preg_match("/[^-]opacity:\s*([a-z0-9.]*|none)/i",$critere_style['style'], $m) ||
820 preg_match("/^opacity:\s*([a-z0-9.]*|none)/i",$critere_style['style'], $m)) {
821 $current_style['fill-opacity'] = $m[1];
822 $current_style['stroke-opacity'] = $m[1];
823 }
824
825 $tmp = preg_replace("/(.*)fill-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
826 if ($tmp != $critere_style['style']){ $current_style['fill-opacity'] = $tmp;}
827
828 $tmp = preg_replace("/(.*)fill-rule:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
829 if ($tmp != $critere_style['style']){ $current_style['fill-rule'] = $tmp;}
830
831 if (preg_match('/stroke:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
832 $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);
833 }
834 else { $tmp = preg_replace("/(.*)stroke:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
835 if ($tmp != $critere_style['style']){ $current_style['stroke'] = $tmp; }
836 }
837
838 $tmp = preg_replace("/(.*)stroke-linecap:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
839 if ($tmp != $critere_style['style']){ $current_style['stroke-linecap'] = $tmp;}
840
841 $tmp = preg_replace("/(.*)stroke-linejoin:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
842 if ($tmp != $critere_style['style']){ $current_style['stroke-linejoin'] = $tmp;}
843
844 $tmp = preg_replace("/(.*)stroke-miterlimit:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
845 if ($tmp != $critere_style['style']){ $current_style['stroke-miterlimit'] = $tmp;}
846
847 $tmp = preg_replace("/(.*)stroke-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
848 if ($tmp != $critere_style['style']){ $current_style['stroke-opacity'] = $tmp; }
849
850 $tmp = preg_replace("/(.*)stroke-width:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
851 if ($tmp != $critere_style['style']){ $current_style['stroke-width'] = $tmp;}
852
853 // mPDF 4.4.003
854 $tmp = preg_replace("/(.*)stroke-dasharray:\s*([a-z0-9., ]*|none)(.*)/i","$2",$critere_style['style']);
855 if ($tmp != $critere_style['style']){ $current_style['stroke-dasharray'] = $tmp;}
856
857 // mPDF 4.4.003
858 $tmp = preg_replace("/(.*)stroke-dashoffset:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
859 if ($tmp != $critere_style['style']){ $current_style['stroke-dashoffset'] = $tmp;}
860
861 }
862 // mPDF 5.7.2
863 if(isset($critere_style['opacity'])){
864 $current_style['fill-opacity'] = $critere_style['opacity'];
865 $current_style['stroke-opacity'] = $critere_style['opacity'];
866 }
867
868 if(isset($critere_style['fill'])){
869 $current_style['fill'] = $critere_style['fill'];
870 }
871
872 if(isset($critere_style['fill-opacity'])){
873 $current_style['fill-opacity'] = $critere_style['fill-opacity'];
874 }
875
876 if(isset($critere_style['fill-rule'])){
877 $current_style['fill-rule'] = $critere_style['fill-rule'];
878 }
879
880 if(isset($critere_style['stroke'])){
881 $current_style['stroke'] = $critere_style['stroke'];
882 }
883
884 if(isset($critere_style['stroke-linecap'])){
885 $current_style['stroke-linecap'] = $critere_style['stroke-linecap'];
886 }
887
888 if(isset($critere_style['stroke-linejoin'])){
889 $current_style['stroke-linejoin'] = $critere_style['stroke-linejoin'];
890 }
891
892 if(isset($critere_style['stroke-miterlimit'])){
893 $current_style['stroke-miterlimit'] = $critere_style['stroke-miterlimit'];
894 }
895
896 if(isset($critere_style['stroke-opacity'])){
897 $current_style['stroke-opacity'] = $critere_style['stroke-opacity'];
898 }
899
900 if(isset($critere_style['stroke-width'])){
901 $current_style['stroke-width'] = $critere_style['stroke-width'];
902 }
903
904 // mPDF 4.4.003
905 if(isset($critere_style['stroke-dasharray'])){
906 $current_style['stroke-dasharray'] = $critere_style['stroke-dasharray'];
907 }
908 if(isset($critere_style['stroke-dashoffset'])){
909 $current_style['stroke-dashoffset'] = $critere_style['stroke-dashoffset'];
910 }
911
912 // mPDF 4.4.005 Used as indirect setting for currentColor
913 if(isset($critere_style['color']) && $critere_style['color'] != 'inherit'){
914 $current_style['color'] = $critere_style['color'];
915 }
916
917 return $current_style;
918
919 }
920
921 //
922 // Cette fonction ecrit le style dans le stream svg.
923 function svgStyle($critere_style, $attribs, $element){
924 $path_style = '';
925 if (substr_count($critere_style['fill'],'url')>0 && $element != 'line'){
926 //
927 // couleur degradé
928 $id_gradient = preg_replace("/url\(#([\w_]*)\)/i","$1",$critere_style['fill']);
929 if ($id_gradient != $critere_style['fill']) {
930 if (isset($this->svg_gradient[$id_gradient])) {
931 $fill_gradient = $this->svgGradient($this->svg_gradient[$id_gradient], $attribs, $element);
932 if ($fill_gradient) { // mPDF 4.4.003
933 $path_style = "q ";
934 $w = "W";
935 $style .= 'N';
936 }
937 }
938 }
939
940 }
941 // mPDF 4.4.005 Used as indirect setting for currentColor
942 else if (strtolower($critere_style['fill']) == 'currentcolor' && $element != 'line'){
943 $col = $this->mpdf_ref->ConvertColor($critere_style['color']);
944 if ($col) {
945 // mPDF 5.0.051
946 // mPDF 5.3.74
947 if ($col{0}==5) { $critere_style['fill-opacity'] = ord($col{4}/100); } // RGBa
948 if ($col{0}==6) { $critere_style['fill-opacity'] = ord($col{5}/100); } // CMYKa
949 $path_style .= $this->mpdf_ref->SetFColor($col, true).' '; // mPDF 5.0.051
950 $style .= 'F';
951 }
952 }
953 else if ($critere_style['fill'] != 'none' && $element != 'line'){
954 $col = $this->mpdf_ref->ConvertColor($critere_style['fill']);
955 if ($col) {
956 // mPDF 5.0.051
957 // mPDF 5.3.74
958 if ($col{0}==5) { $critere_style['fill-opacity'] = ord($col{4}/100); } // RGBa
959 if ($col{0}==6) { $critere_style['fill-opacity'] = ord($col{5}/100); } // CMYKa
960 $path_style .= $this->mpdf_ref->SetFColor($col, true).' '; // mPDF 5.0.051
961 $style .= 'F';
962 }
963 }
964
965 // mPDF 5.0.040
966 if (substr_count($critere_style['stroke'],'url')>0){
967/*
968 // Cannot put a gradient on a "stroke" in PDF?
969 $id_gradient = preg_replace("/url\(#([\w_]*)\)/i","$1",$critere_style['stroke']);
970 if ($id_gradient != $critere_style['stroke']) {
971 if (isset($this->svg_gradient[$id_gradient])) {
972 $fill_gradient = $this->svgGradient($this->svg_gradient[$id_gradient], $attribs, $element);
973 if ($fill_gradient) {
974 $path_style = "q ";
975 $w = "W";
976 $style .= 'D';
977 }
978 }
979 }
980*/
981 }
982 // mPDF 4.4.005 Used as indirect setting for currentColor
983 else if (strtolower($critere_style['stroke']) == 'currentcolor'){
984 $col = $this->mpdf_ref->ConvertColor($critere_style['color']);
985 if ($col) {
986 // mPDF 5.0.051
987 // mPDF 5.3.74
988 if ($col{0}==5) { $critere_style['stroke-opacity'] = ord($col{4}/100); } // RGBa
989 if ($col{0}==6) { $critere_style['stroke-opacity'] = ord($col{5}/100); } // CMYKa
990 $path_style .= $this->mpdf_ref->SetDColor($col, true).' '; // mPDF 5.0.051
991 $style .= 'D';
992 $lw = $this->ConvertSVGSizePixels($critere_style['stroke-width']);
993 $path_style .= sprintf('%.3F w ',$lw*$this->kp);
994 }
995 }
996 else if ($critere_style['stroke'] != 'none'){
997 $col = $this->mpdf_ref->ConvertColor($critere_style['stroke']);
998 if ($col) {
999 // mPDF 5.0.051
1000 // mPDF 5.3.74
1001 if ($col{0}==5) { $critere_style['stroke-opacity'] = ord($col{4}/100); } // RGBa
1002 if ($col{0}==6) { $critere_style['stroke-opacity'] = ord($col{5}/100); } // CMYKa
1003 $path_style .= $this->mpdf_ref->SetDColor($col, true).' '; // mPDF 5.0.051
1004 $style .= 'D';
1005 $lw = $this->ConvertSVGSizePixels($critere_style['stroke-width']); // mPDF 4.4.003
1006 $path_style .= sprintf('%.3F w ',$lw*$this->kp);
1007 }
1008 }
1009
1010
1011 if ($critere_style['stroke'] != 'none'){
1012 if ($critere_style['stroke-linejoin'] == 'miter'){
1013 $path_style .= ' 0 j ';
1014 }
1015 else if ($critere_style['stroke-linejoin'] == 'round'){
1016 $path_style .= ' 1 j ';
1017 }
1018 else if ($critere_style['stroke-linejoin'] == 'bevel'){
1019 $path_style .= ' 2 j ';
1020 }
1021
1022 if ($critere_style['stroke-linecap'] == 'butt'){
1023 $path_style .= ' 0 J ';
1024 }
1025 else if ($critere_style['stroke-linecap'] == 'round'){
1026 $path_style .= ' 1 J ';
1027 }
1028 else if ($critere_style['stroke-linecap'] == 'square'){
1029 $path_style .= ' 2 J ';
1030 }
1031
1032 if (isset($critere_style['stroke-miterlimit'])){
1033 if ($critere_style['stroke-miterlimit'] == 'none'){
1034 }
1035 else if (preg_match('/^[\d.]+$/',$critere_style['stroke-miterlimit'])) {
1036 $path_style .= sprintf('%.2F M ',$critere_style['stroke-miterlimit']);
1037 }
1038 }
1039 // mPDF 4.4.003
1040 if (isset($critere_style['stroke-dasharray'])){
1041 $off = 0;
1042 $d = preg_split('/[ ,]/',$critere_style['stroke-dasharray']);
1043 if (count($d) == 1 && $d[0]==0) {
1044 $path_style .= '[] 0 d ';
1045 }
1046 else {
1047 if (count($d) % 2 == 1) { $d = array_merge($d, $d); } // 5, 3, 1 => 5,3,1,5,3,1 OR 3 => 3,3
1048 $arr = '';
1049 for($i=0; $i<count($d); $i+=2) {
1050 $arr .= sprintf('%.3F %.3F ', $d[$i]*$this->kp, $d[$i+1]*$this->kp);
1051 }
1052 if (isset($critere_style['stroke-dashoffset'])){ $off = $critere_style['stroke-dashoffset'] + 0; }
1053 $path_style .= sprintf('[%s] %.3F d ', $arr, $off*$this->kp);
1054 }
1055 }
1056 }
1057
1058 // mPDF 4.4.003
1059 if ($critere_style['fill-rule']=='evenodd') { $fr = '*'; }
1060 else { $fr = ''; }
1061
1062 // mPDF 4.4.003
1063 if (isset($critere_style['fill-opacity'])) {
1064 $opacity = 1;
1065 if ($critere_style['fill-opacity'] == 0) { $opacity = 0; }
1066 else if ($critere_style['fill-opacity'] > 1) { $opacity = 1; }
1067 else if ($critere_style['fill-opacity'] > 0) { $opacity = $critere_style['fill-opacity']; }
1068 else if ($critere_style['fill-opacity'] < 0) { $opacity = 0; }
1069 $gs = $this->mpdf_ref->AddExtGState(array('ca'=>$opacity, 'BM'=>'/Normal'));
1070 $this->mpdf_ref->extgstates[$gs]['fo'] = true; // mPDF 5.0.039
1071 $path_style .= sprintf(' /GS%d gs ', $gs);
1072 }
1073
1074 // mPDF 4.4.003
1075 if (isset($critere_style['stroke-opacity'])) {
1076 $opacity = 1;
1077 if ($critere_style['stroke-opacity'] == 0) { $opacity = 0; }
1078 else if ($critere_style['stroke-opacity'] > 1) { $opacity = 1; }
1079 else if ($critere_style['stroke-opacity'] > 0) { $opacity = $critere_style['stroke-opacity']; }
1080 else if ($critere_style['stroke-opacity'] < 0) { $opacity = 0; }
1081 $gs = $this->mpdf_ref->AddExtGState(array('CA'=>$opacity, 'BM'=>'/Normal'));
1082 $this->mpdf_ref->extgstates[$gs]['fo'] = true; // mPDF 5.0.039
1083 $path_style .= sprintf(' /GS%d gs ', $gs);
1084 }
1085
1086 switch ($style){
1087 case 'F':
1088 $op = 'f';
1089 break;
1090 case 'FD':
1091 $op = 'B';
1092 break;
1093 case 'ND':
1094 $op = 'S';
1095 break;
1096 case 'D':
1097 $op = 'S';
1098 break;
1099 default:
1100 $op = 'n';
1101 }
1102
1103 // mPDF 5.0
1104 $prestyle = $path_style.' ';
1105 $poststyle = $w.' '. $op.$fr.' '.$fill_gradient."\n";
1106 return array($prestyle,$poststyle);
1107
1108 }
1109
1110 //
1111 // fonction retracant les <path />
1112 function svgPath($command, $arguments){
1113 $path_cmd = '';
1114 $newsubpath = false; // mPDF 4.4.003
1115 // mPDF 5.0.039
1116 $minl = $this->pathBBox[0];
1117 $mint = $this->pathBBox[1];
1118 $maxr = $this->pathBBox[2]+$this->pathBBox[0];
1119 $maxb = $this->pathBBox[3]+$this->pathBBox[1];
1120 // mPDF 5.0.040
1121 $start = array($this->xbase, -$this->ybase);
1122
1123 // mPDF 4.4.003
1124 preg_match_all('/[\-^]?[\d.]+(e[\-]?[\d]+){0,1}/i', $arguments, $a, PREG_SET_ORDER);
1125
1126 // if the command is a capital letter, the coords go absolute, otherwise relative
1127 if(strtolower($command) == $command) $relative = true;
1128 else $relative = false;
1129
1130
1131 $ile_argumentow = count($a);
1132
1133 // each command may have different needs for arguments [1 to 8]
1134
1135 switch(strtolower($command)){
1136 case 'm': // move
1137 for($i = 0; $i<$ile_argumentow; $i+=2){
1138 $x = $a[$i][0];
1139 $y = $a[$i+1][0];
1140 if($relative){
1141 $pdfx = ($this->xbase + $x);
1142 $pdfy = ($this->ybase - $y);
1143 $this->xbase += $x;
1144 $this->ybase += -$y;
1145 }
1146 else{
1147 $pdfx = $x;
1148 $pdfy = -$y ;
1149 $this->xbase = $x;
1150 $this->ybase = -$y;
1151 }
1152 $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
1153 // mPDF 5.0.039
1154 $minl = min($minl,$pdf_pt['x']);
1155 $maxr = max($maxr,$pdf_pt['x']);
1156 $mint = min($mint,-$pdf_pt['y']);
1157 $maxb = max($maxb,-$pdf_pt['y']);
1158 if($i == 0) $path_cmd .= sprintf('%.3F %.3F m ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
1159 else $path_cmd .= sprintf('%.3F %.3F l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
1160 // mPDF 4.4.003 Save start points of subpath
1161 if ($this->subPathInit) {
1162 $this->spxstart = $this->xbase;
1163 $this->spystart = $this->ybase;
1164 $this->subPathInit = false;
1165 }
1166 }
1167 break;
1168 case 'l': // a simple line
1169 for($i = 0; $i<$ile_argumentow; $i+=2){
1170 $x = ($a[$i][0]);
1171 $y = ($a[$i+1][0]);
1172 if($relative){
1173 $pdfx = ($this->xbase + $x);
1174 $pdfy = ($this->ybase - $y);
1175 $this->xbase += $x;
1176 $this->ybase += -$y;
1177 }
1178 else{
1179 $pdfx = $x ;
1180 $pdfy = -$y ;
1181 $this->xbase = $x;
1182 $this->ybase = -$y;
1183 }
1184 $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
1185 // mPDF 5.0.039
1186 $minl = min($minl,$pdf_pt['x']);
1187 $maxr = max($maxr,$pdf_pt['x']);
1188 $mint = min($mint,-$pdf_pt['y']);
1189 $maxb = max($maxb,-$pdf_pt['y']);
1190 $path_cmd .= sprintf('%.3F %.3F l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
1191 }
1192 break;
1193 case 'h': // a very simple horizontal line
1194 for($i = 0; $i<$ile_argumentow; $i++){
1195 $x = ($a[$i][0]);
1196 if($relative){
1197 $y = 0;
1198 $pdfx = ($this->xbase + $x) ;
1199 $pdfy = ($this->ybase - $y) ;
1200 $this->xbase += $x;
1201 $this->ybase += -$y;
1202 }
1203 else{
1204 $y = -$this->ybase;
1205 $pdfx = $x;
1206 $pdfy = -$y;
1207 $this->xbase = $x;
1208 $this->ybase = -$y;
1209 }
1210 $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
1211 // mPDF 5.0.039
1212 $minl = min($minl,$pdf_pt['x']);
1213 $maxr = max($maxr,$pdf_pt['x']);
1214 $mint = min($mint,-$pdf_pt['y']);
1215 $maxb = max($maxb,-$pdf_pt['y']);
1216 $path_cmd .= sprintf('%.3F %.3F l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
1217 }
1218 break;
1219 case 'v': // the simplest line, vertical
1220 for($i = 0; $i<$ile_argumentow; $i++){
1221 $y = ($a[$i][0]);
1222 if($relative){
1223 $x = 0;
1224 $pdfx = ($this->xbase + $x);
1225 $pdfy = ($this->ybase - $y);
1226 $this->xbase += $x;
1227 $this->ybase += -$y;
1228 }
1229 else{
1230 $x = $this->xbase;
1231 $pdfx = $x;
1232 $pdfy = -$y;
1233 $this->xbase = $x;
1234 $this->ybase = -$y;
1235 }
1236 $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
1237 // mPDF 5.0.039
1238 $minl = min($minl,$pdf_pt['x']);
1239 $maxr = max($maxr,$pdf_pt['x']);
1240 $mint = min($mint,-$pdf_pt['y']);
1241 $maxb = max($maxb,-$pdf_pt['y']);
1242 $path_cmd .= sprintf('%.3F %.3F l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
1243 }
1244 break;
1245 case 's': // bezier with first vertex equal first control
1246 // mPDF 4.4.003
1247 if (!($this->lastcommand == 'C' || $this->lastcommand == 'c' || $this->lastcommand == 'S' || $this->lastcommand == 's')) {
1248 $this->lastcontrolpoints = array(0,0);
1249 }
1250 for($i = 0; $i<$ile_argumentow; $i += 4){
1251 $x1 = $this->lastcontrolpoints[0];
1252 $y1 = $this->lastcontrolpoints[1];
1253 $x2 = ($a[$i][0]);
1254 $y2 = ($a[$i+1][0]);
1255 $x = ($a[$i+2][0]);
1256 $y = ($a[$i+3][0]);
1257 if($relative){
1258 $pdfx1 = ($this->xbase + $x1);
1259 $pdfy1 = ($this->ybase - $y1);
1260 $pdfx2 = ($this->xbase + $x2);
1261 $pdfy2 = ($this->ybase - $y2);
1262 $pdfx = ($this->xbase + $x);
1263 $pdfy = ($this->ybase - $y);
1264 $this->xbase += $x;
1265 $this->ybase += -$y;
1266 }
1267 else{
1268 $pdfx1 = $this->xbase + $x1;
1269 $pdfy1 = $this->ybase -$y1;
1270 $pdfx2 = $x2;
1271 $pdfy2 = -$y2;
1272 $pdfx = $x;
1273 $pdfy = -$y;
1274 $this->xbase = $x;
1275 $this->ybase = -$y;
1276 }
1277 $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2)); // mPDF 4.4.003 always relative
1278
1279 $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
1280
1281 // mPDF 5.0.040
1282 $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
1283 $bx = calc_bezier_bbox($start, $curves);
1284 $minl = min($minl,$bx[0]);
1285 $maxr = max($maxr,$bx[2]);
1286 $mint = min($mint,$bx[1]);
1287 $maxb = max($maxb,$bx[3]);
1288
1289 if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
1290 {
1291 $path_cmd .= sprintf('%.3F %.3F l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
1292 }
1293 else
1294 {
1295 $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);
1296 }
1297
1298 }
1299 break;
1300 case 'c': // bezier with second vertex equal second control
1301 for($i = 0; $i<$ile_argumentow; $i += 6){
1302 $x1 = ($a[$i][0]);
1303 $y1 = ($a[$i+1][0]);
1304 $x2 = ($a[$i+2][0]);
1305 $y2 = ($a[$i+3][0]);
1306 $x = ($a[$i+4][0]);
1307 $y = ($a[$i+5][0]);
1308
1309
1310 if($relative){
1311 $pdfx1 = ($this->xbase + $x1);
1312 $pdfy1 = ($this->ybase - $y1);
1313 $pdfx2 = ($this->xbase + $x2);
1314 $pdfy2 = ($this->ybase - $y2);
1315 $pdfx = ($this->xbase + $x);
1316 $pdfy = ($this->ybase - $y);
1317 $this->xbase += $x;
1318 $this->ybase += -$y;
1319 }
1320 else{
1321 $pdfx1 = $x1;
1322 $pdfy1 = -$y1;
1323 $pdfx2 = $x2;
1324 $pdfy2 = -$y2;
1325 $pdfx = $x;
1326 $pdfy = -$y;
1327 $this->xbase = $x;
1328 $this->ybase = -$y;
1329 }
1330 $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2)); // mPDF 4.4.003 always relative
1331 // $pdf_pt2 = $this->svg_overflow($pdfx2,$pdfy2);
1332 // $pdf_pt1 = $this->svg_overflow($pdfx1,$pdfy1);
1333 $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
1334
1335 // mPDF 5.0.040
1336 $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
1337 $bx = calc_bezier_bbox($start, $curves);
1338 $minl = min($minl,$bx[0]);
1339 $maxr = max($maxr,$bx[2]);
1340 $mint = min($mint,$bx[1]);
1341 $maxb = max($maxb,$bx[3]);
1342
1343 if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
1344 {
1345 $path_cmd .= sprintf('%.3F %.3F l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
1346 }
1347 else
1348 {
1349 $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);
1350 }
1351
1352 }
1353 break;
1354
1355 case 'q': // bezier quadratic avec point de control
1356 for($i = 0; $i<$ile_argumentow; $i += 4){
1357 $x1 = ($a[$i][0]);
1358 $y1 = ($a[$i+1][0]);
1359 $x = ($a[$i+2][0]);
1360 $y = ($a[$i+3][0]);
1361 if($relative){
1362 $pdfx = ($this->xbase + $x);
1363 $pdfy = ($this->ybase - $y);
1364
1365 $pdfx1 = ($this->xbase + ($x1*2/3));
1366 $pdfy1 = ($this->ybase - ($y1*2/3));
1367 // mPDF 4.4.003
1368 $pdfx2 = $pdfx1 + 1/3 *($x);
1369 $pdfy2 = $pdfy1 + 1/3 *(-$y) ;
1370
1371 $this->xbase += $x;
1372 $this->ybase += -$y;
1373 }
1374 else{
1375 $pdfx = $x;
1376 $pdfy = -$y;
1377
1378 $pdfx1 = ($this->xbase+(($x1-$this->xbase)*2/3));
1379 $pdfy1 = ($this->ybase-(($y1+$this->ybase)*2/3));
1380
1381 $pdfx2 = ($x+(($x1-$x)*2/3));
1382 $pdfy2 = (-$y-(($y1-$y)*2/3));
1383
1384 // mPDF 4.4.003
1385 $pdfx2 = $pdfx1 + 1/3 *($x - $this->xbase);
1386 $pdfy2 = $pdfy1 + 1/3 *(-$y - $this->ybase) ;
1387
1388 $this->xbase = $x;
1389 $this->ybase = -$y;
1390 }
1391 $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2)); // mPDF 4.4.003 always relative
1392
1393 $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
1394
1395 // mPDF 5.0.040
1396 $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
1397 $bx = calc_bezier_bbox($start, $curves);
1398 $minl = min($minl,$bx[0]);
1399 $maxr = max($maxr,$bx[2]);
1400 $mint = min($mint,$bx[1]);
1401 $maxb = max($maxb,$bx[3]);
1402
1403 if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
1404 {
1405 $path_cmd .= sprintf('%.3F %.3F l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
1406 }
1407 else
1408 {
1409 $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);
1410 }
1411 }
1412 break;
1413 case 't': // bezier quadratic avec point de control simetrique a lancien point de control
1414 // mPDF 4.4.003
1415 if (!($this->lastcommand == 'Q' || $this->lastcommand == 'q' || $this->lastcommand == 'T' || $this->lastcommand == 't')) {
1416 $this->lastcontrolpoints = array(0,0);
1417 }
1418 for($i = 0; $i<$ile_argumentow; $i += 2){
1419 $x = ($a[$i][0]);
1420 $y = ($a[$i+1][0]);
1421
1422 $x1 = $this->lastcontrolpoints[0];
1423 $y1 = $this->lastcontrolpoints[1];
1424
1425 if($relative){
1426 $pdfx = ($this->xbase + $x);
1427 $pdfy = ($this->ybase - $y);
1428
1429 $pdfx1 = ($this->xbase + ($x1)); // mPDF 4.4.003
1430 $pdfy1 = ($this->ybase - ($y1)); // mPDF 4.4.003
1431 // mPDF 4.4.003
1432 $pdfx2 = $pdfx1 + 1/3 *($x);
1433 $pdfy2 = $pdfy1 + 1/3 *(-$y) ;
1434
1435 $this->xbase += $x;
1436 $this->ybase += -$y;
1437 }
1438 else{
1439 $pdfx = $x;
1440 $pdfy = -$y;
1441
1442 $pdfx1 = ($this->xbase + ($x1)); // mPDF 4.4.003
1443 $pdfy1 = ($this->ybase - ($y1)); // mPDF 4.4.003
1444 // mPDF 4.4.003
1445 $pdfx2 = $pdfx1 + 1/3 *($x - $this->xbase);
1446 $pdfy2 = $pdfy1 + 1/3 *(-$y - $this->ybase) ;
1447
1448 $this->xbase = $x;
1449 $this->ybase = -$y;
1450 }
1451
1452 $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2)); // mPDF 4.4.003 always relative
1453
1454 // mPDF 5.0.040
1455 $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
1456 $bx = calc_bezier_bbox($start, $curves);
1457 $minl = min($minl,$bx[0]);
1458 $maxr = max($maxr,$bx[2]);
1459 $mint = min($mint,$bx[1]);
1460 $maxb = max($maxb,$bx[3]);
1461
1462 $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);
1463 }
1464
1465 break;
1466 case 'a': // Elliptical arc
1467 for($i = 0; $i<$ile_argumentow; $i += 7){
1468 $rx = ($a[$i][0]);
1469 $ry = ($a[$i+1][0]);
1470 $angle = ($a[$i+2][0]); //x-axis-rotation
1471 $largeArcFlag = ($a[$i+3][0]);
1472 $sweepFlag = ($a[$i+4][0]);
1473 $x2 = ($a[$i+5][0]);
1474 $y2 = ($a[$i+6][0]);
1475 $x1 = $this->xbase;
1476 $y1 = -$this->ybase;
1477 if($relative){
1478 $x2 = $this->xbase + $x2;
1479 $y2 = -$this->ybase + $y2;
1480 $this->xbase += ($a[$i+5][0]);
1481 $this->ybase += -($a[$i+6][0]);
1482 }
1483 else{
1484 $this->xbase = $x2;
1485 $this->ybase = -$y2;
1486 }
1487 // mPDF 5.0.039 // mPDF 5.0.040
1488 list($pcmd, $bounds) = $this->Arcto($x1, $y1, $x2, $y2, $rx, $ry, $angle, $largeArcFlag, $sweepFlag);
1489 $minl = min($minl,$x2,min($bounds[0]));
1490 $maxr = max($maxr,$x2,max($bounds[0]));
1491 $mint = min($mint,$y2,min($bounds[1]));
1492 $maxb = max($maxb,$y2,max($bounds[1]));
1493 $path_cmd .= $pcmd;
1494
1495 }
1496 break;
1497 case'z':
1498 $path_cmd .= 'h ';
1499 // mPDF 4.4.003
1500 $this->subPathInit = true;
1501 $newsubpath = true;
1502 $this->xbase = $this->spxstart;
1503 $this->ybase = $this->spystart;
1504 break;
1505 default:
1506 break;
1507 }
1508
1509 if (!$newsubpath) { $this->subPathInit = false; } // mPDF 4.4.003
1510 $this->lastcommand = $command;
1511 // mPDF 5.0.039
1512 $this->pathBBox[0] = $minl;
1513 $this->pathBBox[1] = $mint;
1514 $this->pathBBox[2] = $maxr - $this->pathBBox[0];
1515 $this->pathBBox[3] = $maxb - $this->pathBBox[1];
1516 return $path_cmd;
1517
1518 }
1519
1520function Arcto($x1, $y1, $x2, $y2, $rx, $ry, $angle, $largeArcFlag, $sweepFlag) {
1521
1522 // mPDF 5.0.040
1523 $bounds = array(0=>array($x1,$x2),1=>array($y1,$y2));
1524 // 1. Treat out-of-range parameters as described in
1525 // http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
1526 // If the endpoints (x1, y1) and (x2, y2) are identical, then this
1527 // is equivalent to omitting the elliptical arc segment entirely
1528 if ($x1 == $x2 && $y1 == $y2) return array('', $bounds); // mPD 5.0.040
1529
1530 // If rX = 0 or rY = 0 then this arc is treated as a straight line
1531 // segment (a "lineto") joining the endpoints.
1532 if ($rx == 0.0 || $ry == 0.0) {
1533 // return array(Lineto(x2, y2), $bounds); // mPD 5.0.040
1534 }
1535
1536 // If rX or rY have negative signs, these are dropped; the absolute
1537 // value is used instead.
1538 if ($rx<0.0) $rx = -$rx;
1539 if ($ry<0.0) $ry = -$ry;
1540
1541 // 2. convert to center parameterization as shown in
1542 // http://www.w3.org/TR/SVG/implnote.html
1543 $sinPhi = sin(deg2rad($angle));
1544 $cosPhi = cos(deg2rad($angle));
1545
1546 $x1dash = $cosPhi * ($x1-$x2)/2.0 + $sinPhi * ($y1-$y2)/2.0;
1547 $y1dash = -$sinPhi * ($x1-$x2)/2.0 + $cosPhi * ($y1-$y2)/2.0;
1548
1549
1550 $numerator = $rx*$rx*$ry*$ry - $rx*$rx*$y1dash*$y1dash - $ry*$ry*$x1dash*$x1dash;
1551
1552 if ($numerator < 0.0) {
1553 // If rX , rY and are such that there is no solution (basically,
1554 // the ellipse is not big enough to reach from (x1, y1) to (x2,
1555 // y2)) then the ellipse is scaled up uniformly until there is
1556 // exactly one solution (until the ellipse is just big enough).
1557
1558 // -> find factor s, such that numerator' with rx'=s*rx and
1559 // ry'=s*ry becomes 0 :
1560 $s = sqrt(1.0 - $numerator/($rx*$rx*$ry*$ry));
1561
1562 $rx *= $s;
1563 $ry *= $s;
1564 $root = 0.0;
1565
1566 }
1567 else {
1568 $root = ($largeArcFlag == $sweepFlag ? -1.0 : 1.0) * sqrt( $numerator/($rx*$rx*$y1dash*$y1dash+$ry*$ry*$x1dash*$x1dash) );
1569 }
1570
1571 $cxdash = $root*$rx*$y1dash/$ry;
1572 $cydash = -$root*$ry*$x1dash/$rx;
1573
1574 $cx = $cosPhi * $cxdash - $sinPhi * $cydash + ($x1+$x2)/2.0;
1575 $cy = $sinPhi * $cxdash + $cosPhi * $cydash + ($y1+$y2)/2.0;
1576
1577
1578 $theta1 = $this->CalcVectorAngle(1.0, 0.0, ($x1dash-$cxdash)/$rx, ($y1dash-$cydash)/$ry);
1579 $dtheta = $this->CalcVectorAngle(($x1dash-$cxdash)/$rx, ($y1dash-$cydash)/$ry, (-$x1dash-$cxdash)/$rx, (-$y1dash-$cydash)/$ry);
1580 if (!$sweepFlag && $dtheta>0)
1581 $dtheta -= 2.0*M_PI;
1582 else if ($sweepFlag && $dtheta<0)
1583 $dtheta += 2.0*M_PI;
1584
1585 // 3. convert into cubic bezier segments <= 90deg
1586 $segments = ceil(abs($dtheta/(M_PI/2.0)));
1587 $delta = $dtheta/$segments;
1588 $t = 8.0/3.0 * sin($delta/4.0) * sin($delta/4.0) / sin($delta/2.0);
1589 $coords = array();
1590 for ($i = 0; $i < $segments; $i++) {
1591 $cosTheta1 = cos($theta1);
1592 $sinTheta1 = sin($theta1);
1593 $theta2 = $theta1 + $delta;
1594 $cosTheta2 = cos($theta2);
1595 $sinTheta2 = sin($theta2);
1596
1597 // a) calculate endpoint of the segment:
1598 $xe = $cosPhi * $rx*$cosTheta2 - $sinPhi * $ry*$sinTheta2 + $cx;
1599 $ye = $sinPhi * $rx*$cosTheta2 + $cosPhi * $ry*$sinTheta2 + $cy;
1600
1601 // b) calculate gradients at start/end points of segment:
1602 $dx1 = $t * ( - $cosPhi * $rx*$sinTheta1 - $sinPhi * $ry*$cosTheta1);
1603 $dy1 = $t * ( - $sinPhi * $rx*$sinTheta1 + $cosPhi * $ry*$cosTheta1);
1604
1605 $dxe = $t * ( $cosPhi * $rx*$sinTheta2 + $sinPhi * $ry*$cosTheta2);
1606 $dye = $t * ( $sinPhi * $rx*$sinTheta2 - $cosPhi * $ry*$cosTheta2);
1607
1608 // c) draw the cubic bezier:
1609 $coords[$i] = array(($x1+$dx1), ($y1+$dy1), ($xe+$dxe), ($ye+$dye), $xe, $ye);
1610
1611 // do next segment
1612 $theta1 = $theta2;
1613 $x1 = $xe;
1614 $y1 = $ye;
1615 }
1616 $path = ' ';
1617 foreach($coords AS $c) {
1618 $cpx1 = $c[0];
1619 $cpy1 = $c[1];
1620 $cpx2 = $c[2];
1621 $cpy2 = $c[3];
1622 $x2 = $c[4];
1623 $y2 = $c[5];
1624 $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";
1625
1626 // mPDF 5.0.040
1627 $bounds[0][] = $c[4];
1628 $bounds[1][] = $c[5];
1629 }
1630 return array($path, $bounds); // mPD 5.0.040
1631}
1632
1633
1634 function CalcVectorAngle($ux, $uy, $vx, $vy) {
1635 $ta = atan2($uy, $ux);
1636 $tb = atan2($vy, $vx);
1637 if ($tb >= $ta)
1638 return ($tb-$ta);
1639 return (6.28318530718 - ($ta-$tb));
1640 }
1641
1642
1643 // mPDF 4.4.003
1644 function ConvertSVGSizePixels($size=5,$maxsize='x'){
1645 // maxsize in pixels (user units) or 'y' or 'x'
1646 // e.g. $w = $this->ConvertSVGSizePixels($arguments['w'],$this->svg_info['w']*(25.4/$this->mpdf_ref->dpi));
1647 // usefontsize - setfalse for e.g. margins - will ignore fontsize for % values
1648 // Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
1649 // For text $maxsize = Fontsize
1650 // Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize
1651
1652 if ($maxsize == 'y') { $maxsize = $this->svg_info['h']; }
1653 else if ($maxsize == 'x') { $maxsize = $this->svg_info['w']; }
1654 $maxsize *= (25.4/$this->mpdf_ref->dpi); // convert pixels to mm
1655 $fontsize=$this->mpdf_ref->FontSize;
1656 //Return as pixels
1657 $size = $this->mpdf_ref->ConvertSize($size,$maxsize,$fontsize,false) * 1/(25.4/$this->mpdf_ref->dpi);
1658 return $size;
1659 }
1660
1661 // mPDF 4.4.003
1662 function ConvertSVGSizePts($size=5){
1663 // usefontsize - setfalse for e.g. margins - will ignore fontsize for % values
1664 // Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
1665 // For text $maxsize = Fontsize
1666 // Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize
1667 $maxsize=$this->mpdf_ref->FontSize;
1668 //Return as pts
1669 $size = $this->mpdf_ref->ConvertSize($size,$maxsize,false,true) * 72/25.4;
1670 return $size;
1671 }
1672
1673
1674 //
1675 // fonction retracant les <rect />
1676 function svgRect($arguments){
1677
1678 if ($arguments['h']==0 || $arguments['w']==0) { return ''; } // mPDF 4.4.003
1679
1680 $x = $this->ConvertSVGSizePixels($arguments['x'],'x'); // mPDF 4.4.003
1681 $y = $this->ConvertSVGSizePixels($arguments['y'],'y'); // mPDF 4.4.003
1682 $h = $this->ConvertSVGSizePixels($arguments['h'],'y'); // mPDF 4.4.003
1683 $w = $this->ConvertSVGSizePixels($arguments['w'],'x'); // mPDF 4.4.003
1684 $rx = $this->ConvertSVGSizePixels($arguments['rx'],'x'); // mPDF 4.4.003
1685 $ry = $this->ConvertSVGSizePixels($arguments['ry'],'y'); // mPDF 4.4.003
1686
1687 if ($rx > $w/2) { $rx = $w/2; } // mPDF 4.4.003
1688 if ($ry > $h/2) { $ry = $h/2; } // mPDF 4.4.003
1689
1690 if ($rx>0 and $ry == 0){$ry = $rx;}
1691 if ($ry>0 and $rx == 0){$rx = $ry;}
1692
1693 if ($rx == 0 and $ry == 0){
1694 // trace un rectangle sans angle arrondit
1695 $path_cmd = sprintf('%.3F %.3F m ', ($x*$this->kp), -($y*$this->kp));
1696 $path_cmd .= sprintf('%.3F %.3F l ', (($x+$w)*$this->kp), -($y*$this->kp));
1697 $path_cmd .= sprintf('%.3F %.3F l ', (($x+$w)*$this->kp), -(($y+$h)*$this->kp));
1698 $path_cmd .= sprintf('%.3F %.3F l ', ($x)*$this->kp, -(($y+$h)*$this->kp));
1699 $path_cmd .= sprintf('%.3F %.3F l h ', ($x*$this->kp), -($y*$this->kp));
1700
1701
1702 }
1703 else {
1704 // trace un rectangle avec les arrondit
1705 // les points de controle du bezier sont deduis grace a la constante kappa
1706 $kappa = 4*(sqrt(2)-1)/3;
1707
1708 $kx = $kappa*$rx;
1709 $ky = $kappa*$ry;
1710
1711 $path_cmd = sprintf('%.3F %.3F m ', ($x+$rx)*$this->kp, -$y*$this->kp);
1712 $path_cmd .= sprintf('%.3F %.3F l ', ($x+($w-$rx))*$this->kp, -$y*$this->kp);
1713 $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 );
1714 $path_cmd .= sprintf('%.3F %.3F l ', ($x+$w)*$this->kp, (-$y+(-$h+$ry))*$this->kp);
1715 $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 );
1716
1717 $path_cmd .= sprintf('%.3F %.3F l ', ($x+$rx)*$this->kp, (-$y+(-$h))*$this->kp);
1718 $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 );
1719 $path_cmd .= sprintf('%.3F %.3F l ', $x*$this->kp, (-$y+(-$ry))*$this->kp);
1720 $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 );
1721
1722
1723 }
1724 return $path_cmd;
1725 }
1726
1727 //
1728 // fonction retracant les <ellipse /> et <circle />
1729 // le cercle est tracé grave a 4 bezier cubic, les poitn de controles
1730 // sont deduis grace a la constante kappa * rayon
1731 function svgEllipse($arguments){
1732 if ($arguments['rx']==0 || $arguments['ry']==0) { return ''; } // mPDF 4.4.003
1733
1734 $kappa = 4*(sqrt(2)-1)/3;
1735
1736 $cx = $this->ConvertSVGSizePixels($arguments['cx'],'x'); // mPDF 4.4.003
1737 $cy = $this->ConvertSVGSizePixels($arguments['cy'],'y'); // mPDF 4.4.003
1738 $rx = $this->ConvertSVGSizePixels($arguments['rx'],'x'); // mPDF 4.4.003
1739 $ry = $this->ConvertSVGSizePixels($arguments['ry'],'y'); // mPDF 4.4.003
1740
1741 $x1 = $cx;
1742 $y1 = -$cy+$ry;
1743
1744 $x2 = $cx+$rx;
1745 $y2 = -$cy;
1746
1747 $x3 = $cx;
1748 $y3 = -$cy-$ry;
1749
1750 $x4 = $cx-$rx;
1751 $y4 = -$cy;
1752
1753 $path_cmd = sprintf('%.3F %.3F m ', $x1*$this->kp, $y1*$this->kp);
1754 $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);
1755 $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);
1756 $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);
1757 $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);
1758 $path_cmd .= 'h ';
1759
1760 return $path_cmd;
1761
1762 }
1763
1764 //
1765 // fonction retracant les <polyline /> et les <line />
1766 function svgPolyline($arguments,$ispolyline=true){
1767 if ($ispolyline) {
1768 $xbase = $arguments[0] ;
1769 $ybase = - $arguments[1] ;
1770 }
1771 else {
1772 if ($arguments[0]==$arguments[2] && $arguments[1]==$arguments[3]) { return ''; } // mPDF 4.4.003 Zero length line
1773 $xbase = $this->ConvertSVGSizePixels($arguments[0],'x'); // mPDF 4.4.003
1774 $ybase = - $this->ConvertSVGSizePixels($arguments[1],'y'); // mPDF 4.4.003
1775 }
1776 $path_cmd = sprintf('%.3F %.3F m ', $xbase*$this->kp, $ybase*$this->kp);
1777 for ($i = 2; $i<count($arguments);$i += 2) {
1778 if ($ispolyline) {
1779 $tmp_x = $arguments[$i] ;
1780 $tmp_y = - $arguments[($i+1)] ;
1781 }
1782 else {
1783 $tmp_x = $this->ConvertSVGSizePixels($arguments[$i],'x') ; // mPDF 4.4.003
1784 $tmp_y = - $this->ConvertSVGSizePixels($arguments[($i+1)],'y') ; // mPDF 4.4.003
1785 }
1786 $path_cmd .= sprintf('%.3F %.3F l ', $tmp_x*$this->kp, $tmp_y*$this->kp);
1787 }
1788
1789 // $path_cmd .= 'h '; // ?? In error - don't close subpath here
1790 return $path_cmd;
1791
1792 }
1793
1794 //
1795 // fonction retracant les <polygone />
1796 function svgPolygon($arguments){
1797 $xbase = $arguments[0] ;
1798 $ybase = - $arguments[1] ;
1799 $path_cmd = sprintf('%.3F %.3F m ', $xbase*$this->kp, $ybase*$this->kp);
1800 for ($i = 2; $i<count($arguments);$i += 2) {
1801 $tmp_x = $arguments[$i] ;
1802 $tmp_y = - $arguments[($i+1)] ;
1803
1804 $path_cmd .= sprintf('%.3F %.3F l ', $tmp_x*$this->kp, $tmp_y*$this->kp);
1805
1806 }
1807 $path_cmd .= sprintf('%.3F %.3F l ', $xbase*$this->kp, $ybase*$this->kp);
1808 $path_cmd .= 'h ';
1809 return $path_cmd;
1810
1811 }
1812
1813 //
1814 // write string to image
1815 function svgText() {
1816 // $tmp = count($this->txt_style)-1;
1817 $current_style = array_pop($this->txt_style);
1818 $style = '';
1819 $render = -1;
1820 if(isset($this->txt_data[2]))
1821 {
1822 // select font
1823 $style .= ($current_style['font-weight'] == 'bold')?'B':'';
1824 $style .= ($current_style['font-style'] == 'italic')?'I':'';
1825 $size = $current_style['font-size']*$this->kf; // mPDF 5.0.039
1826
1827 // mPDF 5.0
1828 $current_style['font-family'] = $this->mpdf_ref->SetFont($current_style['font-family'],$style,$size,false);
1829 $this->mpdf_ref->CurrentFont['fo'] = true; // mPDF 5.0.039
1830
1831
1832 // mPDF 5.0.041
1833 $opacitystr = '';
1834 $opacity = 1;
1835 if (isset($current_style['fill-opacity'])) {
1836 if ($current_style['fill-opacity'] == 0) { $opacity = 0; }
1837 else if ($current_style['fill-opacity'] > 1) { $opacity = 1; }
1838 else if ($current_style['fill-opacity'] > 0) { $opacity = $current_style['fill-opacity']; }
1839 else if ($current_style['fill-opacity'] < 0) { $opacity = 0; }
1840 }
1841 $gs = $this->mpdf_ref->AddExtGState(array('ca'=>$opacity, 'BM'=>'/Normal'));
1842 $this->mpdf_ref->extgstates[$gs]['fo'] = true; // mPDF 5.0.039
1843 $opacitystr = sprintf(' /GS%d gs ', $gs);
1844
1845 // mPDF 5.0.051
1846 $fillstr = '';
1847 if (isset($current_style['fill']) && $current_style['fill']!='none') {
1848 $col = $this->mpdf_ref->ConvertColor($current_style['fill']);
1849 // mPDF 5.0.051
1850 $fillstr = $this->mpdf_ref->SetFColor($col, true);
1851 $render = "0"; // Fill (only)
1852 }
1853 $strokestr = '';
1854 if (isset($current_style['stroke-width']) && $current_style['stroke-width']>0 && $current_style['stroke']!='none') {
1855 $scol = $this->mpdf_ref->ConvertColor($current_style['stroke']);
1856 if ($scol) {
1857 $strokestr .= $this->mpdf_ref->SetDColor($scol, true).' '; // mPDF 5.0.051
1858 }
1859 $linewidth = $this->ConvertSVGSizePixels($current_style['stroke-width']);
1860 if ($linewidth > 0) {
1861 $strokestr .= sprintf('%.3F w 1 J 1 j ',$linewidth*$this->kp);
1862 if ($render == -1) { $render = "1"; } // stroke only
1863 else { $render = "2"; } // fill and stroke
1864 }
1865 }
1866 if ($render == -1) { return ''; }
1867
1868 $x = $this->ConvertSVGSizePixels($this->txt_data[0],'x'); // mPDF 4.4.003
1869 $y = $this->ConvertSVGSizePixels($this->txt_data[1],'y'); // mPDF 4.4.003
1870 $txt = $this->txt_data[2];
1871
1872 // mPDF 4.4.003
1873 $txt = preg_replace('/\f/','',$txt);
1874 $txt = preg_replace('/\r/','',$txt);
1875 $txt = preg_replace('/\n/',' ',$txt);
1876 $txt = preg_replace('/\t/',' ',$txt);
1877 $txt = preg_replace("/[ ]+/u",' ',$txt);
1878
1879 $txt = trim($txt);
1880
1881 $txt = $this->mpdf_ref->purify_utf8_text($txt);
1882 if ($this->mpdf_ref->text_input_as_HTML) {
1883 $txt = $this->mpdf_ref->all_entities_to_utf8($txt);
1884 }
1885
1886 // mPDF 5.0
1887 if ($this->mpdf_ref->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mpdf_ref->mb_enc,'UTF-8'); }
1888 if (preg_match("/([".$this->mpdf_ref->pregRTLchars."])/u", $txt)) { $this->mpdf_ref->biDirectional = true; } // mPDF 4.4.003
1889
1890 $this->mpdf_ref->magic_reverse_dir($txt, true, 'ltr'); // mPDF 5.0.054
1891 $this->mpdf_ref->ConvertIndic($txt);
1892
1893
1894 if ($current_style['text-anchor']=='middle') {
1895 $tw = $this->mpdf_ref->GetStringWidth($txt)*_MPDFK/2; // mPDF 4.4.003 // mPDF 5.4.09
1896 }
1897 else if ($current_style['text-anchor']=='end') {
1898 $tw = $this->mpdf_ref->GetStringWidth($txt)*_MPDFK; // mPDF 4.4.003 // mPDF 5.4.09
1899 }
1900 else $tw = 0;
1901
1902 if (!$this->mpdf_ref->usingCoreFont) {
1903 $this->mpdf_ref->UTF8StringToArray($txt); // mPDF 5.0 adds chars to subset list
1904 $txt= $this->mpdf_ref->UTF8ToUTF16BE($txt, false);
1905 }
1906 $txt='('.$this->mpdf_ref->_escape($txt).')';
1907 $this->mpdf_ref->CurrentFont['used']= true;
1908
1909 $pdfx = $x - $tw/$this->kp; // mPDF 4.4.009
1910 $pdfy = -$y ;
1911 $xbase = $x;
1912 $ybase = -$y;
1913
1914 // mPDF 5.7.2
1915 $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";
1916 unset($this->txt_data[0], $this->txt_data[1],$this->txt_data[2]);
1917
1918 if (isset($current_style['font-size-parent'])) {
1919 $this->mpdf_ref->SetFontSize($current_style['font-size-parent']);
1920 }
1921 }
1922 else
1923 {
1924 return ' ';
1925 }
1926 return $path_cmd;
1927 }
1928
1929
1930function svgDefineTxtStyle($critere_style)
1931{
1932 // get copy of current/default txt style, and modify it with supplied attributes
1933 $tmp = count($this->txt_style)-1;
1934 $current_style = $this->txt_style[$tmp];
1935 if (isset($critere_style['style'])){
1936 if (preg_match('/fill:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
1937 $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);
1938 }
1939 else { $tmp = preg_replace("/(.*)fill:\s*([a-z0-9#_()]*|none)(.*)/i","$2",$critere_style['style']);
1940 if ($tmp != $critere_style['style']){ $current_style['fill'] = $tmp; }
1941 }
1942
1943 $tmp = preg_replace("/(.*)fill-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
1944 if ($tmp != $critere_style['style']){ $current_style['fill-opacity'] = $tmp;}
1945
1946 $tmp = preg_replace("/(.*)fill-rule:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
1947 if ($tmp != $critere_style['style']){ $current_style['fill-rule'] = $tmp;}
1948
1949 if (preg_match('/stroke:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
1950 $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);
1951 }
1952 else { $tmp = preg_replace("/(.*)stroke:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
1953 if ($tmp != $critere_style['style']){ $current_style['stroke'] = $tmp; }
1954 }
1955
1956 $tmp = preg_replace("/(.*)stroke-linecap:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
1957 if ($tmp != $critere_style['style']){ $current_style['stroke-linecap'] = $tmp;}
1958
1959 $tmp = preg_replace("/(.*)stroke-linejoin:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
1960 if ($tmp != $critere_style['style']){ $current_style['stroke-linejoin'] = $tmp;}
1961
1962 $tmp = preg_replace("/(.*)stroke-miterlimit:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
1963 if ($tmp != $critere_style['style']){ $current_style['stroke-miterlimit'] = $tmp;}
1964
1965 $tmp = preg_replace("/(.*)stroke-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
1966 if ($tmp != $critere_style['style']){ $current_style['stroke-opacity'] = $tmp; }
1967
1968 $tmp = preg_replace("/(.*)stroke-width:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
1969 if ($tmp != $critere_style['style']){ $current_style['stroke-width'] = $tmp;}
1970
1971 $tmp = preg_replace("/(.*)stroke-dasharray:\s*([a-z0-9., ]*|none)(.*)/i","$2",$critere_style['style']);
1972 if ($tmp != $critere_style['style']){ $current_style['stroke-dasharray'] = $tmp;}
1973
1974 $tmp = preg_replace("/(.*)stroke-dashoffset:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
1975 if ($tmp != $critere_style['style']){ $current_style['stroke-dashoffset'] = $tmp;}
1976
1977 // mPDF 5.7.2
1978 $tmp = preg_replace("/(.*)font-family:\s*([a-z0-9.\"' ,\-]*|none)(.*)/i","$2",$critere_style['style']);
1979 if ($tmp != $critere_style['style']){ $critere_style['font-family'] = $tmp;}
1980
1981 $tmp = preg_replace("/(.*)font-size:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
1982 if ($tmp != $critere_style['style']){ $critere_style['font-size'] = $tmp;}
1983
1984 $tmp = preg_replace("/(.*)font-weight:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
1985 if ($tmp != $critere_style['style']){ $critere_style['font-weight'] = $tmp;}
1986
1987 $tmp = preg_replace("/(.*)font-style:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
1988 if ($tmp != $critere_style['style']){ $critere_style['font-style'] = $tmp;}
1989
1990 }
1991
1992 if (isset($critere_style['font'])){
1993
1994 // [ [ <'font-style'> || <'font-variant'> || <'font-weight'> ]?<'font-size'> [ / <'line-height'> ]? <'font-family'> ]
1995
1996 $tmp = preg_replace("/(.*)(italic|oblique)(.*)/i","$2",$critere_style['font']);
1997 if ($tmp != $critere_style['font']){
1998 if($tmp == 'oblique'){
1999 $tmp = 'italic';
2000 }
2001 $current_style['font-style'] = $tmp;
2002 }
2003 $tmp = preg_replace("/(.*)(bold|bolder)(.*)/i","$2",$critere_style['font']);
2004 if ($tmp != $critere_style['font']){
2005 if($tmp == 'bolder'){
2006 $tmp = 'bold';
2007 }
2008 $current_style['font-weight'] = $tmp;
2009 }
2010
2011 // select digits not followed by percent sign nor preceeded by forward slash
2012 $tmp = preg_replace("/(.*)\b(\d+)[\b|\/](.*)/i","$2",$critere_style['font']);
2013 if ($tmp != $critere_style['font']){
2014 $current_style['font-size'] = $this->ConvertSVGSizePts($tmp);
2015 $this->mpdf_ref->SetFont('','',$current_style['font-size'],false);
2016 }
2017
2018 }
2019
2020 if(isset($critere_style['fill'])){
2021 $current_style['fill'] = $critere_style['fill'];
2022 }
2023 if(isset($critere_style['stroke'])){
2024 $current_style['stroke'] = $critere_style['stroke'];
2025 }
2026 if(isset($critere_style['stroke-width'])){
2027 $current_style['stroke-width'] = $critere_style['stroke-width'];
2028 }
2029
2030 if(isset($critere_style['font-style'])){
2031 if(strtolower($critere_style['font-style']) == 'oblique')
2032 {
2033 $critere_style['font-style'] = 'italic';
2034 }
2035 $current_style['font-style'] = $critere_style['font-style'];
2036 }
2037
2038 if(isset($critere_style['font-weight'])){
2039 if(strtolower($critere_style['font-weight']) == 'bolder')
2040 {
2041 $critere_style['font-weight'] = 'bold';
2042 }
2043 $current_style['font-weight'] = $critere_style['font-weight'];
2044 }
2045
2046 if(isset($critere_style['font-size'])){
2047 // mPDF 5.4.12
2048 if (strpos($critere_style['font-size'], '%')!==false) {
2049 $current_style['font-size-parent'] = $current_style['font-size'];
2050 }
2051 $current_style['font-size'] = $this->ConvertSVGSizePts($critere_style['font-size']);
2052 $this->mpdf_ref->SetFont('','',$current_style['font-size'],false);
2053 }
2054
2055 if(isset($critere_style['font-family'])){
2056 $v = $critere_style['font-family'];
2057 $aux_fontlist = explode(",",$v);
2058 $found = 0;
2059 foreach($aux_fontlist AS $f) {
2060 $fonttype = trim($f);
2061 $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
2062 $fonttype = preg_replace('/ /','',$fonttype);
2063 $v = strtolower(trim($fonttype));
2064 if (isset($this->mpdf_ref->fonttrans[$v]) && $this->mpdf_ref->fonttrans[$v]) { $v = $this->mpdf_ref->fonttrans[$v]; }
2065 if ((!$this->mpdf_ref->usingCoreFont && in_array($v,$this->mpdf_ref->available_unifonts)) ||
2066 ($this->mpdf_ref->usingCoreFont && in_array($v,array('courier','times','helvetica','arial'))) ||
2067 in_array($v, array('sjis','uhc','big5','gb'))) {
2068 $current_style['font-family'] = $v;
2069 $found = 1;
2070 break;
2071 }
2072 }
2073 if (!$found) {
2074 foreach($aux_fontlist AS $f) {
2075 $fonttype = trim($f);
2076 $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
2077 $fonttype = preg_replace('/ /','',$fonttype);
2078 $v = strtolower(trim($fonttype));
2079 if (isset($this->mpdf_ref->fonttrans[$v]) && $this->mpdf_ref->fonttrans[$v]) { $v = $this->mpdf_ref->fonttrans[$v]; }
2080 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) ) {
2081 $current_style['font-family'] = $v;
2082 break;
2083 }
2084 }
2085 }
2086 }
2087
2088 if(isset($critere_style['text-anchor'])){
2089 $current_style['text-anchor'] = $critere_style['text-anchor'];
2090 }
2091
2092 // add current style to text style array (will remove it later after writing text to svg_string)
2093 array_push($this->txt_style,$current_style);
2094}
2095
2096
2097
2098 //
2099 // fonction ajoutant un gradient
2100 function svgAddGradient($id,$array_gradient){
2101
2102 $this->svg_gradient[$id] = $array_gradient;
2103
2104 }
2105 //
2106 // Ajoute une couleur dans le gradient correspondant
2107
2108 //
2109 // function ecrivant dans le svgstring
2110 function svgWriteString($content){
2111
2112 $this->svg_string .= $content;
2113
2114 }
2115
2116
2117
2118 // analise le svg et renvoie aux fonctions precedente our le traitement
2119 function ImageSVG($data){
2120 $this->svg_info = array();
2121
2122 // mPDF 4.4.006
2123 if (preg_match('/<!ENTITY/si',$data)) {
2124 // Get User-defined entities
2125 preg_match_all('/<!ENTITY\s+([a-z]+)\s+\"(.*?)\">/si',$data, $ent);
2126 // Replace entities
2127 for ($i=0; $i<count($ent[0]); $i++) {
2128 $data = preg_replace('/&'.preg_quote($ent[1][$i],'/').';/is', $ent[2][$i], $data);
2129 }
2130 }
2131
2132
2133 if (preg_match('/xlink:href=/si',$data)) {
2134 // GRADIENTS
2135 // Get links
2136 preg_match_all('/(<(linearGradient|radialgradient)[^>]*)xlink:href=["\']#(.*?)["\'](.*?)\/>/si',$data, $links);
2137 if (count($links[0])) { $links[5] = array(); }
2138 // Delete links from data - keeping in $links
2139 for ($i=0; $i<count($links[0]); $i++) {
2140 $links[5][$i] = 'tmpLink'.RAND(100000,9999999);
2141 $data = preg_replace('/'.preg_quote($links[0][$i],'/').'/is', '<MYLINKS'.$links[5][$i].'>' , $data);
2142 }
2143 // Get targets
2144 preg_match_all('/<(linearGradient|radialgradient)([^>]*)id=["\'](.*?)["\'](.*?)>(.*?)<\/(linearGradient|radialgradient)>/si',$data, $m);
2145 $targets = array();
2146 $stops = array();
2147 // keeping in $targets
2148 for ($i=0; $i<count($m[0]); $i++) {
2149 $stops[$m[3][$i]] = $m[5][$i];
2150 }
2151 // Add back links this time as targets (gradients)
2152 for ($i=0; $i<count($links[0]); $i++) {
2153 $def = $links[1][$i] .' '.$links[4][$i].'>'. $stops[$links[3][$i]].'</'.$links[2][$i] .'>' ;
2154 $data = preg_replace('/<MYLINKS'.$links[5][$i].'>/is', $def , $data);
2155 }
2156
2157 // mPDF 5.7.2
2158 // <USE>
2159 preg_match_all('/<use ([^>]*)xlink:href=["\']#([^>]*?)["\']([^>]*)\/>/si',$data, $links);
2160 for ($i=0; $i<count($links[0]); $i++) {
2161
2162 // Get the item to use from defs
2163 $insert = '';
2164 if (preg_match('/<([a-zA-Z]*) [^>]*id=["\']'.$links[2][$i].'["\'][^>]*\/>/si',$data, $m)) {
2165 $insert = $m[0];
2166 }
2167 if (!$insert && preg_match('/<([a-zA-Z]*) [^>]*id=["\']'.$links[2][$i].'["\']/si',$data, $m)) {
2168
2169 if (preg_match('/<'.$m[1].'[^>]*id=["\']'.$links[2][$i].'["\'][^>]*>.*?<\/'.$m[1].'>/si',$data, $m)) {
2170 $insert = $m[0];
2171 }
2172 }
2173
2174 if ($insert) {
2175
2176 $inners = $links[1][$i] . ' ' . $links[3][$i];
2177 // Change x,y coords to translate()
2178 if (preg_match('/y=["\']([^>]*?)["\']/', $inners, $m)) { $y = $m[1]; }
2179 else { $y = 0; }
2180 if (preg_match('/x=["\']([^>]*?)["\']/', $inners, $m)) { $x = $m[1]; }
2181 else { $x = 0; }
2182 if ($x || $y) {
2183 $inners = preg_replace('/(y|x)=["\']([^>]*?)["\']/', '', $inners);
2184 if (preg_match('/transform=["\']([^>]*?)["\']/', $inners, $m)) {
2185 if (preg_match('/translate\(\s*([0-9\.]+)\s*,\s*([0-9\.]+)\s*\)/', $m[1], $mm)) {
2186 $transform = $m[1]; // transform="...."
2187 $x += $mm[1];
2188 $y += $mm[2];
2189 $transform = preg_replace('/'.preg_quote($mm[0],'/').'/', '', $transform);
2190 $transform = 'transform="'.$transform.' translate('.$x.', '.$y.')"';
2191 $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', $transform, $inners);
2192 }
2193 else {
2194 $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', 'transform="'.$m[1].' translate('.$x.', '.$y.')"', $inners);
2195 }
2196 }
2197 else {
2198 $inners .= ' transform="translate('.$x.', '.$y.')"';
2199 }
2200 }
2201 }
2202 $replacement = '<g '.$inners.'>'.$insert.'</g>';
2203 $data = preg_replace('/'.preg_quote($links[0][$i],'/').'/is', $replacement, $data);
2204 }
2205 preg_match_all('/<use ([^>]*)xlink:href=["\']#([^>]*?)["\']([^>]*)>\s*<\/use>/si',$data, $links);
2206 for ($i=0; $i<count($links[0]); $i++) {
2207
2208 // Get the item to use from defs
2209 $insert = '';
2210 if (preg_match('/<([a-zA-Z]*) [^>]*id=["\']'.$links[2][$i].'["\'][^>]*\/>/si',$data, $m)) {
2211 $insert = $m[0];
2212 }
2213 if (!$insert && preg_match('/<([a-zA-Z]*) [^>]*id=["\']'.$links[2][$i].'["\']/si',$data, $m)) {
2214
2215 if (preg_match('/<'.$m[1].'[^>]*id=["\']'.$links[2][$i].'["\'][^>]*>.*?<\/'.$m[1].'>/si',$data, $m)) {
2216 $insert = $m[0];
2217 }
2218 }
2219
2220 if ($insert) {
2221
2222 $inners = $links[1][$i] . ' ' . $links[3][$i];
2223 // Change x,y coords to translate()
2224 if (preg_match('/y=["\']([^>]*?)["\']/', $inners, $m)) { $y = $m[1]; }
2225 else { $y = 0; }
2226 if (preg_match('/x=["\']([^>]*?)["\']/', $inners, $m)) { $x = $m[1]; }
2227 else { $x = 0; }
2228 if ($x || $y) {
2229 $inners = preg_replace('/(y|x)=["\']([^>]*?)["\']/', '', $inners);
2230 if (preg_match('/transform=["\']([^>]*?)["\']/', $inners, $m)) {
2231 if (preg_match('/translate\(\s*([0-9\.]+)\s*,\s*([0-9\.]+)\s*\)/', $m[1], $mm)) {
2232 $transform = $m[1]; // transform="...."
2233 $x += $mm[1];
2234 $y += $mm[2];
2235 $transform = preg_replace('/'.preg_quote($mm[0],'/').'/', '', $transform);
2236 $transform = 'transform="'.$transform.' translate('.$x.', '.$y.')"';
2237 $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', $transform, $inners);
2238 }
2239 else {
2240 $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', 'transform="'.$m[1].' translate('.$x.', '.$y.')"', $inners);
2241 }
2242 }
2243 else {
2244 $inners .= ' transform="translate('.$x.', '.$y.')"';
2245 }
2246 }
2247 $replacement = '<g '.$inners.'>'.$insert.'</g>';
2248 $data = preg_replace('/'.preg_quote($links[0][$i],'/').'/is', $replacement, $data);
2249
2250
2251 }
2252 }
2253 }
2254 // Removes <pattern>
2255 $data = preg_replace('/<pattern.*?<\/pattern>/is', '', $data);
2256 // Removes <marker>
2257 $data = preg_replace('/<marker.*?<\/marker>/is', '', $data);
2258
2259 $this->svg_info['data'] = $data;
2260
2261 $this->svg_string = '';
2262
2263 //
2264 // chargement unique des fonctions
2265 if(!function_exists("xml_svg2pdf_start")){
2266
2267 function xml_svg2pdf_start($parser, $name, $attribs){
2268 //
2269 // definition
2270 global $svg_class, $last_gradid;
2271
2272 // mPDF 5.7.2
2273 if (strtolower($name) == 'lineargradient'){
2274 $tmp_gradient = array(
2275 'type' => 'linear',
2276 'info' => array(
2277 'x1' => $attribs['x1'],
2278 'y1' => $attribs['y1'],
2279 'x2' => $attribs['x2'],
2280 'y2' => $attribs['y2']
2281 ),
2282 'transform' => $attribs['gradientTransform'],
2283 'units' => $attribs['gradientUnits'],
2284 'spread' => $attribs['spreadMethod'],
2285 'color' => array()
2286 );
2287 $last_gradid = $attribs['id'];
2288 $svg_class->svgAddGradient($attribs['id'],$tmp_gradient);
2289 return;
2290 }
2291 else if (strtolower($name) == 'radialgradient'){
2292 $tmp_gradient = array(
2293 'type' => 'radial',
2294 'info' => array(
2295 'x0' => $attribs['cx'],
2296 'y0' => $attribs['cy'],
2297 'x1' => $attribs['fx'],
2298 'y1' => $attribs['fy'],
2299 'r' => $attribs['r']
2300 ),
2301 'transform' => $attribs['gradientTransform'],
2302 'units' => $attribs['gradientUnits'],
2303 'spread' => $attribs['spreadMethod'],
2304 'color' => array()
2305 );
2306 $last_gradid = $attribs['id'];
2307 $svg_class->svgAddGradient($attribs['id'],$tmp_gradient);
2308 return;
2309 }
2310 else if (strtolower($name) == 'stop'){
2311 if (!$last_gradid) break;
2312 if (isset($attribs['style']) AND preg_match('/stop-color:\s*([^;]*)/i',$attribs['style'],$m)) {
2313 $color = trim($m[1]);
2314 } else if (isset($attribs['stop-color'])) {
2315 $color = $attribs['stop-color'];
2316 }
2317 $col = $svg_class->mpdf_ref->ConvertColor($color);
2318
2319 if ($col{0}==3 || $col{0}==5) { // RGB
2320 $color_final = sprintf('%.3F %.3F %.3F',ord($col{1})/255,ord($col{2})/255,ord($col{3})/255);
2321 $svg_class->svg_gradient[$last_gradid]['colorspace']='RGB';
2322 }
2323 else if ($col{0}==4 || $col{0}==6) { // CMYK
2324 $color_final = sprintf('%.3F %.3F %.3F %.3F',ord($col{1})/100,ord($col{2})/100,ord($col{3})/100,ord($col{4})/100);
2325 $svg_class->svg_gradient[$last_gradid]['colorspace']='CMYK';
2326 }
2327 else if ($col{0}==1) { // Grayscale
2328 $color_final = sprintf('%.3F',ord($col{1})/255);
2329 $svg_class->svg_gradient[$last_gradid]['colorspace']='Gray';
2330 }
2331
2332 $stop_opacity = 1;
2333 if (isset($attribs['style']) AND preg_match('/stop-opacity:\s*([0-9.]*)/i',$attribs['style'],$m)) {
2334 $stop_opacity = $m[1];
2335 } else if (isset($attribs['stop-opacity'])) {
2336 $stop_opacity = $attribs['stop-opacity'];
2337 }
2338 else if ($col{0}==5) { // RGBa
2339 $stop_opacity = ord($col{4}/100);
2340 }
2341 else if ($col{0}==6) { // CMYKa
2342 $stop_opacity = ord($col{5}/100);
2343 }
2344
2345 $tmp_color = array(
2346 'color' => $color_final,
2347 'offset' => $attribs['offset'],
2348 'opacity' => $stop_opacity
2349 );
2350 array_push($svg_class->svg_gradient[$last_gradid]['color'],$tmp_color);
2351 return;
2352 }
2353 if ($svg_class->inDefs) { return; }
2354
2355 $svg_class->xbase = 0;
2356 $svg_class->ybase = 0;
2357 switch (strtolower($name)){
2358
2359 // mPDF 5.0.039 - Don't output stuff inside <defs>
2360 case 'defs':
2361 $svg_class->inDefs = true;
2362 return;
2363
2364 case 'svg':
2365 $svg_class->svgOffset($attribs);
2366 break;
2367
2368 case 'path':
2369 $path = $attribs['d'];
2370 // mPDF 5.6.65
2371 preg_match_all('/([MZLHVCSQTAmzlhvcsqta])([eE ,\-.\d]+)*/', $path, $commands, PREG_SET_ORDER);
2372 $path_cmd = '';
2373 $svg_class->subPathInit = true;
2374 // mPDF 5.0.039
2375 $svg_class->pathBBox = array(999999,999999,-999999,-999999);
2376 foreach($commands as $c){
2377 if(count($c)==3 || $c[2]==''){
2378 list($tmp, $command, $arguments) = $c;
2379 }
2380 else{
2381 list($tmp, $command) = $c;
2382 $arguments = '';
2383 }
2384
2385 $path_cmd .= $svg_class->svgPath($command, $arguments);
2386 }
2387 // mPDF 5.0.039
2388 if ($svg_class->pathBBox[2]==-1999998) { $svg_class->pathBBox[2] = 100; }
2389 if ($svg_class->pathBBox[3]==-1999998) { $svg_class->pathBBox[3] = 100; }
2390 if ($svg_class->pathBBox[0]==999999) { $svg_class->pathBBox[0] = 0; }
2391 if ($svg_class->pathBBox[1]==999999) { $svg_class->pathBBox[1] = 0; }
2392 $critere_style = $attribs;
2393 unset($critere_style['d']);
2394 $path_style = $svg_class->svgDefineStyle($critere_style);
2395 break;
2396
2397 case 'rect':
2398 if (!isset($attribs['x'])) {$attribs['x'] = 0;}
2399 if (!isset($attribs['y'])) {$attribs['y'] = 0;}
2400 if (!isset($attribs['rx'])) {$attribs['rx'] = 0;}
2401 if (!isset($attribs['ry'])) {$attribs['ry'] = 0;}
2402 $arguments = array(
2403 'x' => $attribs['x'],
2404 'y' => $attribs['y'],
2405 'w' => $attribs['width'],
2406 'h' => $attribs['height'],
2407 'rx' => $attribs['rx'],
2408 'ry' => $attribs['ry']
2409 );
2410 $path_cmd = $svg_class->svgRect($arguments);
2411 $critere_style = $attribs;
2412 unset($critere_style['x'],$critere_style['y'],$critere_style['rx'],$critere_style['ry'],$critere_style['height'],$critere_style['width']);
2413 $path_style = $svg_class->svgDefineStyle($critere_style);
2414 break;
2415
2416 case 'circle':
2417 if (!isset($attribs['cx'])) {$attribs['cx'] = 0;}
2418 if (!isset($attribs['cy'])) {$attribs['cy'] = 0;}
2419 $arguments = array(
2420 'cx' => $attribs['cx'],
2421 'cy' => $attribs['cy'],
2422 'rx' => $attribs['r'],
2423 'ry' => $attribs['r']
2424 );
2425 $path_cmd = $svg_class->svgEllipse($arguments);
2426 $critere_style = $attribs;
2427 unset($critere_style['cx'],$critere_style['cy'],$critere_style['r']);
2428 $path_style = $svg_class->svgDefineStyle($critere_style);
2429 break;
2430
2431 case 'ellipse':
2432 if (!isset($attribs['cx'])) {$attribs['cx'] = 0;}
2433 if (!isset($attribs['cy'])) {$attribs['cy'] = 0;}
2434 $arguments = array(
2435 'cx' => $attribs['cx'],
2436 'cy' => $attribs['cy'],
2437 'rx' => $attribs['rx'],
2438 'ry' => $attribs['ry']
2439 );
2440 $path_cmd = $svg_class->svgEllipse($arguments);
2441 $critere_style = $attribs;
2442 unset($critere_style['cx'],$critere_style['cy'],$critere_style['rx'],$critere_style['ry']);
2443 $path_style = $svg_class->svgDefineStyle($critere_style);
2444 break;
2445
2446 case 'line':
2447 $arguments = array($attribs['x1'],$attribs['y1'],$attribs['x2'],$attribs['y2']);
2448 $path_cmd = $svg_class->svgPolyline($arguments,false); // mPDF 4.4.003
2449 $critere_style = $attribs;
2450 unset($critere_style['x1'],$critere_style['y1'],$critere_style['x2'],$critere_style['y2']);
2451 $path_style = $svg_class->svgDefineStyle($critere_style);
2452 break;
2453
2454 case 'polyline':
2455 $path = $attribs['points'];
2456 preg_match_all('/[0-9\-\.]*/',$path, $tmp, PREG_SET_ORDER);
2457 $arguments = array();
2458 for ($i=0;$i<count($tmp);$i++){
2459 if ($tmp[$i][0] !=''){
2460 array_push($arguments, $tmp[$i][0]);
2461 }
2462 }
2463 $path_cmd = $svg_class->svgPolyline($arguments);
2464 $critere_style = $attribs;
2465 unset($critere_style['points']);
2466 $path_style = $svg_class->svgDefineStyle($critere_style);
2467 break;
2468
2469 case 'polygon':
2470 $path = $attribs['points'];
2471 preg_match_all('/([\-]*[0-9\.]+)/',$path, $tmp);
2472 $arguments = array();
2473 for ($i=0;$i<count($tmp[0]);$i++){
2474 if ($tmp[0][$i] !=''){
2475 array_push($arguments, $tmp[0][$i]);
2476 }
2477 }
2478 $path_cmd = $svg_class->svgPolygon($arguments);
2479 // definition du style de la forme:
2480 $critere_style = $attribs;
2481 unset($critere_style['points']);
2482 $path_style = $svg_class->svgDefineStyle($critere_style);
2483 break;
2484
2485 case 'a':
2486 if (isset($attribs['xlink:href'])) {
2487 unset($attribs['xlink:href']); // this should be a hyperlink
2488 // not handled like a xlink:href in other elements
2489 } // then continue like a <g>
2490 case 'g':
2491 $array_style = $svg_class->svgDefineStyle($attribs);
2492 if ($array_style['transformations']) {
2493 $svg_class->svgWriteString(' q '.$array_style['transformations']);
2494 }
2495 array_push($svg_class->svg_style,$array_style);
2496
2497 $svg_class->svgDefineTxtStyle($attribs); // mPDF 4.4.003
2498
2499 break;
2500
2501 case 'text':
2502 $array_style = $svg_class->svgDefineStyle($attribs);
2503 if ($array_style['transformations']) {
2504 $svg_class->svgWriteString(' q '.$array_style['transformations']);
2505 }
2506 array_push($svg_class->svg_style,$array_style);
2507
2508 $svg_class->txt_data = array();
2509 $svg_class->txt_data[0] = $attribs['x'];
2510 $svg_class->txt_data[1] = $attribs['y'];
2511 $critere_style = $attribs;
2512 unset($critere_style['x'], $critere_style['y']);
2513 $svg_class->svgDefineTxtStyle($critere_style);
2514 break;
2515 }
2516
2517 //
2518 //insertion des path et du style dans le flux de donné general.
2519 if (isset($path_cmd) && $path_cmd) { // mPDF 4.4.003
2520 // mPDF 5.0
2521 list($prestyle,$poststyle) = $svg_class->svgStyle($path_style, $attribs, strtolower($name));
2522 if ($path_style['transformations']) { // transformation on an element
2523 $svg_class->svgWriteString(" q ".$path_style['transformations']. " $prestyle $path_cmd $poststyle" . " Q\n");
2524 }
2525 else {
2526 $svg_class->svgWriteString("$prestyle $path_cmd $poststyle\n");
2527 }
2528 }
2529 }
2530
2531 function characterData($parser, $data)
2532 {
2533 global $svg_class;
2534 if ($svg_class->inDefs) { return; } // mPDF 5.7.2
2535 if(isset($svg_class->txt_data[2])) {
2536 $svg_class->txt_data[2] .= $data;
2537 }
2538 else {
2539 $svg_class->txt_data[2] = $data;
2540 }
2541 }
2542
2543
2544 function xml_svg2pdf_end($parser, $name){
2545 global $svg_class;
2546 // Don't output stuff inside <defs>
2547 // mPDF 5.7.2
2548 if ($name == 'defs') {
2549 $svg_class->inDefs = false;
2550 return;
2551 }
2552 if ($svg_class->inDefs) { return; }
2553 switch($name){
2554
2555 case "g":
2556 case "a":
2557 $tmp = count($svg_class->svg_style)-1;
2558 $current_style = $svg_class->svg_style[$tmp];
2559 if ($current_style['transformations']) {
2560 $svg_class->svgWriteString(" Q\n");
2561 }
2562 array_pop($svg_class->svg_style);
2563
2564 array_pop($svg_class->txt_style); // mPDF 4.4.003
2565
2566 break;
2567 case 'radialgradient':
2568 case 'lineargradient':
2569 $last_gradid = '';
2570 break;
2571 case "text":
2572 $path_cmd = $svg_class->svgText();
2573 // echo 'path >> '.$path_cmd."<br><br>";
2574 // echo "style >> ".$get_style[1]."<br><br>";
2575 $svg_class->svgWriteString($path_cmd);
2576 // mPDF 4.4.003
2577 $tmp = count($svg_class->svg_style)-1;
2578 $current_style = $svg_class->svg_style[$tmp];
2579 if ($current_style['transformations']) {
2580 $svg_class->svgWriteString(" Q\n");
2581 }
2582 array_pop($svg_class->svg_style);
2583
2584 break;
2585 }
2586 // mPDF 5.0.039 - Don't output stuff inside <defs>
2587 if ($name == 'defs') {
2588 $svg_class->inDefs = false;
2589 }
2590
2591 }
2592
2593 }
2594
2595 $svg2pdf_xml='';
2596 global $svg_class;
2597 $svg_class = $this;
2598 // mPDF 5.0.039 - Don't output stuff inside <defs>
2599 $svg_class->inDefs = false;
2600 $svg2pdf_xml_parser = xml_parser_create("utf-8");
2601 xml_parser_set_option($svg2pdf_xml_parser, XML_OPTION_CASE_FOLDING, false);
2602 xml_set_element_handler($svg2pdf_xml_parser, "xml_svg2pdf_start", "xml_svg2pdf_end");
2603 xml_set_character_data_handler($svg2pdf_xml_parser, "characterData");
2604 xml_parse($svg2pdf_xml_parser, $data);
2605 // mPDF 4.4.003
2606 if ($this->svg_error) { return false; }
2607 else {
2608 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);
2609 }
2610
2611 }
2612
2613}
2614
2615// END OF CLASS
2616
2617
2618// mPDF 5.0.040
2619function calc_bezier_bbox($start, $c) {
2620 $P0 = array($start[0],$start[1]);
2621 $P1 = array($c[0],$c[1]);
2622 $P2 = array($c[2],$c[3]);
2623 $P3 = array($c[4],$c[5]);
2624 $bounds = array();
2625 $bounds[0][] = $P0[0];
2626 $bounds[1][] = $P0[1];
2627 $bounds[0][] = $P3[0];
2628 $bounds[1][] = $P3[1];
2629 for ($i=0;$i<=1;$i++) {
2630 $b = 6 * $P0[$i] - 12 * $P1[$i] + 6 * $P2[$i];
2631 $a = -3 * $P0[$i] + 9 * $P1[$i] - 9 * $P2[$i] + 3 * $P3[$i];
2632 $c = 3 * $P1[$i] - 3 * $P0[$i];
2633 if ($a == 0) {
2634 if ($b == 0) { continue; }
2635 $t = -$c / $b;
2636 if ($t>0 && $t<1) {
2637 $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]);
2638 }
2639 continue;
2640 }
2641 $b2ac = pow($b, 2) - 4 * $c * $a;
2642 if ($b2ac < 0) { continue; }
2643 $t1 = (-$b + sqrt($b2ac))/(2 * $a);
2644 if ($t1>0 && $t1<1) {
2645 $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]);
2646 }
2647 $t2 = (-$b - sqrt($b2ac))/(2 * $a);
2648 if ($t2>0 && $t2<1) {
2649 $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]);
2650 }
2651 }
2652 $x = min($bounds[0]);
2653 $x2 = max($bounds[0]);
2654 $y = min($bounds[1]);
2655 $y2 = max($bounds[1]);
2656 return array($x, $y, $x2, $y2);
2657}
2658
2659// mPDF 5.0.040
2660function _testIntersectCircle($cx, $cy, $cr) {
2661 // Tests whether a circle fully encloses a rectangle 0,0,1,1
2662 // to see if any further radial gradients need adding (SVG)
2663 // If centre of circle is inside 0,0,1,1 square
2664 if ($cx >= 0 && $cx <= 1 && $cy >= 0 && $cy <= 1) {
2665 $maxd = 1.5;
2666 }
2667 // distance to four corners
2668 else {
2669 $d1 = sqrt(pow(($cy-0),2) + pow(($cx-0),2));
2670 $d2 = sqrt(pow(($cy-1),2) + pow(($cx-0),2));
2671 $d3 = sqrt(pow(($cy-0),2) + pow(($cx-1),2));
2672 $d4 = sqrt(pow(($cy-1),2) + pow(($cx-1),2));
2673 $maxd = max($d1,$d2,$d3,$d4);
2674 }
2675 if ($cr < $maxd) { return true; }
2676 else { return false; }
2677}
2678
2679// mPDF 5.0.040
2680function _testIntersect($x1, $y1, $x2, $y2, $x3, $y3, $x4, $y4) {
2681 // Tests whether line (x1, y1) and (x2, y2) [a gradient axis (perpendicular)]
2682 // intersects with a specific line segment (x3, y3) and (x4, y4)
2683 $a1 = $y2-$y1;
2684 $b1 = $x1-$x2;
2685 $c1 = $a1*$x1+$b1*$y1;
2686 $a2 = $y4-$y3;
2687 $b2 = $x3-$x4;
2688 $c2 = $a2*$x3+$b2*$y3;
2689 $det = $a1*$b2 - $a2*$b1;
2690 if($det == 0){ //Lines are parallel
2691 return false;
2692 }
2693 else{
2694 $x = ($b2*$c1 - $b1*$c2)/$det;
2695 $y = ($a1*$c2 - $a2*$c1)/$det;
2696 if ($x >= $x3 && $x <= $x4 && $y >= $y3 && $y <= $y4) { return true; }
2697 }
2698 return false;
2699}
2700
2701
2702
2703?> \ 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
index b1b61446..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/tocontents.php
+++ /dev/null
@@ -1,467 +0,0 @@
1<?php
2
3class tocontents {
4
5var $mpdf = null;
6var $_toc;
7var $TOCmark;
8var $TOCoutdent; // mPDF 5.6.31
9var $TOCpreHTML;
10var $TOCpostHTML;
11var $TOCbookmarkText;
12var $TOCusePaging;
13var $TOCuseLinking;
14var $TOCorientation;
15var $TOC_margin_left;
16var $TOC_margin_right;
17var $TOC_margin_top;
18var $TOC_margin_bottom;
19var $TOC_margin_header;
20var $TOC_margin_footer;
21var $TOC_odd_header_name;
22var $TOC_even_header_name;
23var $TOC_odd_footer_name;
24var $TOC_even_footer_name;
25var $TOC_odd_header_value;
26var $TOC_even_header_value;
27var $TOC_odd_footer_value;
28var $TOC_even_footer_value;
29var $TOC_page_selector;
30var $m_TOC;
31
32function tocontents(&$mpdf) {
33 $this->mpdf = $mpdf;
34 $this->_toc=array();
35 $this->TOCmark = 0;
36 $this->m_TOC=array();
37}
38
39function 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
40 if (strtoupper($toc_id)=='ALL') { $toc_id = '_mpdf_all'; }
41 else if (!$toc_id) { $toc_id = 0; }
42 else { $toc_id = strtolower($toc_id); }
43
44 if ($TOCusePaging === false || strtolower($TOCusePaging) == "off" || $TOCusePaging === 0 || $TOCusePaging === "0" || $TOCusePaging === "") { $TOCusePaging = false; }
45 else { $TOCusePaging = true; }
46 if (!$TOCuseLinking) { $TOCuseLinking = false; }
47 if ($toc_id) {
48 $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page;
49 $this->m_TOC[$toc_id]['TOCoutdent'] = $tocoutdent;
50 $this->m_TOC[$toc_id]['TOCorientation'] = $toc_orientation;
51 $this->m_TOC[$toc_id]['TOCuseLinking'] = $TOCuseLinking;
52 $this->m_TOC[$toc_id]['TOCusePaging'] = $TOCusePaging;
53
54 if ($toc_preHTML) { $this->m_TOC[$toc_id]['TOCpreHTML'] = $toc_preHTML; }
55 if ($toc_postHTML) { $this->m_TOC[$toc_id]['TOCpostHTML'] = $toc_postHTML; }
56 if ($toc_bookmarkText) { $this->m_TOC[$toc_id]['TOCbookmarkText'] = $toc_bookmarkText; }
57
58 $this->m_TOC[$toc_id]['TOC_margin_left'] = $toc_mgl;
59 $this->m_TOC[$toc_id]['TOC_margin_right'] = $toc_mgr;
60 $this->m_TOC[$toc_id]['TOC_margin_top'] = $toc_mgt;
61 $this->m_TOC[$toc_id]['TOC_margin_bottom'] = $toc_mgb;
62 $this->m_TOC[$toc_id]['TOC_margin_header'] = $toc_mgh;
63 $this->m_TOC[$toc_id]['TOC_margin_footer'] = $toc_mgf;
64 $this->m_TOC[$toc_id]['TOC_odd_header_name'] = $toc_ohname;
65 $this->m_TOC[$toc_id]['TOC_even_header_name'] = $toc_ehname;
66 $this->m_TOC[$toc_id]['TOC_odd_footer_name'] = $toc_ofname;
67 $this->m_TOC[$toc_id]['TOC_even_footer_name'] = $toc_efname;
68 $this->m_TOC[$toc_id]['TOC_odd_header_value'] = $toc_ohvalue;
69 $this->m_TOC[$toc_id]['TOC_even_header_value'] = $toc_ehvalue;
70 $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = $toc_ofvalue;
71 $this->m_TOC[$toc_id]['TOC_even_footer_value'] = $toc_efvalue;
72 $this->m_TOC[$toc_id]['TOC_page_selector'] = $toc_pagesel;
73 $this->m_TOC[$toc_id]['TOCsheetsize'] = $toc_sheetsize;
74 }
75 else {
76 $this->TOCmark = $this->mpdf->page;
77 $this->TOCoutdent = $tocoutdent;
78 $this->TOCorientation = $toc_orientation;
79 $this->TOCuseLinking = $TOCuseLinking;
80 $this->TOCusePaging = $TOCusePaging;
81
82 if ($toc_preHTML) { $this->TOCpreHTML = $toc_preHTML; }
83 if ($toc_postHTML) { $this->TOCpostHTML = $toc_postHTML; }
84 if ($toc_bookmarkText) { $this->TOCbookmarkText = $toc_bookmarkText; }
85
86 $this->TOC_margin_left = $toc_mgl;
87 $this->TOC_margin_right = $toc_mgr;
88 $this->TOC_margin_top = $toc_mgt;
89 $this->TOC_margin_bottom = $toc_mgb;
90 $this->TOC_margin_header = $toc_mgh;
91 $this->TOC_margin_footer = $toc_mgf;
92 $this->TOC_odd_header_name = $toc_ohname;
93 $this->TOC_even_header_name = $toc_ehname;
94 $this->TOC_odd_footer_name = $toc_ofname;
95 $this->TOC_even_footer_name = $toc_efname;
96 $this->TOC_odd_header_value = $toc_ohvalue;
97 $this->TOC_even_header_value = $toc_ehvalue;
98 $this->TOC_odd_footer_value = $toc_ofvalue;
99 $this->TOC_even_footer_value = $toc_efvalue;
100 $this->TOC_page_selector = $toc_pagesel;
101 $this->TOCsheetsize = $toc_sheetsize;
102 }
103}
104
105// Initiate, and Mark a place for the Table of Contents to be inserted
106function TOC($tocfont='', $tocfontsize=0, $tocindent=0, $resetpagenum='', $pagenumstyle='', $suppress='', $toc_orientation='', $TOCusePaging=true, $TOCuseLinking=false, $toc_id=0, $tocoutdent='') { // mPDF 5.6.19) {
107 if (strtoupper($toc_id)=='ALL') { $toc_id = '_mpdf_all'; }
108 else if (!$toc_id) { $toc_id = 0; }
109 else { $toc_id = strtolower($toc_id); }
110 // To use odd and even pages
111 // Cannot start table of contents on an even page
112 if (($this->mpdf->mirrorMargins) && (($this->mpdf->page)%2==0)) { // EVEN
113 if ($this->mpdf->ColActive) {
114 if (count($this->mpdf->columnbuffer)) { $this->mpdf->printcolumnbuffer(); }
115 }
116 $this->mpdf->AddPage($this->mpdf->CurOrientation,'',$resetpagenum, $pagenumstyle, $suppress);
117 }
118 else {
119 $this->mpdf->PageNumSubstitutions[] = array('from'=>$this->mpdf->page, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=>$suppress);
120 }
121 if ($toc_id) {
122 $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page;
123 $this->m_TOC[$toc_id]['TOCoutdent'] = $tocoutdent;
124 $this->m_TOC[$toc_id]['TOCorientation'] = $toc_orientation;
125 $this->m_TOC[$toc_id]['TOCuseLinking'] = $TOCuseLinking;
126 $this->m_TOC[$toc_id]['TOCusePaging'] = $TOCusePaging;
127 }
128 else {
129 $this->TOCmark = $this->mpdf->page;
130 $this->TOCoutdent = $tocoutdent;
131 $this->TOCorientation = $toc_orientation;
132 $this->TOCuseLinking = $TOCuseLinking;
133 $this->TOCusePaging = $TOCusePaging;
134 }
135}
136
137
138function insertTOC() {
139 $notocs = 0;
140 if ($this->TOCmark) { $notocs = 1; }
141 $notocs += count($this->m_TOC);
142
143 if ($notocs==0) { return; }
144
145 if (count($this->m_TOC)) { reset($this->m_TOC); }
146 $added_toc_pages = 0;
147
148 if ($this->mpdf->ColActive) { $this->mpdf->SetColumns(0); }
149 if (($this->mpdf->mirrorMargins) && (($this->mpdf->page)%2==1)) { // ODD
150 $this->mpdf->AddPage($this->mpdf->CurOrientation);
151 $extrapage = true;
152 }
153 else { $extrapage = false; }
154
155 for ($toci = 0; $toci<$notocs; $toci++) {
156 if ($toci==0 && $this->TOCmark) {
157 $toc_id = 0;
158 $toc_page = $this->TOCmark;
159 $tocoutdent = $this->TOCoutdent;
160 $toc_orientation = $this->TOCorientation;
161 $TOCuseLinking = $this->TOCuseLinking;
162 $TOCusePaging = $this->TOCusePaging;
163 $toc_preHTML = $this->TOCpreHTML;
164 $toc_postHTML = $this->TOCpostHTML;
165 $toc_bookmarkText = $this->TOCbookmarkText;
166 $toc_mgl = $this->TOC_margin_left;
167 $toc_mgr = $this->TOC_margin_right;
168 $toc_mgt = $this->TOC_margin_top;
169 $toc_mgb = $this->TOC_margin_bottom;
170 $toc_mgh = $this->TOC_margin_header;
171 $toc_mgf = $this->TOC_margin_footer;
172 $toc_ohname = $this->TOC_odd_header_name;
173 $toc_ehname = $this->TOC_even_header_name;
174 $toc_ofname = $this->TOC_odd_footer_name;
175 $toc_efname = $this->TOC_even_footer_name;
176 $toc_ohvalue = $this->TOC_odd_header_value;
177 $toc_ehvalue = $this->TOC_even_header_value;
178 $toc_ofvalue = $this->TOC_odd_footer_value;
179 $toc_efvalue = $this->TOC_even_footer_value;
180 $toc_page_selector = $this->TOC_page_selector;
181 $toc_sheet_size = $this->TOCsheetsize;
182 }
183 else {
184 $arr = current($this->m_TOC);
185
186 $toc_id = key($this->m_TOC);
187 $toc_page = $this->m_TOC[$toc_id]['TOCmark'];
188 $tocoutdent = $this->m_TOC[$toc_id]['TOCoutdent'];
189 $toc_orientation = $this->m_TOC[$toc_id]['TOCorientation'];
190 $TOCuseLinking = $this->m_TOC[$toc_id]['TOCuseLinking'];
191 $TOCusePaging = $this->m_TOC[$toc_id]['TOCusePaging'];
192 if (isset($this->m_TOC[$toc_id]['TOCpreHTML'])) { $toc_preHTML = $this->m_TOC[$toc_id]['TOCpreHTML']; }
193 else { $toc_preHTML = ''; }
194 if (isset($this->m_TOC[$toc_id]['TOCpostHTML'])) { $toc_postHTML = $this->m_TOC[$toc_id]['TOCpostHTML']; }
195 else { $toc_postHTML = ''; }
196 if (isset($this->m_TOC[$toc_id]['TOCbookmarkText'])) { $toc_bookmarkText = $this->m_TOC[$toc_id]['TOCbookmarkText']; }
197 else { $toc_bookmarkText = ''; } // *BOOKMARKS*
198 $toc_mgl = $this->m_TOC[$toc_id]['TOC_margin_left'];
199 $toc_mgr = $this->m_TOC[$toc_id]['TOC_margin_right'];
200 $toc_mgt = $this->m_TOC[$toc_id]['TOC_margin_top'];
201 $toc_mgb = $this->m_TOC[$toc_id]['TOC_margin_bottom'];
202 $toc_mgh = $this->m_TOC[$toc_id]['TOC_margin_header'];
203 $toc_mgf = $this->m_TOC[$toc_id]['TOC_margin_footer'];
204 $toc_ohname = $this->m_TOC[$toc_id]['TOC_odd_header_name'];
205 $toc_ehname = $this->m_TOC[$toc_id]['TOC_even_header_name'];
206 $toc_ofname = $this->m_TOC[$toc_id]['TOC_odd_footer_name'];
207 $toc_efname = $this->m_TOC[$toc_id]['TOC_even_footer_name'];
208 $toc_ohvalue = $this->m_TOC[$toc_id]['TOC_odd_header_value'];
209 $toc_ehvalue = $this->m_TOC[$toc_id]['TOC_even_header_value'];
210 $toc_ofvalue = $this->m_TOC[$toc_id]['TOC_odd_footer_value'];
211 $toc_efvalue = $this->m_TOC[$toc_id]['TOC_even_footer_value'];
212 $toc_page_selector = $this->m_TOC[$toc_id]['TOC_page_selector'];
213 $toc_sheet_size = $this->m_TOC[$toc_id]['TOCsheetsize'];
214 next($this->m_TOC);
215 }
216
217 // mPDF 5.6.31
218
219 if (!$toc_orientation) { $toc_orientation= $this->mpdf->DefOrientation; }
220 $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 );
221
222 $this->mpdf->writingToC = true; // mPDF 5.6.38
223 // mPDF 5.6.31
224 $tocstart=count($this->mpdf->pages);
225 if ($toc_preHTML) { $this->mpdf->WriteHTML($toc_preHTML); }
226
227 // mPDF 5.6.19
228 $html ='<div class="mpdf_toc" id="mpdf_toc_'.$toc_id.'">';
229 foreach($this->_toc as $t) {
230 if ($t['toc_id']==='_mpdf_all' || $t['toc_id']===$toc_id ) {
231 $html .= '<div class="mpdf_toc_level_'.$t['l'].'">';
232 if ($TOCuseLinking) { $html .= '<a class="mpdf_toc_a" href="#__mpdfinternallink_'.$t['link'].'">'; }
233 $html .= '<span class="mpdf_toc_t_level_'.$t['l'].'">'.$t['t'].'</span>';
234 if ($TOCuseLinking) { $html .= '</a>'; }
235 if (!$tocoutdent) { $tocoutdent = '0'; }
236 if ($TOCusePaging) { $html .= ' <dottab outdent="'.$tocoutdent.'" /> ';
237 if ($TOCuseLinking) { $html .= '<a class="mpdf_toc_a" href="#__mpdfinternallink_'.$t['link'].'">'; }
238 $html .= '<span class="mpdf_toc_p_level_'.$t['l'].'">'.$this->mpdf->docPageNum($t['p']).'</span>';
239 if ($TOCuseLinking) { $html .= '</a>'; }
240 }
241 $html .= '</div>';
242 }
243 }
244 $html .= '</div>';
245 $this->mpdf->WriteHTML($html);
246
247 if ($toc_postHTML) { $this->mpdf->WriteHTML($toc_postHTML); }
248 $this->mpdf->writingToC = false; // mPDF 5.6.38
249 $this->mpdf->AddPage($toc_orientation,'E');
250
251 $n_toc = $this->mpdf->page - $tocstart + 1;
252
253 if ($toci==0 && $this->TOCmark) {
254 $TOC_start = $tocstart ;
255 $TOC_end = $this->mpdf->page;
256 $TOC_npages = $n_toc;
257 }
258 else {
259 $this->m_TOC[$toc_id]['start'] = $tocstart ;
260 $this->m_TOC[$toc_id]['end'] = $this->mpdf->page;
261 $this->m_TOC[$toc_id]['npages'] = $n_toc;
262 }
263 }
264
265 $s = '';
266
267 $s .= $this->mpdf->PrintBodyBackgrounds();
268
269 $s .= $this->mpdf->PrintPageBackgrounds();
270 $this->mpdf->pages[$this->mpdf->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->mpdf->uniqstr.')/', "\n".$s."\n".'\\1', $this->mpdf->pages[$this->mpdf->page]);
271 $this->mpdf->pageBackgrounds = array();
272
273 //Page footer
274 $this->mpdf->InFooter=true;
275 $this->mpdf->Footer();
276 $this->mpdf->InFooter=false;
277
278 // 2nd time through to move pages etc.
279 $added_toc_pages = 0;
280 if (count($this->m_TOC)) { reset($this->m_TOC); }
281
282 for ($toci = 0; $toci<$notocs; $toci++) {
283 if ($toci==0 && $this->TOCmark) {
284 $toc_id = 0;
285 $toc_page = $this->TOCmark + $added_toc_pages;
286 $toc_orientation = $this->TOCorientation;
287 $TOCuseLinking = $this->TOCuseLinking;
288 $TOCusePaging = $this->TOCusePaging;
289 $toc_bookmarkText = $this->TOCbookmarkText; // *BOOKMARKS*
290
291 $tocstart = $TOC_start ;
292 $tocend = $n = $TOC_end;
293 $n_toc = $TOC_npages;
294 }
295 else {
296 $arr = current($this->m_TOC);
297
298 $toc_id = key($this->m_TOC);
299 $toc_page = $this->m_TOC[$toc_id]['TOCmark'] + $added_toc_pages;
300 $toc_orientation = $this->m_TOC[$toc_id]['TOCorientation'];
301 $TOCuseLinking = $this->m_TOC[$toc_id]['TOCuseLinking'];
302 $TOCusePaging = $this->m_TOC[$toc_id]['TOCusePaging'];
303 $toc_bookmarkText = $this->m_TOC[$toc_id]['TOCbookmarkText']; // *BOOKMARKS*
304
305 $tocstart = $this->m_TOC[$toc_id]['start'] ;
306 $tocend = $n = $this->m_TOC[$toc_id]['end'] ;
307 $n_toc = $this->m_TOC[$toc_id]['npages'] ;
308
309 next($this->m_TOC);
310 }
311
312 // Now pages moved
313 $added_toc_pages += $n_toc;
314
315 $this->mpdf->MovePages($toc_page, $tocstart, $tocend) ;
316 $this->mpdf->pgsIns[$toc_page] = $tocend - $tocstart + 1;
317
318/*-- BOOKMARKS --*/
319 // Insert new Bookmark for Bookmark
320 if ($toc_bookmarkText) {
321 $insert = -1;
322 foreach($this->mpdf->BMoutlines as $i=>$o) {
323 if($o['p']<$toc_page) { // i.e. before point of insertion
324 $insert = $i;
325 }
326 }
327 $txt = $this->mpdf->purify_utf8_text($toc_bookmarkText);
328 if ($this->mpdf->text_input_as_HTML) {
329 $txt = $this->mpdf->all_entities_to_utf8($txt);
330 }
331 $newBookmark[0] = array('t'=>$txt,'l'=>0,'y'=>0,'p'=>$toc_page );
332 array_splice($this->mpdf->BMoutlines,($insert+1),0,$newBookmark);
333 }
334/*-- END BOOKMARKS --*/
335
336 }
337
338 // Delete empty page that was inserted earlier
339 if ($extrapage) {
340 unset($this->mpdf->pages[count($this->mpdf->pages)]);
341 $this->mpdf->page--; // Reset page pointer
342 }
343
344
345}
346
347
348function openTagTOC($attr) {
349 if (isset($attr['OUTDENT']) && $attr['OUTDENT']) { $tocoutdent = $attr['OUTDENT']; } else { $tocoutdent = ''; } // mPDF 5.6.19
350 if (isset($attr['RESETPAGENUM']) && $attr['RESETPAGENUM']) { $resetpagenum = $attr['RESETPAGENUM']; } else { $resetpagenum = ''; }
351 if (isset($attr['PAGENUMSTYLE']) && $attr['PAGENUMSTYLE']) { $pagenumstyle = $attr['PAGENUMSTYLE']; } else { $pagenumstyle= ''; }
352 if (isset($attr['SUPPRESS']) && $attr['SUPPRESS']) { $suppress = $attr['SUPPRESS']; } else { $suppress = ''; }
353 if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { $toc_orientation = $attr['TOC-ORIENTATION']; } else { $toc_orientation = ''; }
354 if (isset($attr['PAGING']) && (strtoupper($attr['PAGING'])=='OFF' || $attr['PAGING']==='0')) { $paging = false; }
355 else { $paging = true; }
356 if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $links = true; }
357 else { $links = false; }
358 if (isset($attr['NAME']) && $attr['NAME']) { $toc_id = strtolower($attr['NAME']); } else { $toc_id = 0; }
359 $this->TOC('',0,0,$resetpagenum, $pagenumstyle, $suppress, $toc_orientation, $paging, $links, $toc_id, $tocoutdent); // mPDF 5.6.19 5.6.31
360}
361
362
363function openTagTOCPAGEBREAK($attr) {
364 if (isset($attr['NAME']) && $attr['NAME']) { $toc_id = strtolower($attr['NAME']); } else { $toc_id = 0; }
365 if ($toc_id) {
366 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
367 if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { $this->m_TOC[$toc_id]['TOCorientation'] = $attr['TOC-ORIENTATION']; } else { $this->m_TOC[$toc_id]['TOCorientation'] = ''; }
368 if (isset($attr['PAGING']) && (strtoupper($attr['PAGING'])=='OFF' || $attr['PAGING']==='0')) { $this->m_TOC[$toc_id]['TOCusePaging'] = false; }
369 else { $this->m_TOC[$toc_id]['TOCusePaging'] = true; }
370 if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $this->m_TOC[$toc_id]['TOCuseLinking'] = true; }
371 else { $this->m_TOC[$toc_id]['TOCuseLinking'] = false; }
372
373 $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'] = '';
374 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); }
375 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); }
376 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); }
377 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); }
378 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); }
379 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); }
380 $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'] = '';
381 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']; }
382 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']; }
383 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']; }
384 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']; }
385 $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;
386 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; }
387 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; }
388 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; }
389 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; }
390 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; }
391 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; }
392 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; }
393 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; }
394 if (isset($attr['TOC-PAGE-SELECTOR']) && $attr['TOC-PAGE-SELECTOR']) { $this->m_TOC[$toc_id]['TOC_page_selector'] = $attr['TOC-PAGE-SELECTOR']; }
395 else { $this->m_TOC[$toc_id]['TOC_page_selector'] = ''; }
396 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'] = ''; }
397
398
399 if (isset($attr['TOC-PREHTML']) && $attr['TOC-PREHTML']) { $this->m_TOC[$toc_id]['TOCpreHTML'] = htmlspecialchars_decode($attr['TOC-PREHTML'],ENT_QUOTES); }
400 if (isset($attr['TOC-POSTHTML']) && $attr['TOC-POSTHTML']) { $this->m_TOC[$toc_id]['TOCpostHTML'] = htmlspecialchars_decode($attr['TOC-POSTHTML'],ENT_QUOTES); }
401
402 if (isset($attr['TOC-BOOKMARKTEXT']) && $attr['TOC-BOOKMARKTEXT']) { $this->m_TOC[$toc_id]['TOCbookmarkText'] = htmlspecialchars_decode($attr['TOC-BOOKMARKTEXT'],ENT_QUOTES); } // *BOOKMARKS*
403 }
404 else {
405 if (isset($attr['OUTDENT']) && $attr['OUTDENT']) { $this->TOCoutdent = $attr['OUTDENT']; } else { $this->TOCoutdent = ''; } // mPDF 5.6.19
406 if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { $this->TOCorientation = $attr['TOC-ORIENTATION']; } else { $this->TOCorientation = ''; }
407 if (isset($attr['PAGING']) && (strtoupper($attr['PAGING'])=='OFF' || $attr['PAGING']==='0')) { $this->TOCusePaging = false; }
408 else { $this->TOCusePaging = true; }
409 if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $this->TOCuseLinking = true; }
410 else { $this->TOCuseLinking = false; }
411
412 $this->TOC_margin_left = $this->TOC_margin_right = $this->TOC_margin_top = $this->TOC_margin_bottom = $this->TOC_margin_header = $this->TOC_margin_footer = '';
413 if (isset($attr['TOC-MARGIN-RIGHT'])) { $this->TOC_margin_right = $this->mpdf->ConvertSize($attr['TOC-MARGIN-RIGHT'],$this->mpdf->w,$this->mpdf->FontSize,false); }
414 if (isset($attr['TOC-MARGIN-LEFT'])) { $this->TOC_margin_left = $this->mpdf->ConvertSize($attr['TOC-MARGIN-LEFT'],$this->mpdf->w,$this->mpdf->FontSize,false); }
415 if (isset($attr['TOC-MARGIN-TOP'])) { $this->TOC_margin_top = $this->mpdf->ConvertSize($attr['TOC-MARGIN-TOP'],$this->mpdf->w,$this->mpdf->FontSize,false); }
416 if (isset($attr['TOC-MARGIN-BOTTOM'])) { $this->TOC_margin_bottom = $this->mpdf->ConvertSize($attr['TOC-MARGIN-BOTTOM'],$this->mpdf->w,$this->mpdf->FontSize,false); }
417 if (isset($attr['TOC-MARGIN-HEADER'])) { $this->TOC_margin_header = $this->mpdf->ConvertSize($attr['TOC-MARGIN-HEADER'],$this->mpdf->w,$this->mpdf->FontSize,false); }
418 if (isset($attr['TOC-MARGIN-FOOTER'])) { $this->TOC_margin_footer = $this->mpdf->ConvertSize($attr['TOC-MARGIN-FOOTER'],$this->mpdf->w,$this->mpdf->FontSize,false); }
419 $this->TOC_odd_header_name = $this->TOC_even_header_name = $this->TOC_odd_footer_name = $this->TOC_even_footer_name = '';
420 if (isset($attr['TOC-ODD-HEADER-NAME']) && $attr['TOC-ODD-HEADER-NAME']) { $this->TOC_odd_header_name = $attr['TOC-ODD-HEADER-NAME']; }
421 if (isset($attr['TOC-EVEN-HEADER-NAME']) && $attr['TOC-EVEN-HEADER-NAME']) { $this->TOC_even_header_name = $attr['TOC-EVEN-HEADER-NAME']; }
422 if (isset($attr['TOC-ODD-FOOTER-NAME']) && $attr['TOC-ODD-FOOTER-NAME']) { $this->TOC_odd_footer_name = $attr['TOC-ODD-FOOTER-NAME']; }
423 if (isset($attr['TOC-EVEN-FOOTER-NAME']) && $attr['TOC-EVEN-FOOTER-NAME']) { $this->TOC_even_footer_name = $attr['TOC-EVEN-FOOTER-NAME']; }
424 $this->TOC_odd_header_value = $this->TOC_even_header_value = $this->TOC_odd_footer_value = $this->TOC_even_footer_value = 0;
425 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; }
426 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; }
427 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; }
428 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; }
429
430 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; }
431 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; }
432 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; }
433 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; }
434 if (isset($attr['TOC-PAGE-SELECTOR']) && $attr['TOC-PAGE-SELECTOR']) { $this->TOC_page_selector = $attr['TOC-PAGE-SELECTOR']; }
435 else { $this->TOC_page_selector = ''; }
436 if (isset($attr['TOC-SHEET-SIZE']) && $attr['TOC-SHEET-SIZE']) { $this->TOCsheetsize = $attr['TOC-SHEET-SIZE']; } else { $this->TOCsheetsize = ''; }
437
438 if (isset($attr['TOC-PREHTML']) && $attr['TOC-PREHTML']) { $this->TOCpreHTML = htmlspecialchars_decode($attr['TOC-PREHTML'],ENT_QUOTES); }
439 if (isset($attr['TOC-POSTHTML']) && $attr['TOC-POSTHTML']) { $this->TOCpostHTML = htmlspecialchars_decode($attr['TOC-POSTHTML'],ENT_QUOTES); }
440 if (isset($attr['TOC-BOOKMARKTEXT']) && $attr['TOC-BOOKMARKTEXT']) { $this->TOCbookmarkText = htmlspecialchars_decode($attr['TOC-BOOKMARKTEXT'],ENT_QUOTES); }
441 }
442
443 if ($this->mpdf->y == $this->mpdf->tMargin && (!$this->mpdf->mirrorMargins ||($this->mpdf->mirrorMargins && $this->mpdf->page % 2==1))) {
444 if ($toc_id) { $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page; }
445 else { $this->TOCmark = $this->mpdf->page; }
446 // Don't add a page
447 if ($this->mpdf->page==1 && count($this->mpdf->PageNumSubstitutions)==0) {
448 $resetpagenum = '';
449 $pagenumstyle = '';
450 $suppress = '';
451 if (isset($attr['RESETPAGENUM'])) { $resetpagenum = $attr['RESETPAGENUM']; }
452 if (isset($attr['PAGENUMSTYLE'])) { $pagenumstyle = $attr['PAGENUMSTYLE']; }
453 if (isset($attr['SUPPRESS'])) { $suppress = $attr['SUPPRESS']; }
454 if (!$suppress) { $suppress = 'off'; }
455 if (!$resetpagenum) { $resetpagenum= 1; }
456 $this->mpdf->PageNumSubstitutions[] = array('from'=>1, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress);
457 }
458 return array(true, $toc_id);
459 }
460 // No break - continues as PAGEBREAK...
461 return array(false, $toc_id);
462}
463
464
465}
466
467?> \ 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
index 1c93b600..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/ttfontsuni.php
+++ /dev/null
@@ -1,2065 +0,0 @@
1<?php
2
3/*******************************************************************************
4* TTFontFile class *
5* *
6* Version: 2.01 *
7* Date: 2012-02-25 *
8* Author: Ian Back <ianb@bpm1.com> *
9* License: LGPL *
10* Copyright (c) Ian Back, 2010 *
11* This class is based on The ReportLab Open Source PDF library *
12* written in Python - http://www.reportlab.com/software/opensource/ *
13* together with ideas from the OpenOffice source code and others. *
14* This header must be retained in any redistribution or *
15* modification of the file. *
16* *
17*******************************************************************************/
18
19// Define the value used in the "head" table of a created TTF file
20// 0x74727565 "true" for Mac
21// 0x00010000 for Windows
22// Either seems to work for a font embedded in a PDF file
23// when read by Adobe Reader on a Windows PC(!)
24if (!defined('_TTF_MAC_HEADER')) define("_TTF_MAC_HEADER", false);
25
26// Recalculate correct metadata/profiles when making subset fonts (not SIP/SMP)
27// e.g. xMin, xMax, maxNContours
28if (!defined('_RECALC_PROFILE')) define("_RECALC_PROFILE", false);
29
30// TrueType Font Glyph operators
31define("GF_WORDS",(1 << 0));
32define("GF_SCALE",(1 << 3));
33define("GF_MORE",(1 << 5));
34define("GF_XYSCALE",(1 << 6));
35define("GF_TWOBYTWO",(1 << 7));
36
37
38
39class TTFontFile {
40
41var $unAGlyphs; // mPDF 5.4.05
42var $panose;
43var $maxUni;
44var $sFamilyClass;
45var $sFamilySubClass;
46var $sipset;
47var $smpset;
48var $_pos;
49var $numTables;
50var $searchRange;
51var $entrySelector;
52var $rangeShift;
53var $tables;
54var $otables;
55var $filename;
56var $fh;
57var $glyphPos;
58var $charToGlyph;
59var $ascent;
60var $descent;
61var $name;
62var $familyName;
63var $styleName;
64var $fullName;
65var $uniqueFontID;
66var $unitsPerEm;
67var $bbox;
68var $capHeight;
69var $stemV;
70var $italicAngle;
71var $flags;
72var $underlinePosition;
73var $underlineThickness;
74var $charWidths;
75var $defaultWidth;
76var $maxStrLenRead;
77var $numTTCFonts;
78var $TTCFonts;
79var $maxUniChar;
80var $kerninfo;
81
82 function TTFontFile() {
83 $this->maxStrLenRead = 200000; // Maximum size of glyf table to read in as string (otherwise reads each glyph from file)
84 }
85
86
87 function getMetrics($file, $TTCfontID=0, $debug=false, $BMPonly=false, $kerninfo=false, $unAGlyphs=false) { // mPDF 5.4.05
88 $this->unAGlyphs = $unAGlyphs; // mPDF 5.4.05
89 $this->filename = $file;
90 $this->fh = fopen($file,'rb') or die('Can\'t open file ' . $file);
91 $this->_pos = 0;
92 $this->charWidths = '';
93 $this->glyphPos = array();
94 $this->charToGlyph = array();
95 $this->tables = array();
96 $this->otables = array();
97 $this->kerninfo = array();
98 $this->ascent = 0;
99 $this->descent = 0;
100 $this->numTTCFonts = 0;
101 $this->TTCFonts = array();
102 $this->version = $version = $this->read_ulong();
103 $this->panose = array();
104 if ($version==0x4F54544F)
105 die("Postscript outlines are not supported");
106 if ($version==0x74746366 && !$TTCfontID)
107 die("ERROR - You must define the TTCfontID for a TrueType Collection in config_fonts.php (". $file.")");
108 if (!in_array($version, array(0x00010000,0x74727565)) && !$TTCfontID)
109 die("Not a TrueType font: version=".$version);
110 if ($TTCfontID > 0) {
111 $this->version = $version = $this->read_ulong(); // TTC Header version now
112 if (!in_array($version, array(0x00010000,0x00020000)))
113 die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
114 $this->numTTCFonts = $this->read_ulong();
115 for ($i=1; $i<=$this->numTTCFonts; $i++) {
116 $this->TTCFonts[$i]['offset'] = $this->read_ulong();
117 }
118 $this->seek($this->TTCFonts[$TTCfontID]['offset']);
119 $this->version = $version = $this->read_ulong(); // TTFont version again now
120 }
121 $this->readTableDirectory($debug);
122 $this->extractInfo($debug, $BMPonly, $kerninfo);
123 fclose($this->fh);
124 }
125
126
127 function readTableDirectory($debug=false) {
128 $this->numTables = $this->read_ushort();
129 $this->searchRange = $this->read_ushort();
130 $this->entrySelector = $this->read_ushort();
131 $this->rangeShift = $this->read_ushort();
132 $this->tables = array();
133 for ($i=0;$i<$this->numTables;$i++) {
134 $record = array();
135 $record['tag'] = $this->read_tag();
136 $record['checksum'] = array($this->read_ushort(),$this->read_ushort());
137 $record['offset'] = $this->read_ulong();
138 $record['length'] = $this->read_ulong();
139 $this->tables[$record['tag']] = $record;
140 }
141 if ($debug) $this->checksumTables();
142 }
143
144 function checksumTables() {
145 // Check the checksums for all tables
146 foreach($this->tables AS $t) {
147 if ($t['length'] > 0 && $t['length'] < $this->maxStrLenRead) { // 1.02
148 $table = $this->get_chunk($t['offset'], $t['length']);
149 $checksum = $this->calcChecksum($table);
150 if ($t['tag'] == 'head') {
151 $up = unpack('n*', substr($table,8,4));
152 $adjustment[0] = $up[1];
153 $adjustment[1] = $up[2];
154 $checksum = $this->sub32($checksum, $adjustment);
155 }
156 $xchecksum = $t['checksum'];
157 if ($xchecksum != $checksum)
158 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])));
159 }
160 }
161 }
162
163 function sub32($x, $y) {
164 $xlo = $x[1];
165 $xhi = $x[0];
166 $ylo = $y[1];
167 $yhi = $y[0];
168 if ($ylo > $xlo) { $xlo += 1 << 16; $yhi += 1; }
169 $reslo = $xlo-$ylo;
170 if ($yhi > $xhi) { $xhi += 1 << 16; }
171 $reshi = $xhi-$yhi;
172 $reshi = $reshi & 0xFFFF;
173 return array($reshi, $reslo);
174 }
175
176 function calcChecksum($data) {
177 if (strlen($data) % 4) { $data .= str_repeat("\0",(4-(strlen($data) % 4))); }
178 $len = strlen($data);
179 $hi=0x0000;
180 $lo=0x0000;
181 for($i=0;$i<$len;$i+=4) {
182 $hi += (ord($data[$i])<<8) + ord($data[$i+1]);
183 $lo += (ord($data[$i+2])<<8) + ord($data[$i+3]);
184 $hi += ($lo >> 16) & 0xFFFF;
185 $lo = $lo & 0xFFFF;
186 }
187 return array($hi, $lo);
188 }
189
190 function get_table_pos($tag) {
191 $offset = $this->tables[$tag]['offset'];
192 $length = $this->tables[$tag]['length'];
193 return array($offset, $length);
194 }
195
196 function seek($pos) {
197 $this->_pos = $pos;
198 fseek($this->fh,$this->_pos);
199 }
200
201 function skip($delta) {
202 $this->_pos = $this->_pos + $delta;
203 fseek($this->fh,$delta,SEEK_CUR);
204 }
205
206 function seek_table($tag, $offset_in_table = 0) {
207 $tpos = $this->get_table_pos($tag);
208 $this->_pos = $tpos[0] + $offset_in_table;
209 fseek($this->fh, $this->_pos);
210 return $this->_pos;
211 }
212
213 function read_tag() {
214 $this->_pos += 4;
215 return fread($this->fh,4);
216 }
217
218 function read_short() {
219 $this->_pos += 2;
220 $s = fread($this->fh,2);
221 $a = (ord($s[0])<<8) + ord($s[1]);
222 if ($a & (1 << 15) ) {
223 $a = ($a - (1 << 16));
224 }
225 return $a;
226 }
227
228 function unpack_short($s) {
229 $a = (ord($s[0])<<8) + ord($s[1]);
230 if ($a & (1 << 15) ) {
231 $a = ($a - (1 << 16));
232 }
233 return $a;
234 }
235
236 function read_ushort() {
237 $this->_pos += 2;
238 $s = fread($this->fh,2);
239 return (ord($s[0])<<8) + ord($s[1]);
240 }
241
242 function read_ulong() {
243 $this->_pos += 4;
244 $s = fread($this->fh,4);
245 // if large uInt32 as an integer, PHP converts it to -ve
246 return (ord($s[0])*16777216) + (ord($s[1])<<16) + (ord($s[2])<<8) + ord($s[3]); // 16777216 = 1<<24
247 }
248
249 function get_ushort($pos) {
250 fseek($this->fh,$pos);
251 $s = fread($this->fh,2);
252 return (ord($s[0])<<8) + ord($s[1]);
253 }
254
255 function get_ulong($pos) {
256 fseek($this->fh,$pos);
257 $s = fread($this->fh,4);
258 // iF large uInt32 as an integer, PHP converts it to -ve
259 return (ord($s[0])*16777216) + (ord($s[1])<<16) + (ord($s[2])<<8) + ord($s[3]); // 16777216 = 1<<24
260 }
261
262 function pack_short($val) {
263 if ($val<0) {
264 $val = abs($val);
265 $val = ~$val;
266 $val += 1;
267 }
268 return pack("n",$val);
269 }
270
271 function splice($stream, $offset, $value) {
272 return substr($stream,0,$offset) . $value . substr($stream,$offset+strlen($value));
273 }
274
275 function _set_ushort($stream, $offset, $value) {
276 $up = pack("n", $value);
277 return $this->splice($stream, $offset, $up);
278 }
279
280 function _set_short($stream, $offset, $val) {
281 if ($val<0) {
282 $val = abs($val);
283 $val = ~$val;
284 $val += 1;
285 }
286 $up = pack("n",$val);
287 return $this->splice($stream, $offset, $up);
288 }
289
290 function get_chunk($pos, $length) {
291 fseek($this->fh,$pos);
292 if ($length <1) { return ''; }
293 return (fread($this->fh,$length));
294 }
295
296 function get_table($tag) {
297 list($pos, $length) = $this->get_table_pos($tag);
298 if ($length == 0) { return ''; }
299 fseek($this->fh,$pos);
300 return (fread($this->fh,$length));
301 }
302
303 function add($tag, $data) {
304 if ($tag == 'head') {
305 $data = $this->splice($data, 8, "\0\0\0\0");
306 }
307 $this->otables[$tag] = $data;
308 }
309
310
311
312/////////////////////////////////////////////////////////////////////////////////////////
313 function getCTG($file, $TTCfontID=0, $debug=false, $unAGlyphs=false) { // mPDF 5.4.05
314 $this->unAGlyphs = $unAGlyphs; // mPDF 5.4.05
315 $this->filename = $file;
316 $this->fh = fopen($file,'rb') or die('Can\'t open file ' . $file);
317 $this->_pos = 0;
318 $this->charWidths = '';
319 $this->glyphPos = array();
320 $this->charToGlyph = array();
321 $this->tables = array();
322 $this->numTTCFonts = 0;
323 $this->TTCFonts = array();
324 $this->skip(4);
325 if ($TTCfontID > 0) {
326 $this->version = $version = $this->read_ulong(); // TTC Header version now
327 if (!in_array($version, array(0x00010000,0x00020000)))
328 die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
329 $this->numTTCFonts = $this->read_ulong();
330 for ($i=1; $i<=$this->numTTCFonts; $i++) {
331 $this->TTCFonts[$i]['offset'] = $this->read_ulong();
332 }
333 $this->seek($this->TTCFonts[$TTCfontID]['offset']);
334 $this->version = $version = $this->read_ulong(); // TTFont version again now
335 }
336 $this->readTableDirectory($debug);
337
338
339 // cmap - Character to glyph index mapping table
340 $cmap_offset = $this->seek_table("cmap");
341 $this->skip(2);
342 $cmapTableCount = $this->read_ushort();
343 $unicode_cmap_offset = 0;
344 for ($i=0;$i<$cmapTableCount;$i++) {
345 $platformID = $this->read_ushort();
346 $encodingID = $this->read_ushort();
347 $offset = $this->read_ulong();
348 $save_pos = $this->_pos;
349 if ($platformID == 3 && $encodingID == 1) { // Microsoft, Unicode
350 $format = $this->get_ushort($cmap_offset + $offset);
351 if ($format == 4) {
352 $unicode_cmap_offset = $cmap_offset + $offset;
353 break;
354 }
355 }
356 else if ($platformID == 0) { // Unicode -- assume all encodings are compatible
357 $format = $this->get_ushort($cmap_offset + $offset);
358 if ($format == 4) {
359 $unicode_cmap_offset = $cmap_offset + $offset;
360 break;
361 }
362 }
363 $this->seek($save_pos );
364 }
365
366 $glyphToChar = array();
367 $charToGlyph = array();
368 $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph );
369
370 fclose($this->fh);
371 return ($charToGlyph);
372 }
373
374/////////////////////////////////////////////////////////////////////////////////////////
375 function getTTCFonts($file) {
376 $this->filename = $file;
377 $this->fh = fopen($file,'rb');
378 if (!$this->fh) { return ('ERROR - Can\'t open file ' . $file); }
379 $this->numTTCFonts = 0;
380 $this->TTCFonts = array();
381 $this->version = $version = $this->read_ulong();
382 if ($version==0x74746366) {
383 $this->version = $version = $this->read_ulong(); // TTC Header version now
384 if (!in_array($version, array(0x00010000,0x00020000)))
385 return("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
386 }
387 else {
388 return("ERROR - Not a TrueType Collection: version=".$version." - " . $file);
389 }
390 $this->numTTCFonts = $this->read_ulong();
391 for ($i=1; $i<=$this->numTTCFonts; $i++) {
392 $this->TTCFonts[$i]['offset'] = $this->read_ulong();
393 }
394 }
395
396
397
398/////////////////////////////////////////////////////////////////////////////////////////
399
400/////////////////////////////////////////////////////////////////////////////////////////
401
402 function extractInfo($debug=false, $BMPonly=false, $kerninfo=false) {
403 $this->panose = array();
404 $this->sFamilyClass = 0;
405 $this->sFamilySubClass = 0;
406 ///////////////////////////////////
407 // name - Naming table
408 ///////////////////////////////////
409 $name_offset = $this->seek_table("name");
410 $format = $this->read_ushort();
411 if ($format != 0 && $format != 1)
412 die("Unknown name table format ".$format);
413 $numRecords = $this->read_ushort();
414 $string_data_offset = $name_offset + $this->read_ushort();
415 $names = array(1=>'',2=>'',3=>'',4=>'',6=>'');
416 $K = array_keys($names);
417 $nameCount = count($names);
418 for ($i=0;$i<$numRecords; $i++) {
419 $platformId = $this->read_ushort();
420 $encodingId = $this->read_ushort();
421 $languageId = $this->read_ushort();
422 $nameId = $this->read_ushort();
423 $length = $this->read_ushort();
424 $offset = $this->read_ushort();
425 if (!in_array($nameId,$K)) continue;
426 $N = '';
427 if ($platformId == 3 && $encodingId == 1 && $languageId == 0x409) { // Microsoft, Unicode, US English, PS Name
428 $opos = $this->_pos;
429 $this->seek($string_data_offset + $offset);
430 if ($length % 2 != 0)
431 die("PostScript name is UTF-16BE string of odd length");
432 $length /= 2;
433 $N = '';
434 while ($length > 0) {
435 $char = $this->read_ushort();
436 $N .= (chr($char));
437 $length -= 1;
438 }
439 $this->_pos = $opos;
440 $this->seek($opos);
441 }
442 else if ($platformId == 1 && $encodingId == 0 && $languageId == 0) { // Macintosh, Roman, English, PS Name
443 $opos = $this->_pos;
444 $N = $this->get_chunk($string_data_offset + $offset, $length);
445 $this->_pos = $opos;
446 $this->seek($opos);
447 }
448 if ($N && $names[$nameId]=='') {
449 $names[$nameId] = $N;
450 $nameCount -= 1;
451 if ($nameCount==0) break;
452 }
453 }
454 if ($names[6])
455 $psName = $names[6];
456 else if ($names[4])
457 $psName = preg_replace('/ /','-',$names[4]);
458 else if ($names[1])
459 $psName = preg_replace('/ /','-',$names[1]);
460 else
461 $psName = '';
462 if (!$psName)
463 die("Could not find PostScript font name: ".$this->filename);
464 if ($debug) {
465 for ($i=0;$i<count($psName);$i++) {
466 $c = $psName[$i];
467 $oc = ord($c);
468 if ($oc>126 || strpos(' [](){}<>/%',$c)!==false)
469 die("psName=".$psName." contains invalid character ".$c." ie U+".ord(c));
470 }
471 }
472 $this->name = $psName;
473 if ($names[1]) { $this->familyName = $names[1]; } else { $this->familyName = $psName; }
474 if ($names[2]) { $this->styleName = $names[2]; } else { $this->styleName = 'Regular'; }
475 if ($names[4]) { $this->fullName = $names[4]; } else { $this->fullName = $psName; }
476 if ($names[3]) { $this->uniqueFontID = $names[3]; } else { $this->uniqueFontID = $psName; }
477
478 if ($names[6]) { $this->fullName = $names[6]; }
479
480 ///////////////////////////////////
481 // head - Font header table
482 ///////////////////////////////////
483 $this->seek_table("head");
484 if ($debug) {
485 $ver_maj = $this->read_ushort();
486 $ver_min = $this->read_ushort();
487 if ($ver_maj != 1)
488 die('Unknown head table version '. $ver_maj .'.'. $ver_min);
489 $this->fontRevision = $this->read_ushort() . $this->read_ushort();
490
491 $this->skip(4);
492 $magic = $this->read_ulong();
493 if ($magic != 0x5F0F3CF5)
494 die('Invalid head table magic ' .$magic);
495 $this->skip(2);
496 }
497 else {
498 $this->skip(18);
499 }
500 $this->unitsPerEm = $unitsPerEm = $this->read_ushort();
501 $scale = 1000 / $unitsPerEm;
502 $this->skip(16);
503 $xMin = $this->read_short();
504 $yMin = $this->read_short();
505 $xMax = $this->read_short();
506 $yMax = $this->read_short();
507 $this->bbox = array(($xMin*$scale), ($yMin*$scale), ($xMax*$scale), ($yMax*$scale));
508 $this->skip(3*2);
509 $indexToLocFormat = $this->read_ushort();
510 $glyphDataFormat = $this->read_ushort();
511 if ($glyphDataFormat != 0)
512 die('Unknown glyph data format '.$glyphDataFormat);
513
514 ///////////////////////////////////
515 // hhea metrics table
516 ///////////////////////////////////
517 // ttf2t1 seems to use this value rather than the one in OS/2 - so put in for compatibility
518 if (isset($this->tables["hhea"])) {
519 $this->seek_table("hhea");
520 $this->skip(4);
521 $hheaAscender = $this->read_short();
522 $hheaDescender = $this->read_short();
523 $this->ascent = ($hheaAscender *$scale);
524 $this->descent = ($hheaDescender *$scale);
525 }
526
527 ///////////////////////////////////
528 // OS/2 - OS/2 and Windows metrics table
529 ///////////////////////////////////
530 if (isset($this->tables["OS/2"])) {
531 $this->seek_table("OS/2");
532 $version = $this->read_ushort();
533 $this->skip(2);
534 $usWeightClass = $this->read_ushort();
535 $this->skip(2);
536 $fsType = $this->read_ushort();
537 if ($fsType == 0x0002 || ($fsType & 0x0300) != 0) {
538 global $overrideTTFFontRestriction;
539 if (!$overrideTTFFontRestriction) die('ERROR - Font file '.$this->filename.' cannot be embedded due to copyright restrictions.');
540 $this->restrictedUse = true;
541 }
542 $this->skip(20);
543 $sF = $this->read_short();
544 $this->sFamilyClass = ($sF >> 8);
545 $this->sFamilySubClass = ($sF & 0xFF);
546 $this->_pos += 10; //PANOSE = 10 byte length
547 $panose = fread($this->fh,10);
548 $this->panose = array();
549 for ($p=0;$p<strlen($panose);$p++) { $this->panose[] = ord($panose[$p]); }
550 $this->skip(26);
551 $sTypoAscender = $this->read_short();
552 $sTypoDescender = $this->read_short();
553 if (!$this->ascent) $this->ascent = ($sTypoAscender*$scale);
554 if (!$this->descent) $this->descent = ($sTypoDescender*$scale);
555 if ($version > 1) {
556 $this->skip(16);
557 $sCapHeight = $this->read_short();
558 $this->capHeight = ($sCapHeight*$scale);
559 }
560 else {
561 $this->capHeight = $this->ascent;
562 }
563 }
564 else {
565 $usWeightClass = 500;
566 if (!$this->ascent) $this->ascent = ($yMax*$scale);
567 if (!$this->descent) $this->descent = ($yMin*$scale);
568 $this->capHeight = $this->ascent;
569 }
570 $this->stemV = 50 + intval(pow(($usWeightClass / 65.0),2));
571
572 ///////////////////////////////////
573 // post - PostScript table
574 ///////////////////////////////////
575 $this->seek_table("post");
576 if ($debug) {
577 $ver_maj = $this->read_ushort();
578 $ver_min = $this->read_ushort();
579 if ($ver_maj <1 || $ver_maj >4)
580 die('Unknown post table version '.$ver_maj);
581 }
582 else {
583 $this->skip(4);
584 }
585 $this->italicAngle = $this->read_short() + $this->read_ushort() / 65536.0;
586 $this->underlinePosition = $this->read_short() * $scale;
587 $this->underlineThickness = $this->read_short() * $scale;
588 $isFixedPitch = $this->read_ulong();
589
590 $this->flags = 4;
591
592 if ($this->italicAngle!= 0)
593 $this->flags = $this->flags | 64;
594 if ($usWeightClass >= 600)
595 $this->flags = $this->flags | 262144;
596 if ($isFixedPitch)
597 $this->flags = $this->flags | 1;
598
599 ///////////////////////////////////
600 // hhea - Horizontal header table
601 ///////////////////////////////////
602 $this->seek_table("hhea");
603 if ($debug) {
604 $ver_maj = $this->read_ushort();
605 $ver_min = $this->read_ushort();
606 if ($ver_maj != 1)
607 die('Unknown hhea table version '.$ver_maj);
608 $this->skip(28);
609 }
610 else {
611 $this->skip(32);
612 }
613 $metricDataFormat = $this->read_ushort();
614 if ($metricDataFormat != 0)
615 die('Unknown horizontal metric data format '.$metricDataFormat);
616 $numberOfHMetrics = $this->read_ushort();
617 if ($numberOfHMetrics == 0)
618 die('Number of horizontal metrics is 0');
619
620 ///////////////////////////////////
621 // maxp - Maximum profile table
622 ///////////////////////////////////
623 $this->seek_table("maxp");
624 if ($debug) {
625 $ver_maj = $this->read_ushort();
626 $ver_min = $this->read_ushort();
627 if ($ver_maj != 1)
628 die('Unknown maxp table version '.$ver_maj);
629 }
630 else {
631 $this->skip(4);
632 }
633 $numGlyphs = $this->read_ushort();
634
635
636 ///////////////////////////////////
637 // cmap - Character to glyph index mapping table
638 ///////////////////////////////////
639 $cmap_offset = $this->seek_table("cmap");
640 $this->skip(2);
641 $cmapTableCount = $this->read_ushort();
642 $unicode_cmap_offset = 0;
643 for ($i=0;$i<$cmapTableCount;$i++) {
644 $platformID = $this->read_ushort();
645 $encodingID = $this->read_ushort();
646 $offset = $this->read_ulong();
647 $save_pos = $this->_pos;
648 if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode
649 $format = $this->get_ushort($cmap_offset + $offset);
650 if ($format == 4) {
651 if (!$unicode_cmap_offset) $unicode_cmap_offset = $cmap_offset + $offset;
652 if ($BMPonly) break;
653 }
654 }
655 // Microsoft, Unicode Format 12 table HKCS
656 else if ((($platformID == 3 && $encodingID == 10) || $platformID == 0) && !$BMPonly) {
657 $format = $this->get_ushort($cmap_offset + $offset);
658 if ($format == 12) {
659 $unicode_cmap_offset = $cmap_offset + $offset;
660 break;
661 }
662 }
663 $this->seek($save_pos );
664 }
665 if (!$unicode_cmap_offset)
666 die('Font ('.$this->filename .') does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 0, any encoding, format 4)');
667
668
669 $sipset = false;
670 $smpset = false;
671 // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above
672 if ($format == 12 && !$BMPonly) {
673 $this->maxUniChar = 0;
674 $this->seek($unicode_cmap_offset + 4);
675 $length = $this->read_ulong();
676 $limit = $unicode_cmap_offset + $length;
677 $this->skip(4);
678
679 $nGroups = $this->read_ulong();
680
681 $glyphToChar = array();
682 $charToGlyph = array();
683 for($i=0; $i<$nGroups ; $i++) {
684 $startCharCode = $this->read_ulong();
685 $endCharCode = $this->read_ulong();
686 $startGlyphCode = $this->read_ulong();
687 if (($endCharCode > 0x20000 && $endCharCode < 0x2A6DF) || ($endCharCode > 0x2F800 && $endCharCode < 0x2FA1F)) {
688 $sipset = true;
689 }
690 else if ($endCharCode > 0x10000 && $endCharCode < 0x1FFFF) {
691 $smpset = true;
692 }
693 $offset = 0;
694 for ($unichar=$startCharCode;$unichar<=$endCharCode;$unichar++) {
695 $glyph = $startGlyphCode + $offset ;
696 $offset++;
697 $charToGlyph[$unichar] = $glyph;
698 if ($unichar < 196608) { $this->maxUniChar = max($unichar,$this->maxUniChar); }
699 $glyphToChar[$glyph][] = $unichar;
700 }
701 }
702 }
703 else {
704
705 $glyphToChar = array();
706 $charToGlyph = array();
707 $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph );
708
709 }
710 $this->sipset = $sipset ;
711 $this->smpset = $smpset ;
712
713 ///////////////////////////////////
714 // hmtx - Horizontal metrics table
715 ///////////////////////////////////
716 $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale);
717
718 ///////////////////////////////////
719 // kern - Kerning pair table
720 ///////////////////////////////////
721 if ($kerninfo) {
722 // Recognises old form of Kerning table - as required by Windows - Format 0 only
723 $kern_offset = $this->seek_table("kern");
724 $version = $this->read_ushort();
725 $nTables = $this->read_ushort();
726 // subtable header
727 $sversion = $this->read_ushort();
728 $slength = $this->read_ushort();
729 $scoverage = $this->read_ushort();
730 $format = $scoverage >> 8;
731 if ($kern_offset && $version==0 && $format==0) {
732 // Format 0
733 $nPairs = $this->read_ushort();
734 $this->skip(6);
735 for ($i=0; $i<$nPairs; $i++) {
736 $left = $this->read_ushort();
737 $right = $this->read_ushort();
738 $val = $this->read_short();
739 if (count($glyphToChar[$left])==1 && count($glyphToChar[$right])==1) {
740 if ($left != 32 && $right != 32) {
741 $this->kerninfo[$glyphToChar[$left][0]][$glyphToChar[$right][0]] = intval($val*$scale);
742 }
743 }
744 }
745 }
746 }
747 }
748
749
750/////////////////////////////////////////////////////////////////////////////////////////
751
752
753 function makeSubset($file, &$subset, $TTCfontID=0, $debug=false, $unAGlyphs=false) { // mPDF 5.4.05
754 $this->unAGlyphs = $unAGlyphs; // mPDF 5.4.05
755 $this->filename = $file;
756 $this->fh = fopen($file ,'rb') or die('Can\'t open file ' . $file);
757 $this->_pos = 0;
758 $this->charWidths = '';
759 $this->glyphPos = array();
760 $this->charToGlyph = array();
761 $this->tables = array();
762 $this->otables = array();
763 $this->ascent = 0;
764 $this->descent = 0;
765 $this->numTTCFonts = 0;
766 $this->TTCFonts = array();
767 $this->skip(4);
768 $this->maxUni = 0;
769 if ($TTCfontID > 0) {
770 $this->version = $version = $this->read_ulong(); // TTC Header version now
771 if (!in_array($version, array(0x00010000,0x00020000)))
772 die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
773 $this->numTTCFonts = $this->read_ulong();
774 for ($i=1; $i<=$this->numTTCFonts; $i++) {
775 $this->TTCFonts[$i]['offset'] = $this->read_ulong();
776 }
777 $this->seek($this->TTCFonts[$TTCfontID]['offset']);
778 $this->version = $version = $this->read_ulong(); // TTFont version again now
779 }
780 $this->readTableDirectory($debug);
781
782 ///////////////////////////////////
783 // head - Font header table
784 ///////////////////////////////////
785 $this->seek_table("head");
786 $this->skip(50);
787 $indexToLocFormat = $this->read_ushort();
788 $glyphDataFormat = $this->read_ushort();
789
790 ///////////////////////////////////
791 // hhea - Horizontal header table
792 ///////////////////////////////////
793 $this->seek_table("hhea");
794 $this->skip(32);
795 $metricDataFormat = $this->read_ushort();
796 $orignHmetrics = $numberOfHMetrics = $this->read_ushort();
797
798 ///////////////////////////////////
799 // maxp - Maximum profile table
800 ///////////////////////////////////
801 $this->seek_table("maxp");
802 $this->skip(4);
803 $numGlyphs = $this->read_ushort();
804
805
806 ///////////////////////////////////
807 // cmap - Character to glyph index mapping table
808 ///////////////////////////////////
809 $cmap_offset = $this->seek_table("cmap");
810 $this->skip(2);
811 $cmapTableCount = $this->read_ushort();
812 $unicode_cmap_offset = 0;
813 for ($i=0;$i<$cmapTableCount;$i++) {
814 $platformID = $this->read_ushort();
815 $encodingID = $this->read_ushort();
816 $offset = $this->read_ulong();
817 $save_pos = $this->_pos;
818 if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode
819 $format = $this->get_ushort($cmap_offset + $offset);
820 if ($format == 4) {
821 $unicode_cmap_offset = $cmap_offset + $offset;
822 break;
823 }
824 }
825 $this->seek($save_pos );
826 }
827
828 if (!$unicode_cmap_offset)
829 die('Font ('.$this->filename .') does not have Unicode cmap (platform 3, encoding 1, format 4, or platform 0 [any encoding] format 4)');
830
831
832 $glyphToChar = array();
833 $charToGlyph = array();
834 $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph );
835
836 $this->charToGlyph = $charToGlyph;
837
838
839 ///////////////////////////////////
840 // hmtx - Horizontal metrics table
841 ///////////////////////////////////
842 $scale = 1; // not used
843 $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale);
844
845 ///////////////////////////////////
846 // loca - Index to location
847 ///////////////////////////////////
848 $this->getLOCA($indexToLocFormat, $numGlyphs);
849
850 $subsetglyphs = array(0=>0, 1=>1, 2=>2);
851 $subsetCharToGlyph = array();
852 foreach($subset AS $code) {
853 if (isset($this->charToGlyph[$code])) {
854 $subsetglyphs[$this->charToGlyph[$code]] = $code; // Old Glyph ID => Unicode
855 $subsetCharToGlyph[$code] = $this->charToGlyph[$code]; // Unicode to old GlyphID
856
857 }
858 $this->maxUni = max($this->maxUni, $code);
859 }
860
861 list($start,$dummy) = $this->get_table_pos('glyf');
862
863 $glyphSet = array();
864 ksort($subsetglyphs);
865 $n = 0;
866 $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.
867 foreach($subsetglyphs AS $originalGlyphIdx => $uni) {
868 $fsLastCharIndex = max($fsLastCharIndex , $uni);
869 $glyphSet[$originalGlyphIdx] = $n; // old glyphID to new glyphID
870 $n++;
871 }
872
873 ksort($subsetCharToGlyph);
874 foreach($subsetCharToGlyph AS $uni => $originalGlyphIdx) {
875 $codeToGlyph[$uni] = $glyphSet[$originalGlyphIdx] ;
876 }
877 $this->codeToGlyph = $codeToGlyph;
878
879 ksort($subsetglyphs);
880 foreach($subsetglyphs AS $originalGlyphIdx => $uni) {
881 $this->getGlyphs($originalGlyphIdx, $start, $glyphSet, $subsetglyphs);
882 }
883
884 $numGlyphs = $numberOfHMetrics = count($subsetglyphs );
885
886 ///////////////////////////////////
887 // name - table copied from the original
888 ///////////////////////////////////
889 $this->add('name', $this->get_table('name'));
890
891 ///////////////////////////////////
892 //tables copied from the original
893 ///////////////////////////////////
894 $tags = array ('cvt ', 'fpgm', 'prep', 'gasp');
895 foreach($tags AS $tag) {
896 if (isset($this->tables[$tag])) { $this->add($tag, $this->get_table($tag)); }
897 }
898
899 ///////////////////////////////////
900 // post - PostScript
901 ///////////////////////////////////
902 if (isset($this->tables['post'])) {
903 $opost = $this->get_table('post');
904 $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";
905 $this->add('post', $post);
906 }
907
908 ///////////////////////////////////
909 // Sort CID2GID map into segments of contiguous codes
910 ///////////////////////////////////
911 ksort($codeToGlyph);
912 unset($codeToGlyph[0]);
913 //unset($codeToGlyph[65535]);
914 $rangeid = 0;
915 $range = array();
916 $prevcid = -2;
917 $prevglidx = -1;
918 // for each character
919 foreach ($codeToGlyph as $cid => $glidx) {
920 if ($cid == ($prevcid + 1) && $glidx == ($prevglidx + 1)) {
921 $range[$rangeid][] = $glidx;
922 } else {
923 // new range
924 $rangeid = $cid;
925 $range[$rangeid] = array();
926 $range[$rangeid][] = $glidx;
927 }
928 $prevcid = $cid;
929 $prevglidx = $glidx;
930 }
931
932
933
934 ///////////////////////////////////
935 // CMap table
936 ///////////////////////////////////
937 // cmap - Character to glyph mapping
938 $segCount = count($range) + 1; // + 1 Last segment has missing character 0xFFFF
939 $searchRange = 1;
940 $entrySelector = 0;
941 while ($searchRange * 2 <= $segCount ) {
942 $searchRange = $searchRange * 2;
943 $entrySelector = $entrySelector + 1;
944 }
945 $searchRange = $searchRange * 2;
946 $rangeShift = $segCount * 2 - $searchRange;
947 $length = 16 + (8*$segCount ) + ($numGlyphs+1);
948 $cmap = array(0, 3, // Index : version, number of encoding subtables
949 0, 0, // Encoding Subtable : platform (UNI=0), encoding 0
950 0, 28, // Encoding Subtable : offset (hi,lo)
951 0, 3, // Encoding Subtable : platform (UNI=0), encoding 3
952 0, 28, // Encoding Subtable : offset (hi,lo)
953 3, 1, // Encoding Subtable : platform (MS=3), encoding 1
954 0, 28, // Encoding Subtable : offset (hi,lo)
955 4, $length, 0, // Format 4 Mapping subtable: format, length, language
956 $segCount*2,
957 $searchRange,
958 $entrySelector,
959 $rangeShift);
960
961 // endCode(s)
962 foreach($range AS $start=>$subrange) {
963 $endCode = $start + (count($subrange)-1);
964 $cmap[] = $endCode; // endCode(s)
965 }
966 $cmap[] = 0xFFFF; // endCode of last Segment
967 $cmap[] = 0; // reservedPad
968
969 // startCode(s)
970 foreach($range AS $start=>$subrange) {
971 $cmap[] = $start; // startCode(s)
972 }
973 $cmap[] = 0xFFFF; // startCode of last Segment
974 // idDelta(s)
975 foreach($range AS $start=>$subrange) {
976 $idDelta = -($start-$subrange[0]);
977 $n += count($subrange);
978 $cmap[] = $idDelta; // idDelta(s)
979 }
980 $cmap[] = 1; // idDelta of last Segment
981 // idRangeOffset(s)
982 foreach($range AS $subrange) {
983 $cmap[] = 0; // idRangeOffset[segCount] Offset in bytes to glyph indexArray, or 0
984
985 }
986 $cmap[] = 0; // idRangeOffset of last Segment
987 foreach($range AS $subrange) {
988 foreach($subrange AS $glidx) {
989 $cmap[] = $glidx;
990 }
991 }
992 $cmap[] = 0; // Mapping for last character
993 $cmapstr = '';
994 foreach($cmap AS $cm) { $cmapstr .= pack("n",$cm); }
995 $this->add('cmap', $cmapstr);
996
997
998 ///////////////////////////////////
999 // glyf - Glyph data
1000 ///////////////////////////////////
1001 list($glyfOffset,$glyfLength) = $this->get_table_pos('glyf');
1002 if ($glyfLength < $this->maxStrLenRead) {
1003 $glyphData = $this->get_table('glyf');
1004 }
1005
1006 $offsets = array();
1007 $glyf = '';
1008 $pos = 0;
1009 $hmtxstr = '';
1010 $xMinT = 0;
1011 $yMinT = 0;
1012 $xMaxT = 0;
1013 $yMaxT = 0;
1014 $advanceWidthMax = 0;
1015 $minLeftSideBearing = 0;
1016 $minRightSideBearing = 0;
1017 $xMaxExtent = 0;
1018 $maxPoints = 0; // points in non-compound glyph
1019 $maxContours = 0; // contours in non-compound glyph
1020 $maxComponentPoints = 0; // points in compound glyph
1021 $maxComponentContours = 0; // contours in compound glyph
1022 $maxComponentElements = 0; // number of glyphs referenced at top level
1023 $maxComponentDepth = 0; // levels of recursion, set to 0 if font has only simple glyphs
1024 $this->glyphdata = array();
1025
1026 foreach($subsetglyphs AS $originalGlyphIdx => $uni) {
1027 // hmtx - Horizontal Metrics
1028 $hm = $this->getHMetric($orignHmetrics, $originalGlyphIdx);
1029 $hmtxstr .= $hm;
1030
1031 $offsets[] = $pos;
1032 $glyphPos = $this->glyphPos[$originalGlyphIdx];
1033 $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
1034 if ($glyfLength < $this->maxStrLenRead) {
1035 $data = substr($glyphData,$glyphPos,$glyphLen);
1036 }
1037 else {
1038 if ($glyphLen > 0) $data = $this->get_chunk($glyfOffset+$glyphPos,$glyphLen);
1039 else $data = '';
1040 }
1041
1042 if ($glyphLen > 0) {
1043 if (_RECALC_PROFILE) {
1044 $xMin = $this->unpack_short(substr($data,2,2));
1045 $yMin = $this->unpack_short(substr($data,4,2));
1046 $xMax = $this->unpack_short(substr($data,6,2));
1047 $yMax = $this->unpack_short(substr($data,8,2));
1048 $xMinT = min($xMinT,$xMin);
1049 $yMinT = min($yMinT,$yMin);
1050 $xMaxT = max($xMaxT,$xMax);
1051 $yMaxT = max($yMaxT,$yMax);
1052 $aw = $this->unpack_short(substr($hm,0,2));
1053 $lsb = $this->unpack_short(substr($hm,2,2));
1054 $advanceWidthMax = max($advanceWidthMax,$aw);
1055 $minLeftSideBearing = min($minLeftSideBearing,$lsb);
1056 $minRightSideBearing = min($minRightSideBearing,($aw - $lsb - ($xMax - $xMin)));
1057 $xMaxExtent = max($xMaxExtent,($lsb + ($xMax - $xMin)));
1058 }
1059 $up = unpack("n", substr($data,0,2));
1060 }
1061 if ($glyphLen > 2 && ($up[1] & (1 << 15)) ) { // If number of contours <= -1 i.e. composiste glyph
1062 $pos_in_glyph = 10;
1063 $flags = GF_MORE;
1064 $nComponentElements = 0;
1065 while ($flags & GF_MORE) {
1066 $nComponentElements += 1; // number of glyphs referenced at top level
1067 $up = unpack("n", substr($data,$pos_in_glyph,2));
1068 $flags = $up[1];
1069 $up = unpack("n", substr($data,$pos_in_glyph+2,2));
1070 $glyphIdx = $up[1];
1071 $this->glyphdata[$originalGlyphIdx]['compGlyphs'][] = $glyphIdx;
1072 $data = $this->_set_ushort($data, $pos_in_glyph + 2, $glyphSet[$glyphIdx]);
1073 $pos_in_glyph += 4;
1074 if ($flags & GF_WORDS) { $pos_in_glyph += 4; }
1075 else { $pos_in_glyph += 2; }
1076 if ($flags & GF_SCALE) { $pos_in_glyph += 2; }
1077 else if ($flags & GF_XYSCALE) { $pos_in_glyph += 4; }
1078 else if ($flags & GF_TWOBYTWO) { $pos_in_glyph += 8; }
1079 }
1080 $maxComponentElements = max($maxComponentElements, $nComponentElements);
1081 }
1082 // Simple Glyph
1083 else if (_RECALC_PROFILE && $glyphLen > 2 && $up[1] < (1 << 15) && $up[1] > 0) { // Number of contours > 0 simple glyph
1084 $nContours = $up[1];
1085 $this->glyphdata[$originalGlyphIdx]['nContours'] = $nContours;
1086 $maxContours = max($maxContours, $nContours);
1087
1088 // Count number of points in simple glyph
1089 $pos_in_glyph = 10 + ($nContours * 2) - 2; // Last endContourPoint
1090 $up = unpack("n", substr($data,$pos_in_glyph,2));
1091 $points = $up[1]+1;
1092 $this->glyphdata[$originalGlyphIdx]['nPoints'] = $points;
1093 $maxPoints = max($maxPoints, $points);
1094 }
1095
1096 $glyf .= $data;
1097 $pos += $glyphLen;
1098 if ($pos % 4 != 0) {
1099 $padding = 4 - ($pos % 4);
1100 $glyf .= str_repeat("\0",$padding);
1101 $pos += $padding;
1102 }
1103 }
1104
1105 if (_RECALC_PROFILE) {
1106 foreach($this->glyphdata AS $originalGlyphIdx => $val) {
1107 $maxdepth = $depth = -1;
1108 $points = 0;
1109 $contours = 0;
1110 $this->getGlyphData($originalGlyphIdx, $maxdepth, $depth, $points, $contours) ;
1111 $maxComponentDepth = max($maxComponentDepth , $maxdepth);
1112 $maxComponentPoints = max($maxComponentPoints , $points);
1113 $maxComponentContours = max($maxComponentContours , $contours);
1114 }
1115 }
1116
1117
1118 $offsets[] = $pos;
1119 $this->add('glyf', $glyf);
1120
1121 ///////////////////////////////////
1122 // hmtx - Horizontal Metrics
1123 ///////////////////////////////////
1124 $this->add('hmtx', $hmtxstr);
1125
1126
1127 ///////////////////////////////////
1128 // loca - Index to location
1129 ///////////////////////////////////
1130 $locastr = '';
1131 if ((($pos + 1) >> 1) > 0xFFFF) {
1132 $indexToLocFormat = 1; // long format
1133 foreach($offsets AS $offset) { $locastr .= pack("N",$offset); }
1134 }
1135 else {
1136 $indexToLocFormat = 0; // short format
1137 foreach($offsets AS $offset) { $locastr .= pack("n",($offset/2)); }
1138 }
1139 $this->add('loca', $locastr);
1140
1141 ///////////////////////////////////
1142 // head - Font header
1143 ///////////////////////////////////
1144 $head = $this->get_table('head');
1145 $head = $this->_set_ushort($head, 50, $indexToLocFormat);
1146 if (_RECALC_PROFILE) {
1147 $head = $this->_set_short($head, 36, $xMinT); // for all glyph bounding boxes
1148 $head = $this->_set_short($head, 38, $yMinT); // for all glyph bounding boxes
1149 $head = $this->_set_short($head, 40, $xMaxT); // for all glyph bounding boxes
1150 $head = $this->_set_short($head, 42, $yMaxT); // for all glyph bounding boxes
1151 $head[17] = chr($head[17] & ~(1 << 4)); // Unset Bit 4 (as hdmx/LTSH tables not included)
1152 }
1153 $this->add('head', $head);
1154
1155
1156 ///////////////////////////////////
1157 // hhea - Horizontal Header
1158 ///////////////////////////////////
1159 $hhea = $this->get_table('hhea');
1160 $hhea = $this->_set_ushort($hhea, 34, $numberOfHMetrics);
1161 if (_RECALC_PROFILE) {
1162 $hhea = $this->_set_ushort($hhea, 10, $advanceWidthMax);
1163 $hhea = $this->_set_short($hhea, 12, $minLeftSideBearing);
1164 $hhea = $this->_set_short($hhea, 14, $minRightSideBearing);
1165 $hhea = $this->_set_short($hhea, 16, $xMaxExtent);
1166 }
1167 $this->add('hhea', $hhea);
1168
1169 ///////////////////////////////////
1170 // maxp - Maximum Profile
1171 ///////////////////////////////////
1172 $maxp = $this->get_table('maxp');
1173 $maxp = $this->_set_ushort($maxp, 4, $numGlyphs);
1174 if (_RECALC_PROFILE) {
1175 $maxp = $this->_set_ushort($maxp, 6, $maxPoints); // points in non-compound glyph
1176 $maxp = $this->_set_ushort($maxp, 8, $maxContours); // contours in non-compound glyph
1177 $maxp = $this->_set_ushort($maxp, 10, $maxComponentPoints); // points in compound glyph
1178 $maxp = $this->_set_ushort($maxp, 12, $maxComponentContours); // contours in compound glyph
1179 $maxp = $this->_set_ushort($maxp, 28, $maxComponentElements); // number of glyphs referenced at top level
1180 $maxp = $this->_set_ushort($maxp, 30, $maxComponentDepth); // levels of recursion, set to 0 if font has only simple glyphs
1181 }
1182 $this->add('maxp', $maxp);
1183
1184
1185 ///////////////////////////////////
1186 // OS/2 - OS/2
1187 ///////////////////////////////////
1188 if (isset($this->tables['OS/2'])) {
1189 $os2_offset = $this->seek_table("OS/2");
1190 if (_RECALC_PROFILE) {
1191 $fsSelection = $this->get_ushort($os2_offset+62);
1192 $fsSelection = ($fsSelection & ~(1 << 6)); // 2-byte bit field containing information concerning the nature of the font patterns
1193 // bit#0 = Italic; bit#5=Bold
1194 // Match name table's font subfamily string
1195 // Clear bit#6 used for 'Regular' and optional
1196 }
1197
1198 // NB Currently this method never subsets characters above BMP
1199 // Could set nonBMP bit according to $this->maxUni
1200 $nonBMP = $this->get_ushort($os2_offset+46);
1201 $nonBMP = ($nonBMP & ~(1 << 9)); // Unset Bit 57 (indicates non-BMP) - for interactive forms
1202
1203 $os2 = $this->get_table('OS/2');
1204 if (_RECALC_PROFILE) {
1205 $os2 = $this->_set_ushort($os2, 62, $fsSelection);
1206 $os2 = $this->_set_ushort($os2, 66, $fsLastCharIndex);
1207 $os2 = $this->_set_ushort($os2, 42, 0x0000); // ulCharRange (ulUnicodeRange) bits 24-31 | 16-23
1208 $os2 = $this->_set_ushort($os2, 44, 0x0000); // ulCharRange (Unicode ranges) bits 8-15 | 0-7
1209 $os2 = $this->_set_ushort($os2, 46, $nonBMP); // ulCharRange (Unicode ranges) bits 56-63 | 48-55
1210 $os2 = $this->_set_ushort($os2, 48, 0x0000); // ulCharRange (Unicode ranges) bits 40-47 | 32-39
1211 $os2 = $this->_set_ushort($os2, 50, 0x0000); // ulCharRange (Unicode ranges) bits 88-95 | 80-87
1212 $os2 = $this->_set_ushort($os2, 52, 0x0000); // ulCharRange (Unicode ranges) bits 72-79 | 64-71
1213 $os2 = $this->_set_ushort($os2, 54, 0x0000); // ulCharRange (Unicode ranges) bits 120-127 | 112-119
1214 $os2 = $this->_set_ushort($os2, 56, 0x0000); // ulCharRange (Unicode ranges) bits 104-111 | 96-103
1215 }
1216 $os2 = $this->_set_ushort($os2, 46, $nonBMP); // Unset Bit 57 (indicates non-BMP) - for interactive forms
1217
1218 $this->add('OS/2', $os2 );
1219 }
1220
1221 fclose($this->fh);
1222 // Put the TTF file together
1223 $stm = '';
1224 $this->endTTFile($stm);
1225 //file_put_contents('testfont.ttf', $stm); exit;
1226 return $stm ;
1227 }
1228
1229//================================================================================
1230
1231 // Also does SMP
1232 function makeSubsetSIP($file, &$subset, $TTCfontID=0, $debug=false) {
1233 $this->fh = fopen($file ,'rb') or die('Can\'t open file ' . $file);
1234 $this->filename = $file;
1235 $this->_pos = 0;
1236 $this->unAGlyphs = false; // mPDF 5.4.05
1237 $this->charWidths = '';
1238 $this->glyphPos = array();
1239 $this->charToGlyph = array();
1240 $this->tables = array();
1241 $this->otables = array();
1242 $this->ascent = 0;
1243 $this->descent = 0;
1244 $this->numTTCFonts = 0;
1245 $this->TTCFonts = array();
1246 $this->skip(4);
1247 if ($TTCfontID > 0) {
1248 $this->version = $version = $this->read_ulong(); // TTC Header version now
1249 if (!in_array($version, array(0x00010000,0x00020000)))
1250 die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
1251 $this->numTTCFonts = $this->read_ulong();
1252 for ($i=1; $i<=$this->numTTCFonts; $i++) {
1253 $this->TTCFonts[$i]['offset'] = $this->read_ulong();
1254 }
1255 $this->seek($this->TTCFonts[$TTCfontID]['offset']);
1256 $this->version = $version = $this->read_ulong(); // TTFont version again now
1257 }
1258 $this->readTableDirectory($debug);
1259
1260
1261
1262 ///////////////////////////////////
1263 // head - Font header table
1264 ///////////////////////////////////
1265 $this->seek_table("head");
1266 $this->skip(50);
1267 $indexToLocFormat = $this->read_ushort();
1268 $glyphDataFormat = $this->read_ushort();
1269
1270 ///////////////////////////////////
1271 // hhea - Horizontal header table
1272 ///////////////////////////////////
1273 $this->seek_table("hhea");
1274 $this->skip(32);
1275 $metricDataFormat = $this->read_ushort();
1276 $orignHmetrics = $numberOfHMetrics = $this->read_ushort();
1277
1278 ///////////////////////////////////
1279 // maxp - Maximum profile table
1280 ///////////////////////////////////
1281 $this->seek_table("maxp");
1282 $this->skip(4);
1283 $numGlyphs = $this->read_ushort();
1284
1285
1286 ///////////////////////////////////
1287 // cmap - Character to glyph index mapping table
1288 ///////////////////////////////////
1289
1290 $cmap_offset = $this->seek_table("cmap");
1291 $this->skip(2);
1292 $cmapTableCount = $this->read_ushort();
1293 $unicode_cmap_offset = 0;
1294 for ($i=0;$i<$cmapTableCount;$i++) {
1295 $platformID = $this->read_ushort();
1296 $encodingID = $this->read_ushort();
1297 $offset = $this->read_ulong();
1298 $save_pos = $this->_pos;
1299 if (($platformID == 3 && $encodingID == 10) || $platformID == 0) { // Microsoft, Unicode Format 12 table HKCS
1300 $format = $this->get_ushort($cmap_offset + $offset);
1301 if ($format == 12) {
1302 $unicode_cmap_offset = $cmap_offset + $offset;
1303 break;
1304 }
1305 }
1306 $this->seek($save_pos );
1307 }
1308
1309 if (!$unicode_cmap_offset)
1310 die('Font does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 0, any encoding, format 4)');
1311 // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above
1312 if ($format == 12) {
1313 $this->maxUniChar = 0;
1314 $this->seek($unicode_cmap_offset + 4);
1315 $length = $this->read_ulong();
1316 $limit = $unicode_cmap_offset + $length;
1317 $this->skip(4);
1318
1319 $nGroups = $this->read_ulong();
1320
1321 $glyphToChar = array();
1322 $charToGlyph = array();
1323 for($i=0; $i<$nGroups ; $i++) {
1324 $startCharCode = $this->read_ulong();
1325 $endCharCode = $this->read_ulong();
1326 $startGlyphCode = $this->read_ulong();
1327 $offset = 0;
1328 for ($unichar=$startCharCode;$unichar<=$endCharCode;$unichar++) {
1329 $glyph = $startGlyphCode + $offset ;
1330 $offset++;
1331 $charToGlyph[$unichar] = $glyph;
1332 if ($unichar < 196608) { $this->maxUniChar = max($unichar,$this->maxUniChar); }
1333 $glyphToChar[$glyph][] = $unichar;
1334 }
1335 }
1336 }
1337 else
1338 die('Font does not have cmap for Unicode (format 12)');
1339
1340
1341 ///////////////////////////////////
1342 // hmtx - Horizontal metrics table
1343 ///////////////////////////////////
1344 $scale = 1; // not used here
1345 $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale);
1346
1347 ///////////////////////////////////
1348 // loca - Index to location
1349 ///////////////////////////////////
1350 $this->getLOCA($indexToLocFormat, $numGlyphs);
1351
1352 ///////////////////////////////////////////////////////////////////
1353
1354 $glyphMap = array(0=>0);
1355 $glyphSet = array(0=>0);
1356 $codeToGlyph = array();
1357 // Set a substitute if ASCII characters do not have glyphs
1358 if (isset($charToGlyph[0x3F])) { $subs = $charToGlyph[0x3F]; } // Question mark
1359 else { $subs = $charToGlyph[32]; }
1360 foreach($subset AS $code) {
1361 if (isset($charToGlyph[$code]))
1362 $originalGlyphIdx = $charToGlyph[$code];
1363 else if ($code<128) {
1364 $originalGlyphIdx = $subs;
1365 }
1366 else { $originalGlyphIdx = 0; }
1367 if (!isset($glyphSet[$originalGlyphIdx])) {
1368 $glyphSet[$originalGlyphIdx] = count($glyphMap);
1369 $glyphMap[] = $originalGlyphIdx;
1370 }
1371 $codeToGlyph[$code] = $glyphSet[$originalGlyphIdx];
1372 }
1373
1374 list($start,$dummy) = $this->get_table_pos('glyf');
1375
1376 $n = 0;
1377 while ($n < count($glyphMap)) {
1378 $originalGlyphIdx = $glyphMap[$n];
1379 $glyphPos = $this->glyphPos[$originalGlyphIdx];
1380 $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
1381 $n += 1;
1382 if (!$glyphLen) continue;
1383 $this->seek($start + $glyphPos);
1384 $numberOfContours = $this->read_short();
1385 if ($numberOfContours < 0) {
1386 $this->skip(8);
1387 $flags = GF_MORE;
1388 while ($flags & GF_MORE) {
1389 $flags = $this->read_ushort();
1390 $glyphIdx = $this->read_ushort();
1391 if (!isset($glyphSet[$glyphIdx])) {
1392 $glyphSet[$glyphIdx] = count($glyphMap);
1393 $glyphMap[] = $glyphIdx;
1394 }
1395 if ($flags & GF_WORDS)
1396 $this->skip(4);
1397 else
1398 $this->skip(2);
1399 if ($flags & GF_SCALE)
1400 $this->skip(2);
1401 else if ($flags & GF_XYSCALE)
1402 $this->skip(4);
1403 else if ($flags & GF_TWOBYTWO)
1404 $this->skip(8);
1405 }
1406 }
1407 }
1408
1409 $numGlyphs = $n = count($glyphMap);
1410 $numberOfHMetrics = $n;
1411
1412 ///////////////////////////////////
1413 // name
1414 ///////////////////////////////////
1415 // Needs to have a name entry in 3,0 (e.g. symbol) - original font will be 3,1 (i.e. Unicode)
1416 $name = $this->get_table('name');
1417 $name_offset = $this->seek_table("name");
1418 $format = $this->read_ushort();
1419 $numRecords = $this->read_ushort();
1420 $string_data_offset = $name_offset + $this->read_ushort();
1421 for ($i=0;$i<$numRecords; $i++) {
1422 $platformId = $this->read_ushort();
1423 $encodingId = $this->read_ushort();
1424 if ($platformId == 3 && $encodingId == 1) {
1425 $pos = 6 + ($i * 12) + 2;
1426 $name = $this->_set_ushort($name, $pos, 0x00); // Change encoding to 3,0 rather than 3,1
1427 }
1428 $this->skip(8);
1429 }
1430 $this->add('name', $name);
1431
1432 ///////////////////////////////////
1433 // OS/2
1434 ///////////////////////////////////
1435 if (isset($this->tables['OS/2'])) {
1436 $os2 = $this->get_table('OS/2');
1437 $os2 = $this->_set_ushort($os2, 42, 0x00); // ulCharRange (Unicode ranges)
1438 $os2 = $this->_set_ushort($os2, 44, 0x00); // ulCharRange (Unicode ranges)
1439 $os2 = $this->_set_ushort($os2, 46, 0x00); // ulCharRange (Unicode ranges)
1440 $os2 = $this->_set_ushort($os2, 48, 0x00); // ulCharRange (Unicode ranges)
1441
1442 $os2 = $this->_set_ushort($os2, 50, 0x00); // ulCharRange (Unicode ranges)
1443 $os2 = $this->_set_ushort($os2, 52, 0x00); // ulCharRange (Unicode ranges)
1444 $os2 = $this->_set_ushort($os2, 54, 0x00); // ulCharRange (Unicode ranges)
1445 $os2 = $this->_set_ushort($os2, 56, 0x00); // ulCharRange (Unicode ranges)
1446 // Set Symbol character only in ulCodePageRange
1447 $os2 = $this->_set_ushort($os2, 78, 0x8000); // ulCodePageRange = Bit #31 Symbol **** 78 = Bit 16-31
1448 $os2 = $this->_set_ushort($os2, 80, 0x0000); // ulCodePageRange = Bit #31 Symbol **** 80 = Bit 0-15
1449 $os2 = $this->_set_ushort($os2, 82, 0x0000); // ulCodePageRange = Bit #32- Symbol **** 82 = Bits 48-63
1450 $os2 = $this->_set_ushort($os2, 84, 0x0000); // ulCodePageRange = Bit #32- Symbol **** 84 = Bits 32-47
1451
1452 $os2 = $this->_set_ushort($os2, 64, 0x01); // FirstCharIndex
1453 $os2 = $this->_set_ushort($os2, 66, count($subset)); // LastCharIndex
1454 // Set PANOSE first bit to 5 for Symbol
1455 $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));
1456 $this->add('OS/2', $os2 );
1457 }
1458
1459
1460 ///////////////////////////////////
1461 //tables copied from the original
1462 ///////////////////////////////////
1463 $tags = array ('cvt ', 'fpgm', 'prep', 'gasp');
1464 foreach($tags AS $tag) { // 1.02
1465 if (isset($this->tables[$tag])) { $this->add($tag, $this->get_table($tag)); }
1466 }
1467
1468 ///////////////////////////////////
1469 // post - PostScript
1470 ///////////////////////////////////
1471 if (isset($this->tables['post'])) {
1472 $opost = $this->get_table('post');
1473 $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";
1474 }
1475 $this->add('post', $post);
1476
1477 ///////////////////////////////////
1478 // hhea - Horizontal Header
1479 ///////////////////////////////////
1480 $hhea = $this->get_table('hhea');
1481 $hhea = $this->_set_ushort($hhea, 34, $numberOfHMetrics);
1482 $this->add('hhea', $hhea);
1483
1484 ///////////////////////////////////
1485 // maxp - Maximum Profile
1486 ///////////////////////////////////
1487 $maxp = $this->get_table('maxp');
1488 $maxp = $this->_set_ushort($maxp, 4, $numGlyphs);
1489 $this->add('maxp', $maxp);
1490
1491
1492 ///////////////////////////////////
1493 // CMap table Formats [1,0,]6 and [3,0,]4
1494 ///////////////////////////////////
1495 ///////////////////////////////////
1496 // Sort CID2GID map into segments of contiguous codes
1497 ///////////////////////////////////
1498 $rangeid = 0;
1499 $range = array();
1500 $prevcid = -2;
1501 $prevglidx = -1;
1502 // for each character
1503 foreach ($subset as $cid => $code) {
1504 $glidx = $codeToGlyph[$code];
1505 if ($cid == ($prevcid + 1) && $glidx == ($prevglidx + 1)) {
1506 $range[$rangeid][] = $glidx;
1507 } else {
1508 // new range
1509 $rangeid = $cid;
1510 $range[$rangeid] = array();
1511 $range[$rangeid][] = $glidx;
1512 }
1513 $prevcid = $cid;
1514 $prevglidx = $glidx;
1515 }
1516 // cmap - Character to glyph mapping
1517 $segCount = count($range) + 1; // + 1 Last segment has missing character 0xFFFF
1518 $searchRange = 1;
1519 $entrySelector = 0;
1520 while ($searchRange * 2 <= $segCount ) {
1521 $searchRange = $searchRange * 2;
1522 $entrySelector = $entrySelector + 1;
1523 }
1524 $searchRange = $searchRange * 2;
1525 $rangeShift = $segCount * 2 - $searchRange;
1526 $length = 16 + (8*$segCount ) + ($numGlyphs+1);
1527 $cmap = array(
1528 4, $length, 0, // Format 4 Mapping subtable: format, length, language
1529 $segCount*2,
1530 $searchRange,
1531 $entrySelector,
1532 $rangeShift);
1533
1534 // endCode(s)
1535 foreach($range AS $start=>$subrange) {
1536 $endCode = $start + (count($subrange)-1);
1537 $cmap[] = $endCode; // endCode(s)
1538 }
1539 $cmap[] = 0xFFFF; // endCode of last Segment
1540 $cmap[] = 0; // reservedPad
1541
1542 // startCode(s)
1543 foreach($range AS $start=>$subrange) {
1544 $cmap[] = $start; // startCode(s)
1545 }
1546 $cmap[] = 0xFFFF; // startCode of last Segment
1547 // idDelta(s)
1548 foreach($range AS $start=>$subrange) {
1549 $idDelta = -($start-$subrange[0]);
1550 $n += count($subrange);
1551 $cmap[] = $idDelta; // idDelta(s)
1552 }
1553 $cmap[] = 1; // idDelta of last Segment
1554 // idRangeOffset(s)
1555 foreach($range AS $subrange) {
1556 $cmap[] = 0; // idRangeOffset[segCount] Offset in bytes to glyph indexArray, or 0
1557
1558 }
1559 $cmap[] = 0; // idRangeOffset of last Segment
1560 foreach($range AS $subrange) {
1561 foreach($subrange AS $glidx) {
1562 $cmap[] = $glidx;
1563 }
1564 }
1565 $cmap[] = 0; // Mapping for last character
1566 $cmapstr4 = '';
1567 foreach($cmap AS $cm) { $cmapstr4 .= pack("n",$cm); }
1568
1569 ///////////////////////////////////
1570 // cmap - Character to glyph mapping
1571 ///////////////////////////////////
1572 $entryCount = count($subset);
1573 $length = 10 + $entryCount * 2;
1574
1575 $off = 20 + $length;
1576 $hoff = $off >> 16;
1577 $loff = $off & 0xFFFF;
1578
1579 $cmap = array(0, 2, // Index : version, number of subtables
1580 1, 0, // Subtable : platform, encoding
1581 0, 20, // offset (hi,lo)
1582 3, 0, // Subtable : platform, encoding
1583 $hoff, $loff, // offset (hi,lo)
1584 6, $length, // Format 6 Mapping table: format, length
1585 0, 1, // language, First char code
1586 $entryCount
1587 );
1588 $cmapstr = '';
1589 foreach($subset AS $code) { $cmap[] = $codeToGlyph[$code]; }
1590 foreach($cmap AS $cm) { $cmapstr .= pack("n",$cm); }
1591 $cmapstr .= $cmapstr4;
1592 $this->add('cmap', $cmapstr);
1593
1594 ///////////////////////////////////
1595 // hmtx - Horizontal Metrics
1596 ///////////////////////////////////
1597 $hmtxstr = '';
1598 for($n=0;$n<$numGlyphs;$n++) {
1599 $originalGlyphIdx = $glyphMap[$n];
1600 $hm = $this->getHMetric($orignHmetrics, $originalGlyphIdx);
1601 $hmtxstr .= $hm;
1602 }
1603 $this->add('hmtx', $hmtxstr);
1604
1605 ///////////////////////////////////
1606 // glyf - Glyph data
1607 ///////////////////////////////////
1608 list($glyfOffset,$glyfLength) = $this->get_table_pos('glyf');
1609 if ($glyfLength < $this->maxStrLenRead) {
1610 $glyphData = $this->get_table('glyf');
1611 }
1612
1613 $offsets = array();
1614 $glyf = '';
1615 $pos = 0;
1616 for ($n=0;$n<$numGlyphs;$n++) {
1617 $offsets[] = $pos;
1618 $originalGlyphIdx = $glyphMap[$n];
1619 $glyphPos = $this->glyphPos[$originalGlyphIdx];
1620 $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
1621 if ($glyfLength < $this->maxStrLenRead) {
1622 $data = substr($glyphData,$glyphPos,$glyphLen);
1623 }
1624 else {
1625 if ($glyphLen > 0) $data = $this->get_chunk($glyfOffset+$glyphPos,$glyphLen);
1626 else $data = '';
1627 }
1628 if ($glyphLen > 0) $up = unpack("n", substr($data,0,2));
1629 if ($glyphLen > 2 && ($up[1] & (1 << 15)) ) {
1630 $pos_in_glyph = 10;
1631 $flags = GF_MORE;
1632 while ($flags & GF_MORE) {
1633 $up = unpack("n", substr($data,$pos_in_glyph,2));
1634 $flags = $up[1];
1635 $up = unpack("n", substr($data,$pos_in_glyph+2,2));
1636 $glyphIdx = $up[1];
1637 $data = $this->_set_ushort($data, $pos_in_glyph + 2, $glyphSet[$glyphIdx]);
1638 $pos_in_glyph += 4;
1639 if ($flags & GF_WORDS) { $pos_in_glyph += 4; }
1640 else { $pos_in_glyph += 2; }
1641 if ($flags & GF_SCALE) { $pos_in_glyph += 2; }
1642 else if ($flags & GF_XYSCALE) { $pos_in_glyph += 4; }
1643 else if ($flags & GF_TWOBYTWO) { $pos_in_glyph += 8; }
1644 }
1645 }
1646 $glyf .= $data;
1647 $pos += $glyphLen;
1648 if ($pos % 4 != 0) {
1649 $padding = 4 - ($pos % 4);
1650 $glyf .= str_repeat("\0",$padding);
1651 $pos += $padding;
1652 }
1653 }
1654 $offsets[] = $pos;
1655 $this->add('glyf', $glyf);
1656
1657 ///////////////////////////////////
1658 // loca - Index to location
1659 ///////////////////////////////////
1660 $locastr = '';
1661 if ((($pos + 1) >> 1) > 0xFFFF) {
1662 $indexToLocFormat = 1; // long format
1663 foreach($offsets AS $offset) { $locastr .= pack("N",$offset); }
1664 }
1665 else {
1666 $indexToLocFormat = 0; // short format
1667 foreach($offsets AS $offset) { $locastr .= pack("n",($offset/2)); }
1668 }
1669 $this->add('loca', $locastr);
1670
1671 ///////////////////////////////////
1672 // head - Font header
1673 ///////////////////////////////////
1674 $head = $this->get_table('head');
1675 $head = $this->_set_ushort($head, 50, $indexToLocFormat);
1676 $this->add('head', $head);
1677
1678 fclose($this->fh);
1679
1680 // Put the TTF file together
1681 $stm = '';
1682 $this->endTTFile($stm);
1683 //file_put_contents('testfont.ttf', $stm); exit;
1684 return $stm ;
1685 }
1686
1687 //////////////////////////////////////////////////////////////////////////////////
1688 // Recursively get composite glyph data
1689 function getGlyphData($originalGlyphIdx, &$maxdepth, &$depth, &$points, &$contours) {
1690 $depth++;
1691 $maxdepth = max($maxdepth, $depth);
1692 if (count($this->glyphdata[$originalGlyphIdx]['compGlyphs'])) {
1693 foreach($this->glyphdata[$originalGlyphIdx]['compGlyphs'] AS $glyphIdx) {
1694 $this->getGlyphData($glyphIdx, $maxdepth, $depth, $points, $contours);
1695 }
1696 }
1697 else if (($this->glyphdata[$originalGlyphIdx]['nContours'] > 0) && $depth > 0) { // simple
1698 $contours += $this->glyphdata[$originalGlyphIdx]['nContours'];
1699 $points += $this->glyphdata[$originalGlyphIdx]['nPoints'];
1700 }
1701 $depth--;
1702 }
1703
1704
1705 //////////////////////////////////////////////////////////////////////////////////
1706 // Recursively get composite glyphs
1707 function getGlyphs($originalGlyphIdx, &$start, &$glyphSet, &$subsetglyphs) {
1708 $glyphPos = $this->glyphPos[$originalGlyphIdx];
1709 $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
1710 if (!$glyphLen) {
1711 return;
1712 }
1713 $this->seek($start + $glyphPos);
1714 $numberOfContours = $this->read_short();
1715 if ($numberOfContours < 0) {
1716 $this->skip(8);
1717 $flags = GF_MORE;
1718 while ($flags & GF_MORE) {
1719 $flags = $this->read_ushort();
1720 $glyphIdx = $this->read_ushort();
1721 if (!isset($glyphSet[$glyphIdx])) {
1722 $glyphSet[$glyphIdx] = count($subsetglyphs); // old glyphID to new glyphID
1723 $subsetglyphs[$glyphIdx] = true;
1724 }
1725 $savepos = ftell($this->fh);
1726 $this->getGlyphs($glyphIdx, $start, $glyphSet, $subsetglyphs);
1727 $this->seek($savepos);
1728 if ($flags & GF_WORDS)
1729 $this->skip(4);
1730 else
1731 $this->skip(2);
1732 if ($flags & GF_SCALE)
1733 $this->skip(2);
1734 else if ($flags & GF_XYSCALE)
1735 $this->skip(4);
1736 else if ($flags & GF_TWOBYTWO)
1737 $this->skip(8);
1738 }
1739 }
1740 }
1741
1742 //////////////////////////////////////////////////////////////////////////////////
1743
1744 function getHMTX($numberOfHMetrics, $numGlyphs, &$glyphToChar, $scale) {
1745 $start = $this->seek_table("hmtx");
1746 $aw = 0;
1747 $this->charWidths = str_pad('', 256*256*2, "\x00");
1748 if ($this->maxUniChar > 65536) { $this->charWidths .= str_pad('', 256*256*2, "\x00"); } // Plane 1 SMP
1749 if ($this->maxUniChar > 131072) { $this->charWidths .= str_pad('', 256*256*2, "\x00"); } // Plane 2 SMP
1750 $nCharWidths = 0;
1751 if (($numberOfHMetrics*4) < $this->maxStrLenRead) {
1752 $data = $this->get_chunk($start,($numberOfHMetrics*4));
1753 $arr = unpack("n*", $data);
1754 }
1755 else { $this->seek($start); }
1756 for( $glyph=0; $glyph<$numberOfHMetrics; $glyph++) {
1757 if (($numberOfHMetrics*4) < $this->maxStrLenRead) {
1758 $aw = $arr[($glyph*2)+1];
1759 }
1760 else {
1761 $aw = $this->read_ushort();
1762 $lsb = $this->read_ushort();
1763 }
1764 if (isset($glyphToChar[$glyph]) || $glyph == 0) {
1765
1766 if ($aw >= (1 << 15) ) { $aw = 0; } // 1.03 Some (arabic) fonts have -ve values for width
1767 // although should be unsigned value - comes out as e.g. 65108 (intended -50)
1768 if ($glyph == 0) {
1769 $this->defaultWidth = $scale*$aw;
1770 continue;
1771 }
1772 foreach($glyphToChar[$glyph] AS $char) {
1773 //$this->charWidths[$char] = intval(round($scale*$aw));
1774 if ($char != 0 && $char != 65535) {
1775 $w = intval(round($scale*$aw));
1776 if ($w == 0) { $w = 65535; }
1777 if ($char < 196608) {
1778 $this->charWidths[$char*2] = chr($w >> 8);
1779 $this->charWidths[$char*2 + 1] = chr($w & 0xFF);
1780 $nCharWidths++;
1781 }
1782 }
1783 }
1784 }
1785 }
1786 $data = $this->get_chunk(($start+$numberOfHMetrics*4),($numGlyphs*2));
1787 $arr = unpack("n*", $data);
1788 $diff = $numGlyphs-$numberOfHMetrics;
1789 $w = intval(round($scale*$aw));
1790 if ($w == 0) { $w = 65535; }
1791 for( $pos=0; $pos<$diff; $pos++) {
1792 $glyph = $pos + $numberOfHMetrics;
1793 if (isset($glyphToChar[$glyph])) {
1794 foreach($glyphToChar[$glyph] AS $char) {
1795 if ($char != 0 && $char != 65535) {
1796 if ($char < 196608) {
1797 $this->charWidths[$char*2] = chr($w >> 8);
1798 $this->charWidths[$char*2 + 1] = chr($w & 0xFF);
1799 $nCharWidths++;
1800 }
1801 }
1802 }
1803 }
1804 }
1805 // NB 65535 is a set width of 0
1806 // First bytes define number of chars in font
1807 $this->charWidths[0] = chr($nCharWidths >> 8);
1808 $this->charWidths[1] = chr($nCharWidths & 0xFF);
1809 }
1810
1811 function getHMetric($numberOfHMetrics, $gid) {
1812 $start = $this->seek_table("hmtx");
1813 if ($gid < $numberOfHMetrics) {
1814 $this->seek($start+($gid*4));
1815 $hm = fread($this->fh,4);
1816 }
1817 else {
1818 $this->seek($start+(($numberOfHMetrics-1)*4));
1819 $hm = fread($this->fh,2);
1820 $this->seek($start+($numberOfHMetrics*2)+($gid*2));
1821 $hm .= fread($this->fh,2);
1822 }
1823 return $hm;
1824 }
1825
1826 function getLOCA($indexToLocFormat, $numGlyphs) {
1827 $start = $this->seek_table('loca');
1828 $this->glyphPos = array();
1829 if ($indexToLocFormat == 0) {
1830 $data = $this->get_chunk($start,($numGlyphs*2)+2);
1831 $arr = unpack("n*", $data);
1832 for ($n=0; $n<=$numGlyphs; $n++) {
1833 $this->glyphPos[] = ($arr[$n+1] * 2);
1834 }
1835 }
1836 else if ($indexToLocFormat == 1) {
1837 $data = $this->get_chunk($start,($numGlyphs*4)+4);
1838 $arr = unpack("N*", $data);
1839 for ($n=0; $n<=$numGlyphs; $n++) {
1840 $this->glyphPos[] = ($arr[$n+1]);
1841 }
1842 }
1843 else
1844 die('Unknown location table format '.$indexToLocFormat);
1845 }
1846
1847
1848 // CMAP Format 4
1849 function getCMAP4($unicode_cmap_offset, &$glyphToChar, &$charToGlyph ) {
1850 $this->maxUniChar = 0;
1851 $this->seek($unicode_cmap_offset + 2);
1852 $length = $this->read_ushort();
1853 $limit = $unicode_cmap_offset + $length;
1854 $this->skip(2);
1855
1856 $segCount = $this->read_ushort() / 2;
1857 $this->skip(6);
1858 $endCount = array();
1859 for($i=0; $i<$segCount; $i++) { $endCount[] = $this->read_ushort(); }
1860 $this->skip(2);
1861 $startCount = array();
1862 for($i=0; $i<$segCount; $i++) { $startCount[] = $this->read_ushort(); }
1863 $idDelta = array();
1864 for($i=0; $i<$segCount; $i++) { $idDelta[] = $this->read_short(); } // ???? was unsigned short
1865 $idRangeOffset_start = $this->_pos;
1866 $idRangeOffset = array();
1867 for($i=0; $i<$segCount; $i++) { $idRangeOffset[] = $this->read_ushort(); }
1868
1869 for ($n=0;$n<$segCount;$n++) {
1870 $endpoint = ($endCount[$n] + 1);
1871 for ($unichar=$startCount[$n];$unichar<$endpoint;$unichar++) {
1872 if ($idRangeOffset[$n] == 0)
1873 $glyph = ($unichar + $idDelta[$n]) & 0xFFFF;
1874 else {
1875 $offset = ($unichar - $startCount[$n]) * 2 + $idRangeOffset[$n];
1876 $offset = $idRangeOffset_start + 2 * $n + $offset;
1877 if ($offset >= $limit)
1878 $glyph = 0;
1879 else {
1880 $glyph = $this->get_ushort($offset);
1881 if ($glyph != 0)
1882 $glyph = ($glyph + $idDelta[$n]) & 0xFFFF;
1883 }
1884 }
1885 $charToGlyph[$unichar] = $glyph;
1886 if ($unichar < 196608) { $this->maxUniChar = max($unichar,$this->maxUniChar); }
1887 $glyphToChar[$glyph][] = $unichar;
1888 }
1889 }
1890
1891 // mPDF 5.4.05
1892 if ($this->unAGlyphs) {
1893 if (isset($this->tables['post'])) {
1894 $this->seek_table("post");
1895 $formata = $this->read_ushort();
1896 $formatb = $this->read_ushort();
1897 // Only works on Format 2.0
1898 if ($formata != 2 || $formatb != 0) { die("Cannot set unAGlyphs for this font (".$file."). POST table must be in Format 2."); }
1899 $this->skip(28);
1900 $nGlyfs = $this->read_ushort();
1901 $glyphNameIndex = array();
1902 for ($i=0; $i<$nGlyfs; $i++) {
1903 $glyphNameIndex[($this->read_ushort())] = $i;
1904 }
1905
1906 $opost = $this->get_table('post');
1907 $ptr = 34+($nGlyfs*2);
1908 for ($i=0; $i<$nGlyfs; $i++) {
1909 $len = ord(substr($opost,$ptr,1));
1910 $ptr++;
1911 $name = substr($opost,$ptr,$len);
1912 $gid = $glyphNameIndex[$i+258];
1913 // Select uni0600.xxx(x) - uni06FF.xxx(x)
1914 if (preg_match('/^uni(06[0-9a-f]{2})\.(fina|medi|init|fin|med|ini)$/i',$name,$m)) {
1915 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
1916 $uni = hexdec($m[1]);
1917 $form = strtoupper(substr($m[2],0,1));
1918 // Assign new PUA Unicode between F500 - F7FF
1919 $bit = $uni & 0xFF;
1920 if ($form == 'I') { $bit += 0xF600; }
1921 else if ($form == 'M') { $bit += 0xF700; }
1922 else { $bit += 0xF500; }
1923 // ADD TO CMAP
1924 $glyphToChar[$gid][] = $bit;
1925 $charToGlyph[$bit] = $gid;
1926 }
1927 }
1928 // LAM with ALEF ligatures (Mandatory ligatures)
1929 else if (preg_match('/^uni064406(22|23|25|27)(\.fina|\.fin){0,1}$/i',$name,$m)) {
1930 if ($m[1]=='22') {
1931 if ($m[2]) { $uni = hexdec('FEF6'); } else { $uni = hexdec('FEF5'); }
1932 }
1933 else if ($m[1]=='23') {
1934 if ($m[2]) { $uni = hexdec('FEF8'); } else { $uni = hexdec('FEF7'); }
1935 }
1936 else if ($m[1]=='25') {
1937 if ($m[2]) { $uni = hexdec('FEFA'); } else { $uni = hexdec('FEF9'); }
1938 }
1939 else if ($m[1]=='27') {
1940 if ($m[2]) { $uni = hexdec('FEFC'); } else { $uni = hexdec('FEFB'); }
1941 }
1942 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
1943 // ADD TO CMAP
1944 $glyphToChar[$gid][] = $uni;
1945 $charToGlyph[$uni] = $gid;
1946 }
1947 }
1948 $ptr += $len;
1949 }
1950 }
1951 }
1952
1953 }
1954
1955
1956 // Put the TTF file together
1957 function endTTFile(&$stm) {
1958 $stm = '';
1959 $numTables = count($this->otables);
1960 $searchRange = 1;
1961 $entrySelector = 0;
1962 while ($searchRange * 2 <= $numTables) {
1963 $searchRange = $searchRange * 2;
1964 $entrySelector = $entrySelector + 1;
1965 }
1966 $searchRange = $searchRange * 16;
1967 $rangeShift = $numTables * 16 - $searchRange;
1968
1969 // Header
1970 if (_TTF_MAC_HEADER) {
1971 $stm .= (pack("Nnnnn", 0x74727565, $numTables, $searchRange, $entrySelector, $rangeShift)); // Mac
1972 }
1973 else {
1974 $stm .= (pack("Nnnnn", 0x00010000 , $numTables, $searchRange, $entrySelector, $rangeShift)); // Windows
1975 }
1976
1977 // Table directory
1978 $tables = $this->otables;
1979 ksort ($tables);
1980 $offset = 12 + $numTables * 16;
1981 foreach ($tables AS $tag=>$data) {
1982 if ($tag == 'head') { $head_start = $offset; }
1983 $stm .= $tag;
1984 $checksum = $this->calcChecksum($data);
1985 $stm .= pack("nn", $checksum[0],$checksum[1]);
1986 $stm .= pack("NN", $offset, strlen($data));
1987 $paddedLength = (strlen($data)+3)&~3;
1988 $offset = $offset + $paddedLength;
1989 }
1990
1991 // Table data
1992 foreach ($tables AS $tag=>$data) {
1993 $data .= "\0\0\0";
1994 $stm .= substr($data,0,(strlen($data)&~3));
1995 }
1996
1997 $checksum = $this->calcChecksum($stm);
1998 $checksum = $this->sub32(array(0xB1B0,0xAFBA), $checksum);
1999 $chk = pack("nn", $checksum[0],$checksum[1]);
2000 $stm = $this->splice($stm,($head_start + 8),$chk);
2001 return $stm ;
2002 }
2003
2004
2005 function repackageTTF($file, $TTCfontID=0, $debug=false, $unAGlyphs=false) { // mPDF 5.4.05
2006 $this->unAGlyphs = $unAGlyphs; // mPDF 5.4.05
2007 $this->filename = $file;
2008 $this->fh = fopen($file ,'rb') or die('Can\'t open file ' . $file);
2009 $this->_pos = 0;
2010 $this->charWidths = '';
2011 $this->glyphPos = array();
2012 $this->charToGlyph = array();
2013 $this->tables = array();
2014 $this->otables = array();
2015 $this->ascent = 0;
2016 $this->descent = 0;
2017 $this->numTTCFonts = 0;
2018 $this->TTCFonts = array();
2019 $this->skip(4);
2020 $this->maxUni = 0;
2021 if ($TTCfontID > 0) {
2022 $this->version = $version = $this->read_ulong(); // TTC Header version now
2023 if (!in_array($version, array(0x00010000,0x00020000)))
2024 die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
2025 $this->numTTCFonts = $this->read_ulong();
2026 for ($i=1; $i<=$this->numTTCFonts; $i++) {
2027 $this->TTCFonts[$i]['offset'] = $this->read_ulong();
2028 }
2029 $this->seek($this->TTCFonts[$TTCfontID]['offset']);
2030 $this->version = $version = $this->read_ulong(); // TTFont version again now
2031 }
2032 $this->readTableDirectory($debug);
2033 $tags = array ('OS/2', 'cmap', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'name', 'post', 'cvt ', 'fpgm', 'gasp', 'prep');
2034/*
2035Tables which require glyphIndex
2036hdmx
2037kern
2038LTSH
2039
2040Tables which do NOT require glyphIndex
2041VDMX
2042
2043GDEF
2044GPOS
2045GSUB
2046JSTF
2047
2048DSIG
2049PCLT - not recommended
2050*/
2051
2052 foreach($tags AS $tag) {
2053 if (isset($this->tables[$tag])) { $this->add($tag, $this->get_table($tag)); }
2054 }
2055 fclose($this->fh);
2056 $stm = '';
2057 $this->endTTFile($stm);
2058 return $stm ;
2059 }
2060
2061
2062}
2063
2064
2065?> \ 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
index 3f2cccef..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/ttfontsuni_analysis.php
+++ /dev/null
@@ -1,463 +0,0 @@
1<?php
2
3require_once(_MPDF_PATH.'classes/ttfontsuni.php');
4
5class TTFontFile_Analysis EXTENDS TTFontFile {
6
7 // Used to get font information from files in directory
8 function extractCoreInfo($file, $TTCfontID=0) {
9 $this->filename = $file;
10 $this->fh = fopen($file,'rb');
11 if (!$this->fh) { return ('ERROR - Can\'t open file ' . $file); }
12 $this->_pos = 0;
13 $this->charWidths = '';
14 $this->glyphPos = array();
15 $this->charToGlyph = array();
16 $this->tables = array();
17 $this->otables = array();
18 $this->ascent = 0;
19 $this->descent = 0;
20 $this->numTTCFonts = 0;
21 $this->TTCFonts = array();
22 $this->version = $version = $this->read_ulong();
23 $this->panose = array(); // mPDF 5.0
24 if ($version==0x4F54544F)
25 return("ERROR - NOT ADDED as Postscript outlines are not supported - " . $file);
26 if ($version==0x74746366) {
27 if ($TTCfontID > 0) {
28 $this->version = $version = $this->read_ulong(); // TTC Header version now
29 if (!in_array($version, array(0x00010000,0x00020000)))
30 return("ERROR - NOT ADDED as Error parsing TrueType Collection: version=".$version." - " . $file);
31 }
32 else return("ERROR - Error parsing TrueType Collection - " . $file);
33 $this->numTTCFonts = $this->read_ulong();
34 for ($i=1; $i<=$this->numTTCFonts; $i++) {
35 $this->TTCFonts[$i]['offset'] = $this->read_ulong();
36 }
37 $this->seek($this->TTCFonts[$TTCfontID]['offset']);
38 $this->version = $version = $this->read_ulong(); // TTFont version again now
39 $this->readTableDirectory(false);
40 }
41 else {
42 if (!in_array($version, array(0x00010000,0x74727565)))
43 return("ERROR - NOT ADDED as Not a TrueType font: version=".$version." - " . $file);
44 $this->readTableDirectory(false);
45 }
46
47/* Included for testing...
48 $cmap_offset = $this->seek_table("cmap");
49 $this->skip(2);
50 $cmapTableCount = $this->read_ushort();
51 $unicode_cmap_offset = 0;
52 for ($i=0;$i<$cmapTableCount;$i++) {
53 $x[$i]['platformId'] = $this->read_ushort();
54 $x[$i]['encodingId'] = $this->read_ushort();
55 $x[$i]['offset'] = $this->read_ulong();
56 $save_pos = $this->_pos;
57 $x[$i]['format'] = $this->get_ushort($cmap_offset + $x[$i]['offset'] );
58 $this->seek($save_pos );
59 }
60 print_r($x); exit;
61*/
62 ///////////////////////////////////
63 // name - Naming table
64 ///////////////////////////////////
65
66/* Test purposes - displays table of names
67 $name_offset = $this->seek_table("name");
68 $format = $this->read_ushort();
69 if ($format != 0 && $format != 1) // mPDF 5.3.73
70 die("Unknown name table format ".$format);
71 $numRecords = $this->read_ushort();
72 $string_data_offset = $name_offset + $this->read_ushort();
73 for ($i=0;$i<$numRecords; $i++) {
74 $x[$i]['platformId'] = $this->read_ushort();
75 $x[$i]['encodingId'] = $this->read_ushort();
76 $x[$i]['languageId'] = $this->read_ushort();
77 $x[$i]['nameId'] = $this->read_ushort();
78 $x[$i]['length'] = $this->read_ushort();
79 $x[$i]['offset'] = $this->read_ushort();
80
81 $N = '';
82 if ($x[$i]['platformId'] == 1 && $x[$i]['encodingId'] == 0 && $x[$i]['languageId'] == 0) { // Roman
83 $opos = $this->_pos;
84 $N = $this->get_chunk($string_data_offset + $x[$i]['offset'] , $x[$i]['length'] );
85 $this->_pos = $opos;
86 $this->seek($opos);
87 }
88 else { // Unicode
89 $opos = $this->_pos;
90 $this->seek($string_data_offset + $x[$i]['offset'] );
91 $length = $x[$i]['length'] ;
92 if ($length % 2 != 0)
93 $length -= 1;
94 // die("PostScript name is UTF-16BE string of odd length");
95 $length /= 2;
96 $N = '';
97 while ($length > 0) {
98 $char = $this->read_ushort();
99 $N .= (chr($char));
100 $length -= 1;
101 }
102 $this->_pos = $opos;
103 $this->seek($opos);
104 }
105 $x[$i]['names'][$nameId] = $N;
106 }
107 print_r($x); exit;
108*/
109
110 $name_offset = $this->seek_table("name");
111 $format = $this->read_ushort();
112 if ($format != 0 && $format != 1) // mPDF 5.3.73
113 return("ERROR - NOT ADDED as Unknown name table format ".$format." - " . $file);
114 $numRecords = $this->read_ushort();
115 $string_data_offset = $name_offset + $this->read_ushort();
116 $names = array(1=>'',2=>'',3=>'',4=>'',6=>'');
117 $K = array_keys($names);
118 $nameCount = count($names);
119 for ($i=0;$i<$numRecords; $i++) {
120 $platformId = $this->read_ushort();
121 $encodingId = $this->read_ushort();
122 $languageId = $this->read_ushort();
123 $nameId = $this->read_ushort();
124 $length = $this->read_ushort();
125 $offset = $this->read_ushort();
126 if (!in_array($nameId,$K)) continue;
127 $N = '';
128 if ($platformId == 3 && $encodingId == 1 && $languageId == 0x409) { // Microsoft, Unicode, US English, PS Name
129 $opos = $this->_pos;
130 $this->seek($string_data_offset + $offset);
131 if ($length % 2 != 0)
132 $length += 1;
133 $length /= 2;
134 $N = '';
135 while ($length > 0) {
136 $char = $this->read_ushort();
137 $N .= (chr($char));
138 $length -= 1;
139 }
140 $this->_pos = $opos;
141 $this->seek($opos);
142 }
143 else if ($platformId == 1 && $encodingId == 0 && $languageId == 0) { // Macintosh, Roman, English, PS Name
144 $opos = $this->_pos;
145 $N = $this->get_chunk($string_data_offset + $offset, $length);
146 $this->_pos = $opos;
147 $this->seek($opos);
148 }
149 if ($N && $names[$nameId]=='') {
150 $names[$nameId] = $N;
151 $nameCount -= 1;
152 if ($nameCount==0) break;
153 }
154 }
155 if ($names[6])
156 $psName = preg_replace('/ /','-',$names[6]);
157 else if ($names[4])
158 $psName = preg_replace('/ /','-',$names[4]);
159 else if ($names[1])
160 $psName = preg_replace('/ /','-',$names[1]);
161 else
162 $psName = '';
163 if (!$names[1] && !$psName)
164 return("ERROR - NOT ADDED as Could not find valid font name - " . $file);
165 $this->name = $psName;
166 if ($names[1]) { $this->familyName = $names[1]; } else { $this->familyName = $psName; }
167 if ($names[2]) { $this->styleName = $names[2]; } else { $this->styleName = 'Regular'; }
168
169 ///////////////////////////////////
170 // head - Font header table
171 ///////////////////////////////////
172 $this->seek_table("head");
173 $ver_maj = $this->read_ushort();
174 $ver_min = $this->read_ushort();
175 if ($ver_maj != 1)
176 return('ERROR - NOT ADDED as Unknown head table version '. $ver_maj .'.'. $ver_min." - " . $file);
177 $this->fontRevision = $this->read_ushort() . $this->read_ushort();
178 $this->skip(4);
179 $magic = $this->read_ulong();
180 if ($magic != 0x5F0F3CF5)
181 return('ERROR - NOT ADDED as Invalid head table magic ' .$magic." - " . $file);
182 $this->skip(2);
183 $this->unitsPerEm = $unitsPerEm = $this->read_ushort();
184 $scale = 1000 / $unitsPerEm;
185 $this->skip(24);
186 $macStyle = $this->read_short();
187 $this->skip(4);
188 $indexLocFormat = $this->read_short();
189
190 ///////////////////////////////////
191 // OS/2 - OS/2 and Windows metrics table
192 ///////////////////////////////////
193 $sFamily = '';
194 $panose = '';
195 $fsSelection = '';
196 if (isset($this->tables["OS/2"])) {
197 $this->seek_table("OS/2");
198 $this->skip(30);
199 $sF = $this->read_short();
200 $sFamily = ($sF >> 8);
201 $this->_pos += 10; //PANOSE = 10 byte length
202 $panose = fread($this->fh,10);
203 $this->panose = array();
204 for ($p=0;$p<strlen($panose);$p++) { $this->panose[] = ord($panose[$p]); }
205 $this->skip(20);
206 $fsSelection = $this->read_short();
207 }
208
209 ///////////////////////////////////
210 // post - PostScript table
211 ///////////////////////////////////
212 $this->seek_table("post");
213 $this->skip(4);
214 $this->italicAngle = $this->read_short() + $this->read_ushort() / 65536.0;
215 $this->skip(4);
216 $isFixedPitch = $this->read_ulong();
217
218
219
220 ///////////////////////////////////
221 // cmap - Character to glyph index mapping table
222 ///////////////////////////////////
223 $cmap_offset = $this->seek_table("cmap");
224 $this->skip(2);
225 $cmapTableCount = $this->read_ushort();
226 $unicode_cmap_offset = 0;
227 for ($i=0;$i<$cmapTableCount;$i++) {
228 $platformID = $this->read_ushort();
229 $encodingID = $this->read_ushort();
230 $offset = $this->read_ulong();
231 $save_pos = $this->_pos;
232 if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode
233 $format = $this->get_ushort($cmap_offset + $offset);
234 if ($format == 4) {
235 if (!$unicode_cmap_offset) $unicode_cmap_offset = $cmap_offset + $offset;
236 }
237 }
238 else if ((($platformID == 3 && $encodingID == 10) || $platformID == 0)) { // Microsoft, Unicode Format 12 table HKCS
239 $format = $this->get_ushort($cmap_offset + $offset);
240 if ($format == 12) {
241 $unicode_cmap_offset = $cmap_offset + $offset;
242 break;
243 }
244 }
245 $this->seek($save_pos );
246 }
247
248 if (!$unicode_cmap_offset)
249 return('ERROR - Font ('.$this->filename .') NOT ADDED as it is not Unicode encoded, and cannot be used by mPDF');
250
251 $rtl = false;
252 $indic = false;
253 $cjk = false;
254 $sip = false;
255 $smp = false;
256 $pua = false;
257 $puaag = false;
258 $glyphToChar = array();
259 $unAGlyphs = '';
260 // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above
261 if ($format == 12) {
262 $this->seek($unicode_cmap_offset + 4);
263 $length = $this->read_ulong();
264 $limit = $unicode_cmap_offset + $length;
265 $this->skip(4);
266 $nGroups = $this->read_ulong();
267 for($i=0; $i<$nGroups ; $i++) {
268 $startCharCode = $this->read_ulong();
269 $endCharCode = $this->read_ulong();
270 $startGlyphCode = $this->read_ulong();
271 if (($endCharCode > 0x20000 && $endCharCode < 0x2A6DF) || ($endCharCode > 0x2F800 && $endCharCode < 0x2FA1F)) {
272 $sip = true;
273 }
274 if ($endCharCode > 0x10000 && $endCharCode < 0x1FFFF) {
275 $smp = true;
276 }
277 if (($endCharCode > 0x0590 && $endCharCode < 0x077F) || ($endCharCode > 0xFE70 && $endCharCode < 0xFEFF) || ($endCharCode > 0xFB50 && $endCharCode < 0xFDFF)) {
278 $rtl = true;
279 }
280 if ($endCharCode > 0x0900 && $endCharCode < 0x0DFF) {
281 $indic = true;
282 }
283 if ($endCharCode > 0xE000 && $endCharCode < 0xF8FF) {
284 $pua = true;
285 if ($endCharCode > 0xF500 && $endCharCode < 0xF7FF) {
286 $puaag = true;
287 }
288 }
289 if (($endCharCode > 0x2E80 && $endCharCode < 0x4DC0) || ($endCharCode > 0x4E00 && $endCharCode < 0xA4CF) || ($endCharCode > 0xAC00 && $endCharCode < 0xD7AF) || ($endCharCode > 0xF900 && $endCharCode < 0xFAFF) || ($endCharCode > 0xFE30 && $endCharCode < 0xFE4F)) {
290 $cjk = true;
291 }
292
293 $offset = 0;
294 // Get each glyphToChar - only point if going to analyse un-mapped Arabic Glyphs
295 if (isset($this->tables['post'])) {
296 for ($unichar=$startCharCode;$unichar<=$endCharCode;$unichar++) {
297 $glyph = $startGlyphCode + $offset ;
298 $offset++;
299 $glyphToChar[$glyph][] = $unichar;
300 }
301 }
302
303
304 }
305 }
306
307 else { // Format 4 CMap
308 $this->seek($unicode_cmap_offset + 2);
309 $length = $this->read_ushort();
310 $limit = $unicode_cmap_offset + $length;
311 $this->skip(2);
312
313 $segCount = $this->read_ushort() / 2;
314 $this->skip(6);
315 $endCount = array();
316 for($i=0; $i<$segCount; $i++) { $endCount[] = $this->read_ushort(); }
317 $this->skip(2);
318 $startCount = array();
319 for($i=0; $i<$segCount; $i++) { $startCount[] = $this->read_ushort(); }
320 $idDelta = array();
321 for($i=0; $i<$segCount; $i++) { $idDelta[] = $this->read_short(); }
322 $idRangeOffset_start = $this->_pos;
323 $idRangeOffset = array();
324 for($i=0; $i<$segCount; $i++) { $idRangeOffset[] = $this->read_ushort(); }
325
326 for ($n=0;$n<$segCount;$n++) {
327 if (($endCount[$n] > 0x0590 && $endCount[$n] < 0x077F) || ($endCount[$n] > 0xFE70 && $endCount[$n] < 0xFEFF) || ($endCount[$n] > 0xFB50 && $endCount[$n] < 0xFDFF)) {
328 $rtl = true;
329 }
330 if ($endCount[$n] > 0x0900 && $endCount[$n] < 0x0DFF) {
331 $indic = true;
332 }
333 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)) {
334 $cjk = true;
335 }
336 if ($endCount[$n] > 0xE000 && $endCount[$n] < 0xF8FF) {
337 $pua = true;
338 if ($endCount[$n] > 0xF500 && $endCount[$n] < 0xF7FF) {
339 $puaag = true;
340 }
341 }
342 // Get each glyphToChar - only point if going to analyse un-mapped Arabic Glyphs
343 if (isset($this->tables['post'])) {
344 $endpoint = ($endCount[$n] + 1);
345 for ($unichar=$startCount[$n];$unichar<$endpoint;$unichar++) {
346 if ($idRangeOffset[$n] == 0)
347 $glyph = ($unichar + $idDelta[$n]) & 0xFFFF;
348 else {
349 $offset = ($unichar - $startCount[$n]) * 2 + $idRangeOffset[$n];
350 $offset = $idRangeOffset_start + 2 * $n + $offset;
351 if ($offset >= $limit)
352 $glyph = 0;
353 else {
354 $glyph = $this->get_ushort($offset);
355 if ($glyph != 0)
356 $glyph = ($glyph + $idDelta[$n]) & 0xFFFF;
357 }
358 }
359 $glyphToChar[$glyph][] = $unichar;
360 }
361 }
362
363 }
364 }
365 // 'POST' table for un-mapped arabic glyphs
366 if (isset($this->tables['post'])) {
367 $this->seek_table("post");
368 // Only works on Format 2.0
369 $formata = $this->read_ushort();
370 $formatb = $this->read_ushort();
371 if ($formata == 2 && $formatb == 0) {
372 $this->skip(28);
373 $nGlyfs = $this->read_ushort();
374 $glyphNameIndex = array();
375 for ($i=0; $i<$nGlyfs; $i++) {
376 $glyphNameIndex[($this->read_ushort())] = $i;
377 }
378
379 $opost = $this->get_table('post');
380 $ptr = 34+($nGlyfs*2);
381 for ($i=0; $i<$nGlyfs; $i++) {
382 $len = ord(substr($opost,$ptr,1));
383 $ptr++;
384 $name = substr($opost,$ptr,$len);
385 $gid = $glyphNameIndex[$i+258];
386 // Select uni0600.xxx(x) - uni06FF.xxx(x)
387 if (preg_match('/^uni(06[0-9a-f]{2})\.(fina|medi|init|fin|med|ini)$/i',$name,$m)) {
388 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
389 $uni = hexdec($m[1]);
390 $form = strtoupper(substr($m[2],0,1));
391 // Assign new PUA Unicode between F500 - F7FF
392 $bit = $uni & 0xFF;
393 if ($form == 'I') { $bit += 0xF600; }
394 else if ($form == 'M') { $bit += 0xF700; }
395 else { $bit += 0xF500; }
396 $unAGlyphs .= $gid;
397 $name = 'uni'.strtoupper($m[1]).'.'.strtolower($m[2]);
398 $unAGlyphs .= ' : '.$name;
399 $unihexstr = $m[1];
400 $unAGlyphs .= ' : '.$unihexstr;
401 $unAGlyphs .= ' : '.$uni;
402 $unAGlyphs .= ' : '.$form;
403 // if already set in PUA private use area E000-F8FF
404 if (isset($glyphToChar[$gid]) && $glyphToChar[$gid][0]>57343 && $glyphToChar[$gid][0]<63489) {
405 $unAGlyphs .= ' : '.$glyphToChar[$gid][0].' {'.dechex($glyphToChar[$gid][0]).'}';
406 }
407 //else $unAGlyphs .= ':';
408 $unAGlyphs .= ' : '.strtoupper(dechex($bit));
409 $unAGlyphs .= '<br />';
410 }
411 }
412 $ptr += $len;
413 }
414 if ($unAGlyphs) {
415 $unAGlyphs = 'GID:Name:Unicode base Hex:Dec:Form:PUA Unicode<br />'.$unAGlyphs ;
416 }
417 }
418 }
419
420
421
422 $bold = false;
423 $italic = false;
424 $ftype = '';
425 if ($macStyle & (1 << 0)) { $bold = true; } // bit 0 bold
426 else if ($fsSelection & (1 << 5)) { $bold = true; } // 5 BOLD Characters are emboldened
427
428 if ($macStyle & (1 << 1)) { $italic = true; } // bit 1 italic
429 else if ($fsSelection & (1 << 0)) { $italic = true; } // 0 ITALIC Font contains Italic characters, otherwise they are upright
430 else if ($this->italicAngle <> 0) { $italic = true; }
431
432 if ($isFixedPitch ) { $ftype = 'mono'; }
433 else if ($sFamily >0 && $sFamily <8) { $ftype = 'serif'; }
434 else if ($sFamily ==8) { $ftype = 'sans'; }
435 else if ($sFamily ==10) { $ftype = 'cursive'; }
436 // Use PANOSE
437 if ($panose) {
438 $bFamilyType=ord($panose[0]);
439 if ($bFamilyType==2) {
440 $bSerifStyle=ord($panose[1]);
441 if (!$ftype) {
442 if ($bSerifStyle>1 && $bSerifStyle<11) { $ftype = 'serif'; }
443 else if ($bSerifStyle>10) { $ftype = 'sans'; }
444 }
445 $bProportion=ord($panose[3]);
446 if ($bProportion==9 || $bProportion==1) { $ftype = 'mono'; } // ==1 i.e. No Fit needed for OCR-a and -b
447 }
448 else if ($bFamilyType==3) {
449 $ftype = 'cursive';
450 }
451 }
452
453 fclose($this->fh);
454 return array($this->familyName, $bold, $italic, $ftype, $TTCfontID, $rtl, $indic, $cjk, $sip, $smp, $puaag, $pua, $unAGlyphs);
455 }
456
457
458
459
460}
461
462
463?> \ 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
index 2efef00b..00000000
--- a/inc/3rdparty/libraries/mpdf/classes/wmf.php
+++ /dev/null
@@ -1,236 +0,0 @@
1<?php
2
3class wmf {
4
5var $mpdf = null;
6var $gdiObjectArray;
7
8function wmf(&$mpdf) {
9 $this->mpdf = $mpdf;
10}
11
12
13function _getWMFimage($data) {
14 $k = _MPDFK;
15
16 $this->gdiObjectArray = array();
17 $a=unpack('stest',"\1\0");
18 if ($a['test']!=1)
19 return array(0, 'Error parsing WMF image - Big-endian architecture not supported');
20 // check for Aldus placeable metafile header
21 $key = unpack('Lmagic', substr($data, 0, 4));
22 $p = 18; // WMF header
23 if ($key['magic'] == (int)0x9AC6CDD7) { $p +=22; } // Aldus header
24 // define some state variables
25 $wo=null; // window origin
26 $we=null; // window extent
27 $polyFillMode = 0;
28 $nullPen = false;
29 $nullBrush = false;
30 $endRecord = false;
31 $wmfdata = '';
32 while ($p < strlen($data) && !$endRecord) {
33 $recordInfo = unpack('Lsize/Sfunc', substr($data, $p, 6)); $p += 6;
34 // size of record given in WORDs (= 2 bytes)
35 $size = $recordInfo['size'];
36 // func is number of GDI function
37 $func = $recordInfo['func'];
38 if ($size > 3) {
39 $parms = substr($data, $p, 2*($size-3)); $p += 2*($size-3);
40 }
41 switch ($func) {
42 case 0x020b: // SetWindowOrg
43 // do not allow window origin to be changed
44 // after drawing has begun
45 if (!$wmfdata)
46 $wo = array_reverse(unpack('s2', $parms));
47 break;
48 case 0x020c: // SetWindowExt
49 // do not allow window extent to be changed
50 // after drawing has begun
51 if (!$wmfdata)
52 $we = array_reverse(unpack('s2', $parms));
53 break;
54 case 0x02fc: // CreateBrushIndirect
55 $brush = unpack('sstyle/Cr/Cg/Cb/Ca/Shatch', $parms);
56 $brush['type'] = 'B';
57 $this->_AddGDIObject($brush);
58 break;
59 case 0x02fa: // CreatePenIndirect
60 $pen = unpack('Sstyle/swidth/sdummy/Cr/Cg/Cb/Ca', $parms);
61 // convert width from twips to user unit
62 $pen['width'] /= (20 * $k);
63 $pen['type'] = 'P';
64 $this->_AddGDIObject($pen);
65 break;
66
67 // MUST create other GDI objects even if we don't handle them
68 case 0x06fe: // CreateBitmap
69 case 0x02fd: // CreateBitmapIndirect
70 case 0x00f8: // CreateBrush
71 case 0x02fb: // CreateFontIndirect
72 case 0x00f7: // CreatePalette
73 case 0x01f9: // CreatePatternBrush
74 case 0x06ff: // CreateRegion
75 case 0x0142: // DibCreatePatternBrush
76 $dummyObject = array('type'=>'D');
77 $this->_AddGDIObject($dummyObject);
78 break;
79 case 0x0106: // SetPolyFillMode
80 $polyFillMode = unpack('smode', $parms);
81 $polyFillMode = $polyFillMode['mode'];
82 break;
83 case 0x01f0: // DeleteObject
84 $idx = unpack('Sidx', $parms);
85 $idx = $idx['idx'];
86 $this->_DeleteGDIObject($idx);
87 break;
88 case 0x012d: // SelectObject
89 $idx = unpack('Sidx', $parms);
90 $idx = $idx['idx'];
91 $obj = $this->_GetGDIObject($idx);
92 switch ($obj['type']) {
93 case 'B':
94 $nullBrush = false;
95 if ($obj['style'] == 1) { $nullBrush = true; }
96 else {
97 $wmfdata .= $this->mpdf->SetFColor($this->mpdf->ConvertColor('rgb('.$obj['r'].','.$obj['g'].','.$obj['b'].')'), true)."\n";
98 }
99 break;
100 case 'P':
101 $nullPen = false;
102 $dashArray = array();
103 // dash parameters are custom
104 switch ($obj['style']) {
105 case 0: // PS_SOLID
106 break;
107 case 1: // PS_DASH
108 $dashArray = array(3,1);
109 break;
110 case 2: // PS_DOT
111 $dashArray = array(0.5,0.5);
112 break;
113 case 3: // PS_DASHDOT
114 $dashArray = array(2,1,0.5,1);
115 break;
116 case 4: // PS_DASHDOTDOT
117 $dashArray = array(2,1,0.5,1,0.5,1);
118 break;
119 case 5: // PS_NULL
120 $nullPen = true;
121 break;
122 }
123 if (!$nullPen) {
124 $wmfdata .= $this->mpdf->SetDColor($this->mpdf->ConvertColor('rgb('.$obj['r'].','.$obj['g'].','.$obj['b'].')'), true)."\n";
125 $wmfdata .= sprintf("%.3F w\n",$obj['width']*$k);
126 }
127 if (!empty($dashArray)) {
128 $s = '[';
129 for ($i=0; $i<count($dashArray);$i++) {
130 $s .= $dashArray[$i] * $k;
131 if ($i != count($dashArray)-1) { $s .= ' '; }
132 }
133 $s .= '] 0 d';
134 $wmfdata .= $s."\n";
135 }
136 break;
137 }
138 break;
139 case 0x0325: // Polyline
140 case 0x0324: // Polygon
141 $coords = unpack('s'.($size-3), $parms);
142 $numpoints = $coords[1];
143 for ($i = $numpoints; $i > 0; $i--) {
144 $px = $coords[2*$i];
145 $py = $coords[2*$i+1];
146
147 if ($i < $numpoints) { $wmfdata .= $this->_LineTo($px, $py); }
148 else { $wmfdata .= $this->_MoveTo($px, $py); }
149 }
150 if ($func == 0x0325) { $op = 's'; }
151 else if ($func == 0x0324) {
152 if ($nullPen) {
153 if ($nullBrush) { $op = 'n'; } // no op
154 else { $op = 'f'; } // fill
155 }
156 else {
157 if ($nullBrush) { $op = 's'; } // stroke
158 else { $op = 'b'; } // stroke and fill
159 }
160 if ($polyFillMode==1 && ($op=='b' || $op=='f')) { $op .= '*'; } // use even-odd fill rule
161 }
162 $wmfdata .= $op."\n";
163 break;
164 case 0x0538: // PolyPolygon
165 $coords = unpack('s'.($size-3), $parms);
166 $numpolygons = $coords[1];
167 $adjustment = $numpolygons;
168 for ($j = 1; $j <= $numpolygons; $j++) {
169 $numpoints = $coords[$j + 1];
170 for ($i = $numpoints; $i > 0; $i--) {
171 $px = $coords[2*$i + $adjustment];
172 $py = $coords[2*$i+1 + $adjustment];
173 if ($i == $numpoints) { $wmfdata .= $this->_MoveTo($px, $py); }
174 else { $wmfdata .= $this->_LineTo($px, $py); }
175 }
176 $adjustment += $numpoints * 2;
177 }
178
179 if ($nullPen) {
180 if ($nullBrush) { $op = 'n'; } // no op
181 else { $op = 'f'; } // fill
182 }
183 else {
184 if ($nullBrush) { $op = 's'; } // stroke
185 else { $op = 'b'; } // stroke and fill
186 }
187 if ($polyFillMode==1 && ($op=='b' || $op=='f')) { $op .= '*'; } // use even-odd fill rule
188 $wmfdata .= $op."\n";
189 break;
190 case 0x0000:
191 $endRecord = true;
192 break;
193 }
194 }
195
196
197 return array(1,$wmfdata,$wo,$we);
198}
199
200
201function _MoveTo($x, $y) {
202 return "$x $y m\n";
203}
204
205// a line must have been started using _MoveTo() first
206function _LineTo($x, $y) {
207 return "$x $y l\n";
208}
209
210function _AddGDIObject($obj) {
211 // find next available slot
212 $idx = 0;
213 if (!empty($this->gdiObjectArray)) {
214 $empty = false;
215 $i = 0;
216 while (!$empty) {
217 $empty = !isset($this->gdiObjectArray[$i]);
218 $i++;
219 }
220 $idx = $i-1;
221 }
222 $this->gdiObjectArray[$idx] = $obj;
223}
224
225function _GetGDIObject($idx) {
226 return $this->gdiObjectArray[$idx];
227}
228
229function _DeleteGDIObject($idx) {
230 unset($this->gdiObjectArray[$idx]);
231}
232
233
234}
235
236?> \ 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
index 85897cf5..00000000
--- a/inc/3rdparty/libraries/mpdf/compress.php
+++ /dev/null
@@ -1,172 +0,0 @@
1<?php
2
3$excl = array( 'HTML-CSS', 'DIRECTW', 'TABLES', 'LISTS', 'IMAGES-CORE',
4'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');
5
6
7 // *DIRECTW* = Write, WriteText, WriteCell, Text, Shaded_box, AutosizeText
8 // IMAGES-CORE = [PNG, GIF, and JPG] NB background-images and watermark images
9
10 // 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'
11
12// Text is marked in mpdf_source.php with e.g. :
13/*-- TABLES-ADVANCED-BORDERS --*/
14/*-- END TABLES-ADVANCED-BORDERS --*/
15 // *TABLES-ADVANCED-BORDERS*
16
17
18if (!isset($_POST['generate']) || $_POST['generate']!='generate') {
19
20
21if (!file_exists('mpdf_source.php')) {
22 die("ERROR - Could not find mpdf_source.php file in current directory. Please rename mpdf.php as mpdf_source.php");
23}
24
25
26
27
28echo '<html>
29<head>
30<script language=javascript>
31checked=false;
32function checkedAll (frm1) {
33 var aa= document.getElementById("frm1");
34 if (checked == false)
35 {
36 checked = true
37 }
38 else
39 {
40 checked = false
41 }
42 for (var i =0; i < aa.elements.length; i++)
43 {
44 aa.elements[i].checked = checked;
45 }
46 }
47</script>
48</head>
49<body>
50<p><span style="color:red; font-weight: bold;">WARNING</span>: This utility will OVERWRITE mpdf.php file in the current directory.</p>
51<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>
52<div><b>Notes</b>
53<ul>
54<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>
55<li>DIRECTW includes the functions to Write directly to the PDF file e.g. Write, WriteText, WriteCell, Text, Shaded_box, AutosizeText</li>
56<li>You must include either HTML-CSS or DIRECTW</li>
57<li>JPG, PNG and JPG images are supported with IMAGES-CORE</li>
58<li>For WMF Images, you must include both IMAGES-CORE and IMAGES-WMF</li>
59<li>IMAGES-CORE are required for BACKGROUNDS (IMAGES) or WATERMARKS to work</li>
60</ul>
61</div>
62<input type="checkbox" name="checkall" onclick="checkedAll(frm1);"> <i>Select/Unselect All</i><br /><br />
63
64<form id="frm1" action="compress.php" method="POST">
65';
66foreach($excl AS $k=>$ex) {
67 echo '<input type="checkbox" value="1" name="inc['.$ex.']"';
68 if ($k==0 || ($k > 1 && $k < 5)) {
69 echo ' checked="checked"';
70 }
71 echo ' /> '.$ex.'<br />';
72}
73
74echo '<br />
75<input type="submit" name="generate" value="generate" />
76</form>
77</body>
78</html>';
79exit;
80}
81
82$inc = $_POST['inc'];
83if (is_array($inc) && count($inc)>0 ) {
84 foreach($inc AS $i=>$v) {
85 $key = array_search($i, $excl);
86 unset($excl[$key]);
87 }
88}
89
90if (!defined('PHP_VERSION_ID')) {
91 $version = explode('.', PHP_VERSION);
92 define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2]));
93}
94if (PHP_VERSION_ID < 50300) { $mqr = @get_magic_quotes_runtime(); }
95 else { $mqr=0; }
96if ($mqr) { set_magic_quotes_runtime(0); }
97
98$l = file('mpdf_source.php');
99if (!count($l)) { die("ERROR - Could not find mpdf_source.php file in current directory"); }
100$exclflags = array();
101$x = '';
102
103 // 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'
104if ($excl[0]=='HTML-CSS') {
105 $excl[] = 'TABLES';
106 $excl[] = 'LISTS';
107 $excl[] = 'TABLES-ADVANCED-BORDERS';
108 $excl[] = 'HTMLHEADERS-FOOTERS';
109 $excl[] = 'FORMS';
110 $excl[] = 'BACKGROUNDS';
111 $excl[] = 'CSS-FLOAT';
112 $excl[] = 'CSS-IMAGE-FLOAT';
113 $excl[] = 'CSS-POSITION';
114 $excl[] = 'CSS-PAGE';
115 $excl[] = 'BORDER-RADIUS';
116}
117$excl = array_unique($excl);
118
119foreach($l AS $k=>$ln) {
120 $exclude = false;
121 // *XXXXX*
122 preg_match_all("/\/\/ \*([A-Za-z\-]+)\*/", $ln, $m);
123 foreach($m[1] AS $mm) {
124 if (in_array($mm, $excl)) {
125 $exclude = true;
126 }
127 }
128 /*-- XXXXX --*/
129 preg_match_all("/\/\*-- ([A-Za-z\-]+) --\*\//", $ln, $m);
130 foreach($m[1] AS $mm) {
131 if (in_array($mm, $excl)) {
132 $exclflags[$mm] = true;
133 }
134 $exclude = true;
135 }
136 $exclflags = array_unique($exclflags);
137 /*-- END XXXX --*/
138 preg_match_all("/\/\*-- END ([A-Za-z\-]+) --\*\//", $ln, $m);
139 foreach($m[1] AS $mm) {
140 if (in_array($mm, $excl)) {
141 unset($exclflags[$mm]);
142 }
143 $exclude = true;
144 }
145 if (count($exclflags)==0 && !$exclude) {
146 $x .= $ln;
147 }
148}
149// mPDF 5.0
150if (function_exists('file_put_contents')) {
151 $check = file_put_contents('mpdf.php', $x);
152}
153else {
154 $f=fopen('mpdf.php', 'w');
155 $check = fwrite($f, $x);
156 fclose($f);
157}
158if (!$check) { die("ERROR - Could not write to mpdf.php file. Are permissions correctly set?"); }
159echo '<p><b>mPDF file generated successfully!</b></p>';
160echo '<div>mPDF file size '.number_format((strlen($x)/1024)).' kB</div>';
161
162unset($l);
163unset($x);
164
165include('mpdf.php');
166$mpdf = new mPDF();
167
168echo '<div>Memory usage on loading mPDF class '.number_format((memory_get_usage(true)/(1024*1024)),2).' MB</div>';
169
170exit;
171
172?> \ 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
index 2a81a6ac..00000000
--- a/inc/3rdparty/libraries/mpdf/config.php
+++ /dev/null
@@ -1,572 +0,0 @@
1<?php
2
3// mPDF 5.7
4// Specify whether to automatically generate bookmarks or ToC entries from h1 - h6 tags
5$this->h2bookmarks = array();
6$this->h2toc = array();
7/* Define arrays with e.g. the tag=>ToC-level
8Remember bookmark and ToC levels start at 0
9(does not work inside tables)
10Only the default ToC will be used if > 1 ToCs are defined for the document
11H1 - H6 must be uppercase
12$this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2);
13$this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2);
14*/
15
16// mPDF 5.7
17// Text-align on decimal marks
18// Allowed characters for alignment on decimal marks. Additional codes must start with D
19// Non-ASCII characters should be in utf-8 encoding
20// DM - middot U+00B7
21// DA - arabic decimal mark U+066B
22$this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-');
23
24// PAGING
25$this->mirrorMargins = 0;
26$this->restoreBlockPagebreaks = false;
27$this->forcePortraitMargins = false;
28$this->displayDefaultOrientation = false;
29$this->printers_info = false; // Adds date and page info for printer when using @page and "marks:crop;"
30$this->bleedMargin = 5;
31$this->crossMarkMargin = 5; // Distance of cross mark from margin in mm
32$this->cropMarkMargin = 8; // Distance of crop mark from margin in mm
33$this->cropMarkLength = 18; // Default length in mm of crop line
34$this->nonPrintMargin = 8; // Non-printable border at edge of paper sheet in mm
35// mPDF 5.5
36// Avoid just the border/background-color of the end of a block being moved on to next page
37$this->margBuffer = 2; // Allows an (empty) end of block to extend beyond the bottom margin by this amount (mm)
38
39
40// PAGE NUMBERING
41$this->pagenumPrefix;
42$this->pagenumSuffix;
43$this->nbpgPrefix;
44$this->nbpgSuffix;
45
46
47// FONTS, LANGUAGES & CHARACTER SETS
48// Set maximum size of TTF font file to allow non-subsets - in kB
49// Used to avoid e.g. Arial Unicode MS (perhaps used for substitutions) to ever be fully embedded
50// NB Free serif is 1.5MB, most files are <= 600kB (most 200-400KB)
51$this->maxTTFFilesize = 2000;
52
53// this value determines whether to subset or not
54// 0 - 100 = percent characters
55// i.e. if ==40, mPDF will embed whole font if >40% characters in that font
56// or embed subset if <40% characters
57// 0 will force whole file to be embedded (NO subsetting)
58// 100 will force always to subset
59// This value is overridden if you set new mPDF('s)
60// and/or Can set at runtime
61$this->percentSubset = 30;
62
63$this->useAdobeCJK = false; // Uses Adobe CJK fonts for CJK languages
64 // default TRUE; only set false if you have defined some available fonts that support CJK
65 // If true this will not stop use of other CJK fonts if specified by font-family:
66 // and vice versa i.e. only dictates behaviour when specified by lang="" incl. AutoFont()
67
68// When embedding full TTF font files, remakes the font file using only core tables
69// May improve function with some PostScript printers (GhostScript/GSView)
70// Does not work with TTC font collections
71// Slightly smaller file; increased processing time
72$this->repackageTTF = false;
73
74// Allows automatic character set conversion if "charset=xxx" detected in html header (WriteHTML() )
75$this->allow_charset_conversion = true;
76$this->biDirectional=false; // automatically determine BIDI text in LTR page
77$this->autoFontGroupSize = 2; // 1: individual words are spanned; 2: words+; 3: as big chunks as possible.
78$this->useLang = true; // Default changed in mPDF 4.0
79
80$this->useSubstitutions = false; // Substitute missing characters in UTF-8(multibyte) documents - from other fonts
81$this->falseBoldWeight = 5; // Weight for bold text when using an artificial (outline) bold; value 0 (off) - 10 (rec. max)
82
83// CONFIGURATION
84$this->allow_output_buffering = false;
85
86$this->enableImports = false; // Adding mPDFI functions
87
88$this->collapseBlockMargins = true; // Allows top and bottom margins to collapse between block elements
89$this->progressBar = 0; // Shows progress-bars whilst generating file 0 off, 1 simple, 2 advanced
90$this->progbar_heading = 'mPDF file progress';
91$this->progbar_altHTML = ''; // Should include <html> and <body> but NOT end tags
92 // Can incude <head> and link to stylesheet etc.
93 // e.g. '<html><body><p><img src="loading.gif" /> Creating PDF file. Please wait...</p>';
94
95$this->dpi = 96; // To interpret "px" pixel values in HTML/CSS (see img_dpi below)
96
97// Automatically correct for tags where HTML specifies optional end tags e.g. P,LI,DD,TD
98// If you are confident input html is valid XHTML, turning this off may make it more reliable(?)
99$this->allow_html_optional_endtags = true;
100
101$this->ignore_invalid_utf8 = false;
102$this->text_input_as_HTML = false; // Converts all entities in Text inputs to UTF-8 before encoding
103$this->useGraphs = false;
104
105
106// When writing a block element with position:fixed and overflow:auto, mPDF scales it down to fit in the space
107// by repeatedly rewriting it and making adjustments. These values give the adjustments used, depending how far out
108// the previous guess was. The lower the number, the quicker it will finish, but the less accurate the fit may be.
109// FPR1 is for coarse adjustments, and FPR4 for fine adjustments when it is getting closer.
110$this->incrementFPR1 = 10; // i.e. will alter by 1/[10]th of width and try again until within closer limits
111$this->incrementFPR2 = 20;
112$this->incrementFPR3 = 30;
113$this->incrementFPR4 = 50; // i.e. will alter by 1/[50]th of width and try again when it nearly fits
114
115
116// COLORSPACE
117// 1 - allow GRAYSCALE only [convert CMYK/RGB->gray]
118// 2 - allow RGB / SPOT COLOR / Grayscale [convert CMYK->RGB]
119// 3 - allow CMYK / SPOT COLOR / Grayscale [convert RGB->CMYK]
120$this->restrictColorSpace = 0;
121
122// PDFX/1-a Compliant files
123$this->PDFX = false; // true=Forces compliance with PDFX-1a spec
124 // Cannot be used with $this->restrictColorSpace (i.e. no RGB)
125$this->PDFXauto = false; // Overrides warnings making changes when possible to force PDFX1-a compliance
126
127
128// PDFA1-b Compliant files
129$this->PDFA = false; // true=Forces compliance with PDFA-1b spec
130 // Can use with $this->restrictColorSpace=3 (for a CMYK file)
131 // Any other settings, uses RGB profile
132$this->PDFAauto = false; // Overrides warnings making changes when possible to force PDFA1-b compliance
133$this->ICCProfile = ''; // Colour profile OutputIntent
134 // sRGB_IEC61966-2-1 (=default if blank and PDFA), or other added .icc profile
135 // Must be CMYK for PDFX, or appropriate type for PDFA(RGB or CMYK)
136
137
138
139// DEBUGGING & DEVELOPERS
140$this->showStats = false;
141$this->debug = false;
142$this->debugfonts = false; // Checks and reports on errors when parsing TTF files - adds significantly to processing time
143$this->showImageErrors = false;
144$this->table_error_report = false; // Die and report error if table is too wide to contain whole words
145$this->table_error_report_param = ''; // Parameter which can be passed to show in error report i.e. chapter number being processed//
146
147
148// ANNOTATIONS
149$this->title2annots = false;
150$this->annotSize = 0.5; // default mm for Adobe annotations - nominal
151$this->annotMargin; // default position for Annotations
152$this->annotOpacity = 0.5; // default opacity for Annotations
153
154// BOOKMARKS
155$this->anchor2Bookmark = 0; // makes <a name=""> into a bookmark as well as internal link target; 1 = just name; 2 = name (p.34)
156// Set an optional array to specify appearance of Bookmarks (by level)
157// Default values are Black and normal style
158/*
159 Example:
160$this->bookmarkStyles = array(
161 0 => array('color'=> array(0,64,128), 'style'=>'B'),
162 1 => array('color'=> array(128,0,0), 'style'=>''),
163 2 => array('color'=> array(0,128,0), 'style'=>'I'),
164);
165*/
166$this->bookmarkStyles = array();
167
168
169// CSS & STYLES
170$this->CSSselectMedia='print'; // screen, print, or any other CSS @media type (not "all")
171
172
173// PAGE HEADERS & FOOTERS
174$this->forcePortraitHeaders = false;
175// Values used if simple FOOTER/HEADER given i.e. not array
176$this->defaultheaderfontsize = 8; // pt
177$this->defaultheaderfontstyle = 'BI'; // '', or 'B' or 'I' or 'BI'
178$this->defaultheaderline = 1; // 1 or 0 - line under the header
179$this->defaultfooterfontsize = 8; // pt
180$this->defaultfooterfontstyle = 'BI'; // '', or 'B' or 'I' or 'BI'
181$this->defaultfooterline = 1; // 1 or 0 - line over the footer
182$this->header_line_spacing = 0.25; // spacing between bottom of header and line (if present) - function of fontsize
183$this->footer_line_spacing = 0.25; // spacing between bottom of header and line (if present) - function of fontsize
184// If 'pad' margin-top sets fixed distance in mm (padding) between bottom of header and top of text.
185// 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.
186$this->setAutoTopMargin = false;
187$this->setAutoBottomMargin = false;
188$this->autoMarginPadding = 2; // distance in mm used as padding if 'stretch' mode is used
189
190
191
192// TABLES
193$this->simpleTables = false; // Forces all cells to have same border, background etc. Improves performance
194$this->packTableData = false; // Reduce memory usage processing tables (but with increased processing time)
195// Using disk to cache table data can reduce memory usage dramatically, but at a cost of increased
196// executon time and disk access (read and write)
197$this->cacheTables = false;
198
199$this->ignore_table_percents = false;
200$this->ignore_table_widths = false;
201$this->keep_table_proportions = false; // If table width set > page width, force resizing but keep relative sizes
202 // Also forces respect of cell widths set by %
203$this->shrink_tables_to_fit = 1.4; // automatically reduce fontsize in table if words would have to split ( not in CJK)
204 // 0 or false to disable; value (if set) gives maximum factor to reduce fontsize
205
206$this->tableMinSizePriority = false; // If page-break-inside:avoid but cannot fit on full page without
207 // exceeding autosize; setting this value to true will force respsect for
208 // autosize, and disable the page-break-inside:avoid
209
210$this->use_kwt = false; // "Keep-with-table"
211$this->iterationCounter = false; // Set to TRUE to use table Head iteration counter
212$this->splitTableBorderWidth = 0; // Use table border (using this width in mm) when table breaks across pages
213 // Recommended to use small value e.g. 0.01
214
215
216// IMAGES
217$this->img_dpi = 96; // Default dpi to output images if size not defined
218 // See also above "dpi"
219
220// TEXT SPACING & JUSTIFICATION
221$this->useKerning = false; // true to use kerning
222$this->justifyB4br = false; // In justified text, <BR> does not cause the preceding text to be justified in browsers
223 // Change to true to force justification (as in MS Word)
224
225$this->tabSpaces = 8; // Number of spaces to replace for a TAB in <pre> sections
226 // Notepad uses 6, HTML specification recommends 8
227$this->jSWord = 0.4; // Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character
228$this->jSmaxChar = 2; // Maximum spacing to allocate to character spacing. (0 = no maximum)
229
230$this->jSmaxCharLast = 1; // Maximum character spacing allowed (carried over) when finishing a last line
231$this->jSmaxWordLast = 2; // Maximum word spacing allowed (carried over) when finishing a last line
232$this->normalLineheight = 1.33; // Value used for line-height when CSS specified as 'normal' (default)
233
234// Small Caps
235$this->smCapsScale = 0.75; // Factor of 1 to scale capital letters
236$this->smCapsStretch = 110; // % to stretch small caps horizontally (i.e. 100 = no stretch)
237
238// CJK Line-breaking
239$this->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow
240$this->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables)
241$this->CJKforceend = false; // Forces overflowng punctuation to hang outside right margin mPDF 5.6.40
242
243// HYPHENATION
244$this->SHYlang = "en"; // Should be one of: 'en','de','es','fi','fr','it','nl','pl','ru','sv'
245$this->SHYleftmin = 2;
246$this->SHYrightmin = 2;
247$this->SHYcharmin = 2;
248$this->SHYcharmax = 10;
249
250// COLUMNS
251$this->keepColumns = false; // Set to go to the second column only when the first is full of text etc.
252$this->max_colH_correction = 1.15; // Maximum ratio to adjust column height when justifying - too large a value can give ugly results
253$this->ColGap=5;
254
255
256// LISTS
257$this->list_align_style = 'R'; // Determines alignment of numbers in numbered lists
258$this->list_indent_first_level = 0; // 1/0 yex/no to indent first level of list
259$this->list_number_suffix = '.'; // Content to follow a numbered list marker e.g. '.' gives 1. or IV.; ')' gives 1) or a)
260
261// ACTIVE FORMS
262$this->useActiveForms = false;
263
264// WATERMARKS
265$this->watermarkImgBehind = false;
266$this->showWatermarkText = 0;
267$this->showWatermarkImage = 0;
268$this->watermarkText = '';
269$this->watermarkImage = '';
270$this->watermark_font = '';
271$this->watermarkTextAlpha = 0.2;
272$this->watermarkImageAlpha = 0.2;
273$this->watermarkImgAlphaBlend = 'Normal';
274 // Accepts any PDF spec. value: Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn,
275 // HardLight, SoftLight, Difference, Exclusion
276 // "Multiply" works well for watermark image on top
277
278// BORDERS
279$this->autoPadding = false; // Automatically increases padding in block elements when border-radius set - if required
280
281
282//////////////////////////////////////////////
283
284// Default values if no style sheet offered (cf. http://www.w3.org/TR/CSS21/sample.html)
285$this->defaultCSS = array(
286 'BODY' => array(
287 'FONT-FAMILY' => 'serif',
288 'FONT-SIZE' => '11pt',
289 'TEXT-INDENT' => '0pt',
290 'LINE-HEIGHT' => 'normal',
291 'MARGIN-COLLAPSE' => 'collapse', /* Custom property to collapse top/bottom margins at top/bottom of page - ignored in tables/lists */
292 'HYPHENS' => 'manual', /* mPDF 5.6.08 */
293 ),
294 'P' => array(
295 'MARGIN' => '1.12em 0',
296 ),
297 'H1' => array(
298 'FONT-SIZE' => '2em',
299 'FONT-WEIGHT' => 'bold',
300 'MARGIN' => '0.67em 0',
301 'PAGE-BREAK-AFTER' => 'avoid',
302 ),
303 'H2' => array(
304 'FONT-SIZE' => '1.5em',
305 'FONT-WEIGHT' => 'bold',
306 'MARGIN' => '0.75em 0',
307 'PAGE-BREAK-AFTER' => 'avoid',
308 ),
309 'H3' => array(
310 'FONT-SIZE' => '1.17em',
311 'FONT-WEIGHT' => 'bold',
312 'MARGIN' => '0.83em 0',
313 'PAGE-BREAK-AFTER' => 'avoid',
314 ),
315 'H4' => array(
316 'FONT-WEIGHT' => 'bold',
317 'MARGIN' => '1.12em 0',
318 'PAGE-BREAK-AFTER' => 'avoid',
319 ),
320 'H5' => array(
321 'FONT-SIZE' => '0.83em',
322 'FONT-WEIGHT' => 'bold',
323 'MARGIN' => '1.5em 0',
324 'PAGE-BREAK-AFTER' => 'avoid',
325 ),
326 'H6' => array(
327 'FONT-SIZE' => '0.75em',
328 'FONT-WEIGHT' => 'bold',
329 'MARGIN' => '1.67em 0',
330 'PAGE-BREAK-AFTER' => 'avoid',
331 ),
332 'HR' => array(
333 'COLOR' => '#888888',
334 'TEXT-ALIGN' => 'center',
335 'WIDTH' => '100%',
336 'HEIGHT' => '0.2mm',
337 'MARGIN-TOP' => '0.83em',
338 'MARGIN-BOTTOM' => '0.83em',
339 ),
340 'PRE' => array(
341 'MARGIN' => '0.83em 0',
342 'FONT-FAMILY' => 'monospace',
343 ),
344 'S' => array(
345 'TEXT-DECORATION' => 'line-through',
346 ),
347 'STRIKE' => array(
348 'TEXT-DECORATION' => 'line-through',
349 ),
350 'DEL' => array(
351 'TEXT-DECORATION' => 'line-through',
352 ),
353 'SUB' => array(
354 'VERTICAL-ALIGN' => 'sub',
355 'FONT-SIZE' => '55%', /* Recommended 0.83em */
356 ),
357 'SUP' => array(
358 'VERTICAL-ALIGN' => 'super',
359 'FONT-SIZE' => '55%', /* Recommended 0.83em */
360 ),
361 'U' => array(
362 'TEXT-DECORATION' => 'underline',
363 ),
364 'INS' => array(
365 'TEXT-DECORATION' => 'underline',
366 ),
367 'B' => array(
368 'FONT-WEIGHT' => 'bold',
369 ),
370 'STRONG' => array(
371 'FONT-WEIGHT' => 'bold',
372 ),
373 'I' => array(
374 'FONT-STYLE' => 'italic',
375 ),
376 'CITE' => array(
377 'FONT-STYLE' => 'italic',
378 ),
379 'Q' => array(
380 'FONT-STYLE' => 'italic',
381 ),
382 'EM' => array(
383 'FONT-STYLE' => 'italic',
384 ),
385 'VAR' => array(
386 'FONT-STYLE' => 'italic',
387 ),
388 'SAMP' => array(
389 'FONT-FAMILY' => 'monospace',
390 ),
391 'CODE' => array(
392 'FONT-FAMILY' => 'monospace',
393 ),
394 'KBD' => array(
395 'FONT-FAMILY' => 'monospace',
396 ),
397 'TT' => array(
398 'FONT-FAMILY' => 'monospace',
399 ),
400 'SMALL' => array(
401 'FONT-SIZE' => '83%',
402 ),
403 'BIG' => array(
404 'FONT-SIZE' => '117%',
405 ),
406 'ACRONYM' => array(
407 'FONT-SIZE' => '77%',
408 'FONT-WEIGHT' => 'bold',
409 ),
410 'ADDRESS' => array(
411 'FONT-STYLE' => 'italic',
412 ),
413 'BLOCKQUOTE' => array(
414 'MARGIN-LEFT' => '40px',
415 'MARGIN-RIGHT' => '40px',
416 'MARGIN-TOP' => '1.12em',
417 'MARGIN-BOTTOM' => '1.12em',
418 ),
419 'A' => array(
420 'COLOR' => '#0000FF',
421 'TEXT-DECORATION' => 'underline',
422 ),
423 'UL' => array(
424 'MARGIN' => '0.83em 0', /* only applied to top-level of nested lists */
425 'TEXT-INDENT' => '1.3em', /* Custom effect - list indent */
426 ),
427 'OL' => array(
428 'MARGIN' => '0.83em 0', /* only applied to top-level of nested lists */
429 'TEXT-INDENT' => '1.3em', /* Custom effect - list indent */
430 ),
431 'DL' => array(
432 'MARGIN' => '1.67em 0',
433 ),
434 'DT' => array(
435 ),
436 'DD' => array(
437 'PADDING-LEFT' => '40px',
438 ),
439 'TABLE' => array(
440 'MARGIN' => '0',
441 'BORDER-COLLAPSE' => 'separate',
442 'BORDER-SPACING' => '2px',
443 'EMPTY-CELLS' => 'show',
444 'LINE-HEIGHT' => '1.2',
445 'VERTICAL-ALIGN' => 'middle',
446 ),
447 'THEAD' => array(
448 ),
449 'TFOOT' => array(
450 ),
451 'TH' => array(
452 'FONT-WEIGHT' => 'bold',
453 'TEXT-ALIGN' => 'center',
454 'PADDING-LEFT' => '0.1em',
455 'PADDING-RIGHT' => '0.1em',
456 'PADDING-TOP' => '0.1em',
457 'PADDING-BOTTOM' => '0.1em',
458 ),
459 'TD' => array(
460 'PADDING-LEFT' => '0.1em',
461 'PADDING-RIGHT' => '0.1em',
462 'PADDING-TOP' => '0.1em',
463 'PADDING-BOTTOM' => '0.1em',
464 ),
465 'CAPTION' => array(
466 'TEXT-ALIGN' => 'center',
467 ),
468 'IMG' => array(
469 'MARGIN' => '0',
470 'VERTICAL-ALIGN' => 'baseline',
471 ),
472 'INPUT' => array(
473 'FONT-FAMILY' => 'sans-serif',
474 'VERTICAL-ALIGN' => 'middle',
475 'FONT-SIZE' => '0.9em',
476 ),
477 'SELECT' => array(
478 'FONT-FAMILY' => 'sans-serif',
479 'FONT-SIZE' => '0.9em',
480 'VERTICAL-ALIGN' => 'middle',
481 ),
482 'TEXTAREA' => array(
483 'FONT-FAMILY' => 'monospace',
484 'FONT-SIZE' => '0.9em',
485 'VERTICAL-ALIGN' => 'text-bottom',
486 ),
487 'MARK' => array( /* mPDF 5.5.09 */
488 'BACKGROUND-COLOR' => 'yellow',
489 ),
490);
491
492
493//////////////////////////////////////////////////
494// VALUES ONLY LIKELY TO BE CHANGED BY DEVELOPERS
495//////////////////////////////////////////////////
496$this->pdf_version = '1.4';
497
498// Hyphenation
499$this->SHYlanguages = array('en','de','es','fi','fr','it','nl','pl','ru','sv'); // existing defined patterns
500
501$this->default_lineheight_correction=1.2; // Value 1 sets lineheight=fontsize height;
502 // Value used if line-height not set by CSS (usuallly is)
503
504$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);
505
506// CHARACTER PATTERN MATCHES TO DETECT LANGUAGES
507 // pattern used to detect RTL characters -> force RTL
508 $this->pregRTLchars = "\x{0590}-\x{06FF}\x{0700}-\x{083E}\x{FB00}-\x{FDFD}\x{FE70}-\x{FEFF}";
509
510 // CJK Chars which require changing and are distinctive of specific charset
511 $this->pregUHCchars = "\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}";
512 $this->pregSJISchars = "\x{3040}-\x{309F}\x{30A0}-\x{30FF}\x{3190}-\x{319F}\x{31F0}-\x{31FF}";
513
514 // Chars which distinguish CJK but not between different
515 $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}";
516
517 // For CJK Line-breaking
518 //Leading characters - Not allowed at end of line
519 $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}";
520 // Following characters - Not allowed at start
521 $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}";
522 // Characters which are allowed to overflow the right margin
523 $this->CJKoverflow = "\.,\x{ff61}\x{ff64}\x{3001}\x{3002}\x{ff0c}\x{ff0e}";
524
525
526
527 // ASCII Chars which shouldn't break string
528 // Use for very specific words
529 $this->pregASCIIchars1 = "\x{0021}-\x{002E}\x{0030}-\x{003B}?"; // no [SPACE]
530 // Use for words+
531 $this->pregASCIIchars2 = "\x{0020}-\x{002E}\x{0030}-\x{003B}?"; // [SPACE] punctuation and 0-9
532 // Use for chunks > words
533 $this->pregASCIIchars3 = "\x{0000}-\x{002E}\x{0030}-\x{003B}\x{003F}-\x{007E}"; // all except <>
534 // Vietnamese - specific
535 $this->pregVIETchars = "\x{01A0}\x{01A1}\x{01AF}\x{01B0}\x{1EA0}-\x{1EF1}";
536 // Vietnamese - Chars which shouldn't break string
537 $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 < >
538
539 // Arabic
540 $this->pregARABICchars = "\x{0600}-\x{06FF}\x{0750}-\x{077F}\x{FB50}-\x{FDFD}\x{FE70}-\x{FEFF}";
541 // Characters of Urdu, Pashto, Sindhi (but NOT arabic or persian/farsi) [not covered by DejavuSans font]
542 $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}";
543
544 $this->pregHEBchars = "\x{0590}-\x{05FF}\x{FB00}-\x{FB49}"; // Hebrew
545
546 // INDIC
547 $this->pregHIchars = "\x{0900}-\x{0963}\x{0966}-\x{097F}"; // Devanagari (Hindi) minus the common indic punctuation 0964,0965
548 $this->pregBNchars = "\x{0980}-\x{09FF}"; // Bengali
549 $this->pregPAchars = "\x{0A00}-\x{0A7F}"; // Gurmukhi (Punjabi)
550 $this->pregGUchars = "\x{0A80}-\x{0AFF}"; // Gujarati
551 $this->pregORchars = "\x{0B00}-\x{0B7F}"; // Oriya
552 $this->pregTAchars = "\x{0B80}-\x{0BFF}"; // Tamil
553 $this->pregTEchars = "\x{0C00}-\x{0C7F}"; // Telugu
554 $this->pregKNchars = "\x{0C80}-\x{0CFF}"; // Kannada
555 $this->pregMLchars = "\x{0D00}-\x{0D7F}"; // Malayalam
556 $this->pregSHchars = "\x{0D80}-\x{0DFF}"; // Sinhala
557
558 $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}";
559 // 200B-D=Zero-width joiners; 0964,0965=Generic Indic punctuation; NBSP & general punctuation (excludes # and / so can use in autoFont() )
560
561$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';
562$this->allowedCSStags .= '|ARTICLE|ASIDE|FIGURE|FIGCAPTION|FOOTER|HEADER|HGROUP|NAV|SECTION|MARK|DETAILS|SUMMARY|METER|PROGRESS|TIME'; // mPDF 5.5.09
563$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';
564$this->allowedCSStags .= '|SELECT|INPUT|TEXTAREA|CAPTION|FIELDSET|LEGEND'; // mPDF 5.4.18
565$this->allowedCSStags .= '|TEXTCIRCLE|DOTTAB'; // mPDF 5.5.23 // mPDF 5.6.33
566
567$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
568$this->innerblocktags = array('P','BLOCKQUOTE','ADDRESS','PRE','H1','H2','H3','H4','H5','H6','DT','DD','CAPTION');
569
570
571
572?> \ 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
index e2e21f4d..00000000
--- a/inc/3rdparty/libraries/mpdf/config_cp.php
+++ /dev/null
@@ -1,153 +0,0 @@
1<?php
2
3
4function GetLangOpts($llcc, $adobeCJK) {
5 if (strlen($llcc) == 5) {
6 $lang = substr(strtolower($llcc),0,2);
7 $country = substr(strtoupper($llcc),3,2);
8 }
9 else { $lang = strtolower($llcc); $country = ''; }
10 $unifonts = "";
11 $coreSuitable = false;
12
13 switch($lang){
14 CASE "en":
15 CASE "ca":
16 CASE "cy":
17 CASE "da":
18 CASE "de":
19 CASE "es":
20 CASE "eu":
21 CASE "fr":
22 CASE "ga":
23 CASE "fi":
24 CASE "is":
25 CASE "it":
26 CASE "nl":
27 CASE "no":
28 CASE "pt":
29 CASE "sv":
30 // Edit this value to define how mPDF behaves when using new mPDF('-x')
31 // If set to TRUE, mPDF will use Adobe core fonts only when it recognises the languages above
32 $coreSuitable = true; break;
33
34
35
36 // RTL Languages
37 CASE "he":
38 CASE "yi":
39 $unifonts = "dejavusans,dejavusansB,dejavusansI,dejavusansBI"; break;
40
41 // Arabic
42 CASE "ar":
43 $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI"; break;
44 CASE "fa":
45 $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI"; break;
46 CASE "ps":
47 $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI"; break;
48 CASE "ur":
49 $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI"; break;
50
51 // Sindhi (can be Arabic or Devanagari)
52 CASE "sd":
53 if ($country == "IN") { $unifonts = "ind_hi_1_001"; }
54 // else if ($country == "PK") { $unifonts = ""; }
55 // else { $unifonts = ""; }
56 break;
57
58
59 // INDIC
60 // Assamese
61 CASE "as": $unifonts = "ind_bn_1_001"; break;
62 // Bengali
63 CASE "bn": $unifonts = "ind_bn_1_001"; break;
64 // Gujarati
65 CASE "gu": $unifonts = "ind_gu_1_001"; break;
66 // Hindi (Devanagari)
67 CASE "hi": $unifonts = "ind_hi_1_001"; break;
68 // Kannada
69 CASE "kn": $unifonts = "ind_kn_1_001"; break;
70 // Kashmiri
71 CASE "ks": $unifonts = "ind_hi_1_001"; break;
72 // Malayalam
73 CASE "ml": $unifonts = "ind_ml_1_001"; break;
74 // Nepali (Devanagari)
75 CASE "ne": $unifonts = "ind_hi_1_001"; break;
76 // Oriya
77 CASE "or": $unifonts = "ind_or_1_001"; break;
78 // Punjabi (Gurmukhi)
79 CASE "pa": $unifonts = "ind_pa_1_001"; break;
80 // Tamil
81 CASE "ta": $unifonts = "ind_ta_1_001"; break;
82 // Telegu
83 CASE "te": $unifonts = "ind_te_1_001"; break;
84
85 // THAI
86 CASE "th": $unifonts = "garuda,garudaB,garudaI,garudaBI,norasi,norasiB,norasiI,norasiBI"; break;
87
88 // VIETNAMESE
89 CASE "vi":
90 $unifonts = "dejavusanscondensed,dejavusanscondensedB,dejavusanscondensedI,dejavusanscondensedBI,dejavusans,dejavusansB,dejavusansI,dejavusansBI"; break;
91
92 // CJK Langauges
93 CASE "ja":
94 if ($adobeCJK) {
95 $unifonts = "sjis,sjisB,sjisI,sjisBI";
96 }
97/* Uncomment these lines if CJK fonts available */
98// else {
99// $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
100// }
101 break;
102
103 CASE "ko":
104 if ($adobeCJK) {
105 $unifonts = "uhc,uhcB,uhcI,uhcBI";
106 }
107/* Uncomment these lines if CJK fonts available */
108// else {
109// $unifonts = "unbatang_0613";
110// }
111 break;
112
113 CASE "zh":
114 if ($country == "HK" || $country == "TW") {
115 if ($adobeCJK) {
116 $unifonts = "big5,big5B,big5I,big5BI";
117 }
118/* Uncomment these lines if CJK fonts available */
119// else {
120// $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
121// }
122 }
123 else if ($country == "CN") {
124 if ($adobeCJK) {
125 $unifonts = "gb,gbB,gbI,gbBI";
126 }
127/* Uncomment these lines if CJK fonts available */
128// else {
129// $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
130// }
131 }
132 else {
133 if ($adobeCJK) {
134 $unifonts = "gb,gbB,gbI,gbBI";
135 }
136/* Uncomment these lines if CJK fonts available */
137// else {
138// $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
139// }
140 }
141 break;
142
143 }
144
145
146 $unifonts_arr = array();
147 if ($unifonts) {
148 $unifonts_arr = preg_split('/\s*,\s*/',$unifonts);
149 }
150 return array($coreSuitable ,$unifonts_arr);
151}
152
153?> \ 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
index 7cb990ab..00000000
--- a/inc/3rdparty/libraries/mpdf/config_fonts.php
+++ /dev/null
@@ -1,304 +0,0 @@
1<?php
2
3
4// Optionally define a folder which contains TTF fonts
5// mPDF will look here before looking in the usual _MPDF_TTFONTPATH
6// Useful if you already have a folder for your fonts
7// e.g. on Windows: define("_MPDF_SYSTEM_TTFONTS", 'C:/Windows/Fonts/');
8// Leave undefined if not required
9
10// define("_MPDF_SYSTEM_TTFONTS", '');
11
12
13// Optionally set font(s) (names as defined below in $this->fontdata) to use for missing characters
14// when using useSubstitutions. Use a font with wide coverage - dejavusanscondensed is a good start
15// only works using subsets (otherwise would add very large file)
16// doesn't do Indic or arabic
17// More than 1 font can be specified but each will add to the processing time of the script
18
19$this->backupSubsFont = array('dejavusanscondensed');
20
21
22// Optionally set a font (name as defined below in $this->fontdata) to use for CJK characters
23// in Plane 2 Unicode (> U+20000) when using useSubstitutions.
24// Use a font like hannomb or sun-extb if available
25// only works using subsets (otherwise would add very large file)
26// Leave undefined or blank if not not required
27
28// $this->backupSIPFont = 'sun-extb';
29
30
31/*
32This array defines translations from font-family in CSS or HTML
33to the internal font-family name used in mPDF.
34Can include as many as want, regardless of which fonts are installed.
35By default mPDF will take a CSS/HTML font-family and remove spaces
36and change to lowercase e.g. "Arial Unicode MS" will be recognised as
37"arialunicodems"
38You only need to define additional translations.
39You can also use it to define specific substitutions e.g.
40'frutiger55roman' => 'arial'
41Generic substitutions (i.e. to a sans-serif or serif font) are set
42by including the font-family in $this->sans_fonts below
43To aid backwards compatability some are included:
44*/
45$this->fonttrans = array(
46 'helvetica' => 'arial',
47 'times' => 'timesnewroman',
48 'courier' => 'couriernew',
49 'trebuchet' => 'trebuchetms',
50 'comic' => 'comicsansms',
51 'franklin' => 'franklingothicbook',
52 'albertus' => 'albertusmedium',
53 'arialuni' => 'arialunicodems',
54 'zn_hannom_a' => 'hannoma',
55 'ocr-b' => 'ocrb',
56 'ocr-b10bt' => 'ocrb',
57
58
59);
60
61/*
62This array lists the file names of the TrueType .ttf or .otf font files
63for each variant of the (internal mPDF) font-family name.
64['R'] = Regular (Normal), others are Bold, Italic, and Bold-Italic
65Each entry must contain an ['R'] entry, but others are optional.
66Only the font (files) entered here will be available to use in mPDF.
67Put preferred default first in order.
68This will be used if a named font cannot be found in any of
69$this->sans_fonts, $this->serif_fonts or $this->mono_fonts
70
71['indic'] = true; for special mPDF fonts containing Indic characters
72['sip-ext'] = 'hannomb'; name a related font file containing SIP characters
73
74If a .ttc TrueType collection file is referenced, the number of the font
75within the collection is required. Fonts in the collection are numbered
76starting at 1, as they appear in the .ttc file e.g.
77 "cambria" => array(
78 'R' => "cambria.ttc",
79 'B' => "cambriab.ttf",
80 'I' => "cambriai.ttf",
81 'BI' => "cambriaz.ttf",
82 'TTCfontID' => array(
83 'R' => 1,
84 ),
85 ),
86 "cambriamath" => array(
87 'R' => "cambria.ttc",
88 'TTCfontID' => array(
89 'R' => 2,
90 ),
91 ),
92*/
93
94$this->fontdata = array(
95 "dejavusanscondensed" => array(
96 'R' => "DejaVuSansCondensed.ttf",
97 'B' => "DejaVuSansCondensed-Bold.ttf",
98 'I' => "DejaVuSansCondensed-Oblique.ttf",
99 'BI' => "DejaVuSansCondensed-BoldOblique.ttf",
100 ),
101 "dejavusans" => array(
102 'R' => "DejaVuSans.ttf",
103 'B' => "DejaVuSans-Bold.ttf",
104 'I' => "DejaVuSans-Oblique.ttf",
105 'BI' => "DejaVuSans-BoldOblique.ttf",
106 ),
107 "dejavuserif" => array(
108 'R' => "DejaVuSerif.ttf",
109 'B' => "DejaVuSerif-Bold.ttf",
110 'I' => "DejaVuSerif-Italic.ttf",
111 'BI' => "DejaVuSerif-BoldItalic.ttf",
112 ),
113 "dejavuserifcondensed" => array(
114 'R' => "DejaVuSerifCondensed.ttf",
115 'B' => "DejaVuSerifCondensed-Bold.ttf",
116 'I' => "DejaVuSerifCondensed-Italic.ttf",
117 'BI' => "DejaVuSerifCondensed-BoldItalic.ttf",
118 ),
119 "dejavusansmono" => array(
120 'R' => "DejaVuSansMono.ttf",
121 'B' => "DejaVuSansMono-Bold.ttf",
122 'I' => "DejaVuSansMono-Oblique.ttf",
123 'BI' => "DejaVuSansMono-BoldOblique.ttf",
124 ),
125
126
127/* OCR-B font for Barcodes */
128 "ocrb" => array(
129 'R' => "ocrb10.ttf",
130 ),
131
132/* Thai fonts */
133 "garuda" => array(
134 'R' => "Garuda.ttf",
135 'B' => "Garuda-Bold.ttf",
136 'I' => "Garuda-Oblique.ttf",
137 'BI' => "Garuda-BoldOblique.ttf",
138 ),
139 "norasi" => array(
140 'R' => "Norasi.ttf",
141 'B' => "Norasi-Bold.ttf",
142 'I' => "Norasi-Oblique.ttf",
143 'BI' => "Norasi-BoldOblique.ttf",
144 ),
145
146
147/* Indic fonts */
148 "ind_bn_1_001" => array(
149 'R' => "ind_bn_1_001.ttf",
150 'indic' => true,
151 ),
152 "ind_hi_1_001" => array(
153 'R' => "ind_hi_1_001.ttf",
154 'indic' => true,
155 ),
156 "ind_ml_1_001" => array(
157 'R' => "ind_ml_1_001.ttf",
158 'indic' => true,
159 ),
160 "ind_kn_1_001" => array(
161 'R' => "ind_kn_1_001.ttf",
162 'indic' => true,
163 ),
164 "ind_gu_1_001" => array(
165 'R' => "ind_gu_1_001.ttf",
166 'indic' => true,
167 ),
168 "ind_or_1_001" => array(
169 'R' => "ind_or_1_001.ttf",
170 'indic' => true,
171 ),
172 "ind_ta_1_001" => array(
173 'R' => "ind_ta_1_001.ttf",
174 'indic' => true,
175 ),
176 "ind_te_1_001" => array(
177 'R' => "ind_te_1_001.ttf",
178 'indic' => true,
179 ),
180 "ind_pa_1_001" => array(
181 'R' => "ind_pa_1_001.ttf",
182 'indic' => true,
183 ),
184
185
186/* XW Zar Arabic fonts */
187 "xbriyaz" => array(
188 'R' => "XB Riyaz.ttf",
189 'B' => "XB RiyazBd.ttf",
190 'I' => "XB RiyazIt.ttf",
191 'BI' => "XB RiyazBdIt.ttf",
192 'unAGlyphs' => true,
193 ),
194 "xbzar" => array(
195 'R' => "XB Zar.ttf",
196 'B' => "XB Zar Bd.ttf",
197 'I' => "XB Zar It.ttf",
198 'BI' => "XB Zar BdIt.ttf",
199 'unAGlyphs' => true,
200 ),
201
202
203
204
205/* Examples of some CJK fonts */
206/*
207 "unbatang_0613" => array(
208 'R' => "UnBatang_0613.ttf",
209 ),
210 "sun-exta" => array(
211 'R' => "Sun-ExtA.ttf",
212 'sip-ext' => 'sun-extb',
213 ),
214 "sun-extb" => array(
215 'R' => "Sun-ExtB.ttf",
216 ),
217 "hannoma" => array(
218 'R' => "HAN NOM A.ttf",
219 'sip-ext' => 'hannomb',
220 ),
221 "hannomb" => array(
222 'R' => "HAN NOM B.ttf",
223 ),
224
225
226 'mingliu' => array (
227 'R' => 'mingliu.ttc',
228 'TTCfontID' => array (
229 'R' => 1,
230 ),
231 'sip-ext' => 'mingliu-extb',
232 ),
233 'pmingliu' => array (
234 'R' => 'mingliu.ttc',
235 'TTCfontID' => array (
236 'R' => 2,
237 ),
238 'sip-ext' => 'pmingliu-extb',
239 ),
240 'mingliu_hkscs' => array (
241 'R' => 'mingliu.ttc',
242 'TTCfontID' => array (
243 'R' => 3,
244 ),
245 'sip-ext' => 'mingliu_hkscs-extb',
246 ),
247 'mingliu-extb' => array (
248 'R' => 'mingliub.ttc',
249 'TTCfontID' => array (
250 'R' => 1,
251 ),
252 ),
253 'pmingliu-extb' => array (
254 'R' => 'mingliub.ttc',
255 'TTCfontID' => array (
256 'R' => 2,
257 ),
258 ),
259 'mingliu_hkscs-extb' => array (
260 'R' => 'mingliub.ttc',
261 'TTCfontID' => array (
262 'R' => 3,
263 ),
264 ),
265*/
266
267);
268
269
270// Add fonts to this array if they contain characters in the SIP or SMP Unicode planes
271// but you do not require them. This allows a more efficient form of subsetting to be used.
272$this->BMPonly = array(
273 "dejavusanscondensed",
274 "dejavusans",
275 "dejavuserifcondensed",
276 "dejavuserif",
277 "dejavusansmono",
278 );
279
280// These next 3 arrays do two things:
281// 1. If a font referred to in HTML/CSS is not available to mPDF, these arrays will determine whether
282// a serif/sans-serif or monospace font is substituted
283// 2. The first font in each array will be the font which is substituted in circumstances as above
284// (Otherwise the order is irrelevant)
285// Use the mPDF font-family names i.e. lowercase and no spaces (after any translations in $fonttrans)
286// Always include "sans-serif", "serif" and "monospace" etc.
287$this->sans_fonts = array('dejavusanscondensed','dejavusans','freesans','liberationsans','sans','sans-serif','cursive','fantasy',
288 'arial','helvetica','verdana','geneva','lucida','arialnarrow','arialblack','arialunicodems',
289 'franklin','franklingothicbook','tahoma','garuda','calibri','trebuchet','lucidagrande','microsoftsansserif',
290 'trebuchetms','lucidasansunicode','franklingothicmedium','albertusmedium','xbriyaz','albasuper','quillscript'
291
292);
293
294$this->serif_fonts = array('dejavuserifcondensed','dejavuserif','freeserif','liberationserif','serif',
295 'timesnewroman','times','centuryschoolbookl','palatinolinotype','centurygothic',
296 'bookmanoldstyle','bookantiqua','cyberbit','cambria',
297 'norasi','charis','palatino','constantia','georgia','albertus','xbzar','algerian','garamond',
298);
299
300$this->mono_fonts = array('dejavusansmono','freemono','liberationmono','courier', 'mono','monospace','ocrb','ocr-b','lucidaconsole',
301 'couriernew','monotypecorsiva'
302);
303
304?> \ 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
index 86d7a979..00000000
--- a/inc/3rdparty/libraries/mpdf/font/ccourier.php
+++ /dev/null
@@ -1,9 +0,0 @@
1<?php
2for($i=0;$i<=255;$i++)
3 $cw[chr($i)]=600;
4
5$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-23 -250 715 805]');
6$up=-100;
7$ut=50;
8
9?>
diff --git a/inc/3rdparty/libraries/mpdf/font/ccourierb.php b/inc/3rdparty/libraries/mpdf/font/ccourierb.php
deleted file mode 100644
index 71444d8b..00000000
--- a/inc/3rdparty/libraries/mpdf/font/ccourierb.php
+++ /dev/null
@@ -1,9 +0,0 @@
1<?php
2for($i=0;$i<=255;$i++)
3 $cw[chr($i)]=600;
4$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-113 -250 749 801]');
5$up=-100;
6$ut=50;
7
8
9?>
diff --git a/inc/3rdparty/libraries/mpdf/font/ccourierbi.php b/inc/3rdparty/libraries/mpdf/font/ccourierbi.php
deleted file mode 100644
index e7d215a1..00000000
--- a/inc/3rdparty/libraries/mpdf/font/ccourierbi.php
+++ /dev/null
@@ -1,9 +0,0 @@
1<?php
2for($i=0;$i<=255;$i++)
3 $cw[chr($i)]=600;
4$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-57 -250 869 801]');
5$up=-100;
6$ut=50;
7
8
9?>
diff --git a/inc/3rdparty/libraries/mpdf/font/ccourieri.php b/inc/3rdparty/libraries/mpdf/font/ccourieri.php
deleted file mode 100644
index b16a1336..00000000
--- a/inc/3rdparty/libraries/mpdf/font/ccourieri.php
+++ /dev/null
@@ -1,9 +0,0 @@
1<?php
2for($i=0;$i<=255;$i++)
3 $cw[chr($i)]=600;
4$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-27 -250 849 805]');
5$up=-100;
6$ut=50;
7
8
9?>
diff --git a/inc/3rdparty/libraries/mpdf/font/chelvetica.php b/inc/3rdparty/libraries/mpdf/font/chelvetica.php
deleted file mode 100644
index 176146f8..00000000
--- a/inc/3rdparty/libraries/mpdf/font/chelvetica.php
+++ /dev/null
@@ -1,20 +0,0 @@
1<?php
2$cw=array(
3 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,
4 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,
5 ','=>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,
6 '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,
7 '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,
8 '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,
9 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,
10 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,
11 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,
12 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,
13 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,
14 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);
15
16$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-166 -225 1000 931]');
17$up=-100;
18$ut=50;
19$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, ), );
20?> \ 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
index 362034c0..00000000
--- a/inc/3rdparty/libraries/mpdf/font/chelveticab.php
+++ /dev/null
@@ -1,21 +0,0 @@
1<?php
2$cw=array(
3 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,
4 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,
5 ','=>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,
6 '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,
7 '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,
8 '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,
9 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,
10 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,
11 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,
12 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,
13 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,
14 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);
15
16$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-170 -228 1003 962]');
17$up=-100;
18$ut=50;
19$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, ), );
20
21?> \ 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
index b71ad34f..00000000
--- a/inc/3rdparty/libraries/mpdf/font/chelveticabi.php
+++ /dev/null
@@ -1,21 +0,0 @@
1<?php
2$cw=array(
3 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,
4 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,
5 ','=>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,
6 '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,
7 '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,
8 '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,
9 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,
10 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,
11 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,
12 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,
13 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,
14 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);
15
16$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-174 -228 1114 962]');
17$up=-100;
18$ut=50;
19$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, ), );
20
21?> \ 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
index 4f10f4ee..00000000
--- a/inc/3rdparty/libraries/mpdf/font/chelveticai.php
+++ /dev/null
@@ -1,21 +0,0 @@
1<?php
2$cw=array(
3 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,
4 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,
5 ','=>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,
6 '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,
7 '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,
8 '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,
9 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,
10 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,
11 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,
12 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,
13 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,
14 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);
15
16$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-170 -225 1116 931]');
17$up=-100;
18$ut=50;
19$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, ), );
20
21?> \ 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
index a7b1ddf0..00000000
--- a/inc/3rdparty/libraries/mpdf/font/csymbol.php
+++ /dev/null
@@ -1,21 +0,0 @@
1<?php
2$cw=array(
3 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,
4 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,
5 ','=>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,
6 '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,
7 '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,
8 '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,
9 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,
10 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,
11 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,
12 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,
13 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,
14 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);
15
16$desc=array('FontBBox'=>'[-180 -293 1090 1010]');
17$up=-100;
18$ut=50;
19
20
21?> \ 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
index c0a24866..00000000
--- a/inc/3rdparty/libraries/mpdf/font/ctimes.php
+++ /dev/null
@@ -1,21 +0,0 @@
1<?php
2$cw=array(
3 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,
4 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,
5 ','=>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,
6 '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,
7 '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,
8 '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,
9 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,
10 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,
11 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,
12 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,
13 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,
14 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);
15
16$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>662,'FontBBox'=>'[-168 -218 1000 898]');
17$up=-100;
18$ut=50;
19$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, ), );
20
21?> \ 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
index bd93d227..00000000
--- a/inc/3rdparty/libraries/mpdf/font/ctimesb.php
+++ /dev/null
@@ -1,21 +0,0 @@
1<?php
2$cw=array(
3 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,
4 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,
5 ','=>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,
6 '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,
7 '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,
8 '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,
9 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,
10 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,
11 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,
12 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,
13 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,
14 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);
15
16$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>676,'FontBBox'=>'[-168 -218 1000 935]');
17$up=-100;
18$ut=50;
19$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, ), );
20
21?> \ 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
index b7da5f1d..00000000
--- a/inc/3rdparty/libraries/mpdf/font/ctimesbi.php
+++ /dev/null
@@ -1,21 +0,0 @@
1<?php
2$cw=array(
3 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,
4 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,
5 ','=>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,
6 '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,
7 '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,
8 '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,
9 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,
10 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,
11 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,
12 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,
13 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,
14 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);
15
16$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>669,'FontBBox'=>'[-200 -218 996 921]');
17$up=-100;
18$ut=50;
19$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, ), );
20
21?> \ 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
index 0f640982..00000000
--- a/inc/3rdparty/libraries/mpdf/font/ctimesi.php
+++ /dev/null
@@ -1,21 +0,0 @@
1<?php
2$cw=array(
3 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,
4 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,
5 ','=>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,
6 '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,
7 '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,
8 '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,
9 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,
10 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,
11 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,
12 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,
13 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,
14 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);
15
16$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>653,'FontBBox'=>'[-169 -217 1010 883]');
17$up=-100;
18$ut=50;
19$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, ), );
20
21?> \ 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
index 6ead8fcf..00000000
--- a/inc/3rdparty/libraries/mpdf/font/czapfdingbats.php
+++ /dev/null
@@ -1,21 +0,0 @@
1<?php
2$cw=array(
3 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,
4 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,
5 ','=>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,
6 '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,
7 '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,
8 '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,
9 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,
10 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,
11 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,
12 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,
13 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,
14 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);
15
16$desc=array('FontBBox'=>'[-1 -143 981 820]');
17$up=-100;
18$ut=50;
19
20
21?> \ 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
index a210ad3d..00000000
--- a/inc/3rdparty/libraries/mpdf/graph.php
+++ /dev/null
@@ -1,721 +0,0 @@
1<?php
2
3
4// mPDF 4.5.009
5define("FF_USERFONT", 15); // See jpgraph_ttf.inc.php for font IDs
6global $JpgUseSVGFormat;
7$JpgUseSVGFormat = true;
8
9//======================================================================================================
10// DELETE OLD GRAPH FILES FIRST - Housekeeping
11// First clear any files in directory that are >1 hrs old
12 $interval = 3600;
13 if ($handle = opendir(_MPDF_PATH.'graph_cache')) {
14 while (false !== ($file = readdir($handle))) {
15 if (((filemtime(_MPDF_PATH.'graph_cache/'.$file)+$interval) < time()) && ($file != "..") && ($file != ".")) {
16 @unlink(_MPDF_PATH.'graph_cache/'.$file); // mPDF 4.0
17 }
18 }
19 closedir($handle);
20 }
21//==============================================================================================================
22// LOAD GRAPHS
23
24 include_once(_JPGRAPH_PATH.'jpgraph.php');
25 include_once(_JPGRAPH_PATH.'jpgraph_line.php' );
26 include_once(_JPGRAPH_PATH.'jpgraph_log.php' );
27 include_once(_JPGRAPH_PATH.'jpgraph_scatter.php' );
28 include_once(_JPGRAPH_PATH.'jpgraph_regstat.php' );
29 include_once(_JPGRAPH_PATH.'jpgraph_pie.php');
30 include_once(_JPGRAPH_PATH.'jpgraph_pie3d.php');
31 include_once(_JPGRAPH_PATH.'jpgraph_bar.php');
32 include_once(_JPGRAPH_PATH.'jpgraph_radar.php');
33
34
35//======================================================================================================
36//*****************************************************************************************************
37//*****************************************************************************************************
38//*****************************************************************************************************
39//*****************************************************************************************************
40//*****************************************************************************************************
41//*****************************************************************************************************
42//======================================================================================================
43//======================================================================================================
44
45//======================================================================================================
46//======================================================================================================
47
48//======================================================================================================
49function print_graph($g,$pgwidth) {
50 $splines = false;
51 $bandw = false;
52 $percent = false;
53 $show_percent = false;
54 $stacked = false;
55 $h = false;
56 $show_values = false;
57 $hide_grid = false;
58 $hide_y_axis = false;
59
60 if (isset($g['attr']['TYPE']) && $g['attr']['TYPE']) { $type = strtolower($g['attr']['TYPE']); }
61 if (!in_array($type,array('bar','horiz_bar','line','radar','pie','pie3d','xy','scatter'))) { $type = 'bar'; } // Default=bar
62
63 if (isset($g['attr']['STACKED']) && $g['attr']['STACKED']) { $stacked = true; } // stacked for bar or horiz_bar
64 if (isset($g['attr']['SPLINES']) && $g['attr']['SPLINES'] && $type=='xy') { $splines = true; } // splines for XY line graphs
65 if (isset($g['attr']['BANDW']) && $g['attr']['BANDW']) { $bandw = true; } // black and white
66 if (isset($g['attr']['LEGEND-OVERLAP']) && $g['attr']['LEGEND-OVERLAP']) { $overlap = true; } // avoid overlap of Legends over graph (line, bar, horiz_bar only)
67 if (isset($g['attr']['PERCENT']) && $g['attr']['PERCENT'] && $type != 'xy' && $type != 'scatter') { $percent = true; } // Show data series as percent of total in series
68 if (isset($g['attr']['SHOW-VALUES']) && $g['attr']['SHOW-VALUES']) { $show_values = true; } // Show the individual data values
69 if (isset($g['attr']['HIDE-GRID']) && $g['attr']['HIDE-GRID']) { $hide_grid = true; } // Hide the y-axis gridlines
70 if (isset($g['attr']['HIDE-Y-AXIS']) && $g['attr']['HIDE-Y-AXIS']) { $hide_y_axis = true; } // Hide the y-axis
71
72
73 // Antialias: If true - better quality curves, but graph line will only be 1px even in PDF 300dpi
74 // default=true for most except line and radar
75 if (isset($g['attr']['ANTIALIAS']) && ($g['attr']['ANTIALIAS']=='' || $g['attr']['ANTIALIAS']==0)) { $antialias = false; }
76 else if (isset($g['attr']['ANTIALIAS']) && $g['attr']['ANTIALIAS'] > 0) { $antialias = true; }
77 else if ($type=='line' || $type=='radar') { $antialias = false; }
78 else { $antialias = true; }
79
80 if ($g['attr']['DPI']) { $dpi = intval($g['attr']['DPI']); }
81 if (!$dpi || $dpi < 50 || $dpi > 2400) { $dpi = 150; } // Default dpi 150
82 $k = (0.2645/25.4 * $dpi);
83
84 // mPDF 4.5.009
85 global $JpgUseSVGFormat;
86 if (isset($JpgUseSVGFormat) && $JpgUseSVGFormat) {
87 $img_type = 'svg';
88 $k = 1; // Overrides as Vector scale does not need DPI
89 }
90 else {
91 $img_type = 'png';
92 }
93
94 if (isset($g['attr']['TITLE']) && $g['attr']['TITLE']) { $title = $g['attr']['TITLE']; }
95
96 if (isset($g['attr']['LABEL-X']) && $g['attr']['LABEL-X']) { $xlabel = $g['attr']['LABEL-X']; } // NOT IMPLEMENTED??????
97 if (isset($g['attr']['LABEL-Y']) && $g['attr']['LABEL-Y']) { $ylabel = $g['attr']['LABEL-Y']; }
98
99 if (isset($g['attr']['AXIS-X']) && $g['attr']['AXIS-X']) { $xaxis = strtolower($g['attr']['AXIS-X']); }
100 if (!in_array($xaxis,array('text','lin','linear','log'))) { $xaxis = 'text'; } // Default=text
101 if ($xaxis == 'linear') { $xaxis = 'lin'; }
102
103 if (isset($g['attr']['AXIS-Y']) && $g['attr']['AXIS-Y']) { $yaxis = strtolower($g['attr']['AXIS-Y']); }
104 if (!in_array($yaxis,array('lin','linear','log','percent'))) { $yaxis = 'lin'; } // Default=lin
105 if ($yaxis == 'percent') { $show_percent = true; $yaxis = 'lin'; } // Show percent sign on scales
106 if ($yaxis == 'linear') { $yaxis = 'lin'; }
107
108 if ($splines) { $xaxis = 'lin'; }
109 $axes = $xaxis.$yaxis; // e.g.textlin, textlog, loglog, loglin, linlog (XY)
110
111 // mPDF 4.0
112 if (isset($g['attr']['cWIDTH']) && $g['attr']['cWIDTH']) { $w=($g['attr']['cWIDTH'] / 0.2645); } // pixels
113 if (isset($g['attr']['cHEIGHT']) && $g['attr']['cHEIGHT']) { $h=($g['attr']['cHEIGHT'] / 0.2645); }
114
115
116 if (isset($g['attr']['SERIES']) && strtolower($g['attr']['SERIES']) == 'rows') { $dataseries = 'rows'; }
117 else { $dataseries = 'cols'; }
118
119 // Defaults - define data
120 $rowbegin = 2;
121 $colbegin = 2;
122 if($type=='scatter' || $type=='xy') {
123 if ($dataseries == 'rows') { $rowbegin = 1; }
124 else { $colbegin = 1; }
125 }
126 $rowend = 0;
127 $colend = 0;
128
129 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']; }
130
131 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']; }
132
133 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']; }
134 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']; }
135
136 $nr = count($g['data']);
137 $nc = 0;
138 foreach($g['data'] AS $r) {
139 $cc=0;
140 foreach($r AS $c) { $cc++; }
141 $nc = max($nc,$cc);
142 }
143 if ($colend == 0) { $colend = $nc; }
144 else if ($colend < 0) { $colend = $nc+$colend; }
145
146 if ($rowend == 0) { $rowend = $nr; }
147 else if ($rowend < 0) { $rowend = $nr+$rowend; }
148
149 if ($colend < $colbegin) { $colend = $colbegin; }
150 if ($rowend < $rowbegin) { $rowend = $rowbegin; }
151
152// if ($type == 'xy' || $type=='scatter') { $colstart=0; }
153
154 // Get Data + Totals
155 $data = array();
156 $totals = array();
157 for ($r=($rowbegin-1);$r<$rowend;$r++) {
158 for ($c=($colbegin-1);$c<$colend;$c++) {
159 if (isset($g['data'][$r][$c])) { $g['data'][$r][$c] = floatval($g['data'][$r][$c] ); }
160 else { $g['data'][$r][$c] = 0; }
161 if ($dataseries=='rows') {
162 $data[($r+1-$rowbegin)][($c+1-$colbegin)] = $g['data'][$r][$c] ;
163 $totals[($r+1-$rowbegin)] += $g['data'][$r][$c] ;
164 }
165 else {
166 $data[($c+1-$colbegin)][($r+1-$rowbegin)] = $g['data'][$r][$c] ;
167 if (isset($totals[($c+1-$colbegin)])) { $totals[($c+1-$colbegin)] += $g['data'][$r][$c] ; }
168 else { $totals[($c+1-$colbegin)] = $g['data'][$r][$c] ; }
169 }
170 }
171 }
172 // PERCENT
173 if ($percent && $type != 'pie' && $type != 'pie3d') {
174 for ($r=0;$r<count($data);$r++) {
175 for ($c=0;$c<count($data[$r]);$c++) {
176 $data[$r][$c] = $data[$r][$c]/$totals[$r] * 100;
177 }
178 }
179 }
180 // Get Legends and labels
181 $legends = array();
182 $labels = array();
183 $longestlegend = 0;
184 $longestlabel = 0;
185 if ($dataseries=='cols') {
186 if ($colbegin>1) {
187 for ($r=($rowbegin-1);$r<$rowend;$r++) {
188 $legends[($r+1-$rowbegin)] = $g['data'][$r][0] ;
189 $longestlegend = max($longestlegend, strlen( $g['data'][$r][0] ));
190 }
191 }
192 if ($rowbegin>1) {
193 for ($c=($colbegin-1);$c<$colend;$c++) {
194 $labels[($c+1-$colbegin)] = $g['data'][0][$c] ;
195 $longestlabel = max($longestlabel , strlen( $g['data'][0][$c] ));
196 }
197 }
198 }
199 else if ($dataseries=='rows') {
200 if ($colbegin>1) {
201 for ($r=($rowbegin-1);$r<$rowend;$r++) {
202 $labels[($r+1-$rowbegin)] = $g['data'][$r][0] ;
203 $longestlabel = max($longestlabel , strlen( $g['data'][$r][0] ));
204 }
205 }
206 if ($rowbegin>1) {
207 for ($c=($colbegin-1);$c<$colend;$c++) {
208 $legends[($c+1-$colbegin)] = $g['data'][0][$c] ;
209 $longestlegend = max($longestlegend, strlen( $g['data'][0][$c] ));
210 }
211 }
212 }
213 // Default sizes
214 $defsize = array();
215 $defsize['pie'] = array('w' => 600, 'h' => 300);
216 $defsize['pie3d'] = array('w' => 600, 'h' => 300);
217 $defsize['radar'] = array('w' => 600, 'h' => 300);
218 $defsize['line'] = array('w' => 600, 'h' => 400);
219 $defsize['xy'] = array('w' => 600, 'h' => 400);
220 $defsize['scatter'] = array('w' => 600, 'h' => 400);
221 $defsize['bar'] = array('w' => 600, 'h' => 400);
222 $defsize['horiz_bar'] = array('w' => 600, 'h' => 500);
223
224
225 // Use default ratios
226 if ($w && !$h) { $h = $w*$defsize[$type]['h']/$defsize[$type]['w']; }
227 if ($h && !$w) { $w = $h*$defsize[$type]['w']/$defsize[$type]['h']; }
228 if (!$h && !$w) { $w = $defsize[$type]['w']; $h = $defsize[$type]['h']; }
229
230
231 if (count($data)>0 && $type) {
232 $figure_file = "graph_cache/".rand(11111,999999999).".".$img_type;
233 if ($bandw) { $colours = array('snow1','black','snow4','snow3','snow2','cadetblue4','cadetblue3','cadetblue1','bisque4','bisque2','beige'); }
234 else { $colours = array('cyan','darkorchid4','cadetblue3','khaki1','darkolivegreen2','cadetblue4','coral','cyan4','rosybrown3','wheat1'); }
235 $fills = array('navy','orange','red','yellow','purple','navy','orange','red','yellow','purple');
236 $patterns = array(PATTERN_DIAG1,PATTERN_CROSS1,PATTERN_STRIPE1,PATTERN_DIAG3,PATTERN_CROSS2,PATTERN_DIAG2,PATTERN_DIAG4,PATTERN_CROSS3, PATTERN_CROSS4,PATTERN_STRIPE1);
237 $markers = array(MARK_DIAMOND, MARK_SQUARE, MARK_CIRCLE, MARK_UTRIANGLE, MARK_DTRIANGLE, MARK_FILLEDCIRCLE, MARK_CROSS, MARK_STAR, MARK_X);
238
239 // LEGENDS
240 if ($type == 'pie' || $type == 'pie3d') {
241 $graph = new PieGraph (($w*$k),($h*$k));
242 }
243 else if ($type == 'radar') {
244 $graph = new RadarGraph(($w*$k),($h*$k));
245 }
246 else {
247 $graph = new Graph(($w*$k),($h*$k));
248 }
249
250// mPDF 4.5.009
251// $graph->img->SetImgFormat($img_type) ;
252// if (strtoupper($img_type)=='JPEG') { $graph->img->SetQuality(90); }
253 if ($antialias) { $graph->img->SetAntiAliasing(); }
254 $graph->SetShadow(true, 2*$k);
255 $graph->SetMarginColor("white");
256 // TITLE
257 $graph->title->Set($title);
258 $graph->title->SetMargin(10*$k);
259 $graph->title->SetFont(FF_USERFONT,FS_BOLD,11*$k);
260 $graph->title->SetColor("black");
261 $graph->legend->SetLineSpacing(3*$k);
262 $graph->legend->SetMarkAbsSize(6*$k);
263 $graph->legend->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
264
265 // Set GRAPH IMAGE MARGINS
266 if ($type == 'pie' || $type == 'pie3d') {
267 $psize = 0.3;
268 $pposxabs = ($w/2);
269 $pposy = 0.55;
270 if ($longestlegend) { // if legend showing
271 $pposxabs -= ((($longestlegend * 5) + 20) / 2);
272 }
273 $pposx = ($pposxabs / $w);
274 $graph->legend->Pos(0.02,0.5,'right','center');
275 }
276 else if ($type == 'radar') {
277 $psize = 0.5;
278 $pposxabs = ($w/2);
279 $pposy = 0.55;
280 if ($longestlabel) { // if legend showing
281 $pposxabs -= ((($longestlabel * 5) + 20) / 2);
282 }
283 $pposx = ($pposxabs / $w);
284 $graph->legend->Pos(0.02,0.5,'right','center');
285 }
286 else if ($type == 'xy' || $type == 'scatter') {
287 $pml = 50;
288 $pmr = 20;
289 $pmt = 60;
290 $pmb = 50;
291 $xaxislblmargin = $pmb - 30;
292 $yaxislblmargin = $pml - 15;
293 $graph->legend->Pos(0.02,0.1,'right','top');
294 }
295 else if ($type == 'line' || $type == 'bar') {
296 $pml = 50;
297 $pmr = 20;
298 $pmt = 60;
299 $pmb = 50;
300 $xlangle = 0;
301 $ll = ($longestlegend * 5); // 45 degrees 8pt fontsize
302 if ($ll > 5 || ($ll>3 && count($data)>10)) {
303 $pmb = max($pmb, $ll + 30);
304 $xlangle = 50;
305 }
306 $xaxislblmargin = $pmb - 30;
307 $yaxislblmargin = $pml - 15;
308 if ($longestlabel && !$overlap) { // if legend showing
309 $pmr = ((($longestlabel * 5) + 40));
310 }
311 $graph->legend->Pos(0.02,0.1,'right','top');
312 }
313 else if ($type == 'horiz_bar') {
314 $pml = 50;
315 $pmr = 20;
316 $pmt = 50;
317 $pmb = 45;
318 $ll = ($longestlegend * 6.5); // 8pt fontsize
319 $pml = max($pml, $ll + 20);
320 $xaxislblmargin = $pml - 20;
321 $yaxislblmargin = $pmb - 15;
322 if ($longestlabel && !$overlap) { // if legend showing
323 $pmr = ((($longestlabel * 5) + 40));
324 }
325 $graph->legend->Pos(0.02,0.1,'right','top');
326 }
327
328
329 // DRAW THE GRAPHS
330 if ($type == 'pie') {
331 $p1 = new PiePlot($data[0]);
332 $p1->SetSliceColors($colours);
333
334 if ($show_values) {
335 $p1->value->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
336 if ($percent) { $p1->SetLabelType(PIE_VALUE_PERADJ); } //PIE_VAL_PER = default
337 else { $p1->SetLabelType(PIE_VALUE_ABS); }
338 if ($percent || $show_percent) { $p1->value->SetFormat("%d%%"); }
339 else { $p1->value->SetFormat("%s"); }
340 // Enable and set policy for guide-lines. Make labels line up vertically
341 $p1->SetGuideLines(true);
342 $p1->SetGuideLinesAdjust(1.5);
343 }
344 else { $p1->value->Show(false); }
345 $p1->SetLegends($legends);
346 $p1->SetSize($psize);
347 $p1->SetCenter($pposx, $pposy);
348 if ($labels[0]) {
349 $graph->subtitle->Set($labels[0]);
350 $graph->subtitle->SetMargin(10*$k);
351 $graph->subtitle->SetFont(FF_USERFONT,FS_BOLD,11*$k);
352 $graph->subtitle->SetColor("black");
353 }
354 $graph->Add($p1);
355 }
356 else if ($type == 'pie3d') {
357 $p1 = new PiePlot3d($data[0]);
358 $p1->SetSliceColors($colours);
359 if ($show_values) {
360 $p1->value->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
361 if ($percent) { $p1->SetLabelType(PIE_VALUE_PERADJ); } //PIE_VAL_PER = default
362 else { $p1->SetLabelType(PIE_VALUE_ABS); }
363 if ($percent || $show_percent) { $p1->value->SetFormat("%d%%"); }
364 else { $p1->value->SetFormat("%s"); }
365 }
366 else { $p1->value->Show(false); }
367 $p1->SetLegends($legends);
368 $p1->SetEdge();
369 $p1->SetSize($psize);
370 $p1->SetCenter($pposx, $pposy);
371
372 if ($labels[0]) {
373 $graph->subtitle->Set($labels[0]);
374 $graph->subtitle->SetMargin(10*$k);
375 $graph->subtitle->SetFont(FF_USERFONT,FS_BOLD,11*$k);
376 $graph->subtitle->SetColor("black");
377 }
378
379 $graph->Add( $p1);
380 }
381 // RADAR
382 else if ($type == 'radar') {
383 $graph->SetSize($psize);
384 $graph->SetPos($pposx, $pposy);
385
386 $graph->SetTitles( $legends); // labels each axis
387
388 $graph->axis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
389 $graph->axis->title->SetMargin(5*$k);
390 $graph->axis->SetWeight(1*$k);
391 $graph->axis->HideLabels();
392 $graph->axis->SetFont(FF_USERFONT,FS_NORMAL,6*$k);
393 $graph->HideTickMarks();
394
395 $group = array();
396 foreach($data AS $series => $dat) {
397 $rdata = array();
398 foreach($data[$series] AS $row) { $rdata[] = $row; }
399 if (count($rdata)<3) { die("ERROR::Graph::Cannot create a Radar Plot with less than 3 data points."); }
400 // Create the radar plot
401 $bplot = new RadarPlot($rdata);
402 $bplot->mark->SetType($markers[$series]);
403 $bplot->mark->SetFillColor($colours[$series]);
404 $bplot->mark->SetWidth(3*$k);
405 $bplot->SetColor($colours[$series]);
406 if ($series == 0) { $bplot->SetFillColor('lightred'); }
407 else { $bplot->SetFill(false); }
408 $bplot->SetLineWeight(1*$k);
409 $bplot->SetLegend($labels[$series]);
410 if ($bandw) { $bplot->SetShadow("gray5"); }
411 $graph->Add($bplot);
412 }
413 }
414 // LINE
415 else if ($type == 'line') {
416 // Setup the graph.
417 $graph->img->SetMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k); // LRTB
418 $graph->SetScale($axes);
419 $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
420
421 if ($ylabel) {
422 $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
423 $graph->yaxis->SetTitle($ylabel,'middle');
424 $graph->yaxis->SetTitleMargin($yaxislblmargin*$k);
425 }
426
427 $graph->yaxis->SetLabelMargin(4*$k);
428 if ($percent || $show_percent) { $graph->yaxis->SetLabelFormat('%d%%'); } // Percent
429
430 // Show 0 label on Y-axis (default is not to show)
431 $graph->yscale->ticks->SupressZeroLabel(true);
432 if ($hide_y_axis) { $graph->yaxis->Hide(); }
433 if ($hide_grid) { $graph->ygrid->Show(false); }
434
435 // Setup X-axis labels
436 $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
437 $graph->xaxis->SetTickLabels($legends);
438 $graph->xaxis->SetLabelAngle($xlangle);
439 $graph->xaxis->SetLabelMargin(4*$k);
440 // X-axis title
441 if ($xlabel) {
442 $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
443 $graph->xaxis->SetTitle($xlabel,'middle');
444 $graph->xaxis->SetTitleMargin($xaxislblmargin*$k);
445 }
446 foreach($data AS $series => $rdata) {
447 $bplot = new LinePlot($rdata);
448 $bplot->mark->SetType($markers[$series]);
449 $bplot->mark->SetFillColor($colours[$series]);
450 $bplot->mark->SetWidth(4*$k);
451 if ($show_values) {
452 $bplot->value-> Show(); // Not if scatter
453 $bplot->value->SetMargin(6*$k);
454 $bplot->value->SetColor("darkred");
455 $bplot->value->SetFont( FF_USERFONT, FS_NORMAL, 8*$k);
456 if ($percent || $show_percent) { $bplot->value->SetFormat( '%d%%'); }
457 else { $bplot->value->SetFormat("%s"); }
458 }
459 // Set color for each line
460 $bplot->SetColor($colours[$series]);
461 $bplot->SetWeight(2*$k);
462 $bplot->SetLegend($labels[$series]);
463 if ($bandw) { $bplot->SetShadow("gray5"); }
464 // Indent the X-scale so the first and last point doesn't fall on the edges
465 $bplot->SetCenter();
466 $graph->Add($bplot);
467 }
468
469 }
470 // XY or SCATTER
471 else if ($type == 'xy' || $type == 'scatter') {
472 // Setup the graph.
473 $graph->img->SetMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k); // LRTB
474 $graph->SetScale($axes);
475 // Setup font for axis
476 $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
477 // Y-axis title
478 if ($labels[1]) {
479 $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
480 $graph->yaxis->SetTitleMargin($yaxislblmargin*$k);
481 $graph->yaxis->SetTitle($labels[1],'middle');
482 }
483
484
485 $graph->yaxis->SetLabelMargin(4*$k);
486 if ($percent || $show_percent) { $graph->yaxis->SetLabelFormat('%d%%'); } // Percent
487
488 // Show 0 label on Y-axis (default is not to show)
489 $graph->yscale->ticks->SupressZeroLabel(true);
490 // Just let the maximum be autoscaled
491 $graph->yaxis->scale->SetAutoMin(0);
492 if ($hide_y_axis) { $graph->yaxis->Hide(); }
493 if ($hide_grid) { $graph->ygrid->Show(false); }
494
495 // Setup X-axis labels
496 $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
497// mPDF 2.5 Corrects labelling of x-axis
498// $graph->xaxis->SetTickLabels($legends);
499 $graph->xaxis->SetLabelAngle(50);
500 $graph->xaxis->SetLabelMargin(4*$k);
501 // X-axis title
502 if ($labels[0]) {
503 $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
504 $graph->xaxis->SetTitleMargin($xaxislblmargin*$k);
505 $graph->xaxis->SetTitle($labels[0],'middle');
506 }
507
508 // Create the bar plot
509 // SPLINES
510 if ($splines && $type=='xy') {
511 $spline = new Spline($data[0],$data[1]);
512 list($newx,$newy) = $spline->Get(100);
513 }
514 else {
515 $newx = $data[0];
516 $newy = $data[1];
517 }
518
519 if ($type=='xy') {
520 // LINE PLOT
521 $bplot = new LinePlot($newy, $newx);
522 // Set color for each line
523 $bplot->SetColor($fills[0]);
524 $bplot->SetWeight(4*$k);
525 if ($bandw) { $bplot->SetShadow("gray5"); }
526 $graph->Add($bplot);
527 }
528
529 // SCATTER PLOT
530 $cplot = new ScatterPlot($data[1], $data[0]);
531
532 $cplot->mark->SetType($markers[0]);
533 $cplot->mark->SetFillColor($fills[0]);
534 $cplot->mark->SetWidth(8*$k);
535 if ($show_values) {
536// mPDF 2.5
537 if ($type=='xy') { $cplot->value->Show(); } // Not if scatter
538 $cplot->value->SetMargin(8*$k);
539 $cplot->value->SetColor("darkred");
540 $cplot->value->SetFont( FF_USERFONT, FS_NORMAL, 6*$k);
541
542 if ($percent || $show_percent) { $cplot->value->SetFormat( '%d%%'); }
543 else { $cplot->value->SetFormat("%s"); }
544 }
545
546 // Set color for each line
547 $cplot->SetColor($fills[0]);
548 $cplot->SetWeight(4*$k);
549 if ($bandw) { $cplot->SetShadow("gray5"); }
550 $graph->Add($cplot);
551
552 }
553 // BAR
554 else if ($type == 'bar') {
555 // Setup the graph.
556 $graph->img->SetMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k); // LRTB
557 $graph->SetScale($axes);
558 // Setup y-axis
559 $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
560 if ($hide_y_axis) { $graph->yaxis->Hide(); }
561 if ($hide_grid) { $graph->ygrid->Show(false); }
562 $graph->yaxis->SetLabelMargin(4*$k);
563 if ($ylabel) {
564 $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
565 $graph->yaxis->SetTitle($ylabel,'middle');
566 $graph->yaxis->SetTitleMargin($yaxislblmargin*$k);
567 }
568 // Show 0 label on Y-axis (default is not to show)
569 $graph->yscale->ticks->SupressZeroLabel(false);
570 // Setup X-axis labels
571 $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
572 $graph->xaxis->SetTickLabels($legends);
573 $graph->xaxis->SetLabelAngle($xlangle);
574 $graph->xaxis->SetLabelMargin(4*$k);
575 // X-axis title
576 if ($xlabel) {
577 $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
578 $graph->xaxis->SetTitle($xlabel,'middle');
579 $graph->xaxis->SetTitleMargin($xaxislblmargin*$k);
580 }
581
582 $group = array();
583 foreach($data AS $series => $dat) {
584 $rdata = array();
585 foreach($data[$series] AS $row) { $rdata[] = $row; }
586
587 // Create the bar plot
588 $bplot = new BarPlot($rdata);
589 $bplot->SetWidth(0.6); // for SINGLE??
590 // Setup color for gradient fill style
591 if ($bandw) { $bplot->SetPattern( $patterns[$series]); }
592 else { $bplot->SetFillGradient($fills[$series],"#EEEEEE",GRAD_LEFT_REFLECTION); }
593
594 // Set color for the frame of each bar
595 $bplot->SetColor("darkgray");
596 $bplot->SetLegend($labels[$series]);
597 if ($bandw) { $bplot->SetShadow("gray5"); }
598 if ($show_values) {
599 $bplot->value->Show();
600 $bplot->value->SetMargin(6*$k);
601 $bplot->value->SetColor("darkred");
602 $bplot->value->SetFont( FF_USERFONT, FS_NORMAL, 8*$k);
603 if ($percent || $show_percent) { $bplot->value->SetFormat( '%d%%'); }
604 else { $bplot->value->SetFormat("%s"); }
605 }
606
607 $group[] = $bplot;
608 }
609 if (count($data)==1) {
610 $graph->Add($group[0]);
611 }
612 else {
613 // Create the grouped bar plot
614 if ($stacked) {
615 $gbplot = new AccBarPlot ($group);
616 }
617 else {
618 $gbplot = new GroupBarPlot ($group);
619 }
620 $graph->Add($gbplot);
621 }
622 }
623 else if ($type == 'horiz_bar') {
624 $graph->SetScale($axes);
625 $graph->Set90AndMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k); // LRTB
626
627 // Setup y-axis
628 $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
629 $graph->yaxis->SetLabelMargin(4*$k);
630
631 $graph->yaxis->SetPos('max'); // Intersect at top of x-axis i.e. y axis is at bottom
632 // First make the labels look right
633 $graph->yaxis->SetLabelAlign('center','top');
634 if ($percent || $show_percent) { $graph->yaxis->SetLabelFormat('%d%%'); }
635 $graph->yaxis->SetLabelSide(SIDE_RIGHT);
636 $graph->yaxis->scale->SetGrace(10); // sets 10% headroom
637 if ($hide_y_axis) { $graph->yaxis->Hide(); }
638 if ($hide_grid) { $graph->ygrid->Show(false); }
639
640 // The fix the tick marks
641 $graph->yaxis->SetTickSide(SIDE_LEFT);
642 if ($ylabel) {
643 $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
644 $graph->yaxis->SetTitle($ylabel,'middle');
645 $graph->yaxis->SetTitleMargin($yaxislblmargin*$k);
646 // Finally setup the title
647 $graph->yaxis->SetTitleSide(SIDE_RIGHT);
648 // To align the title to the right use :
649 $graph->yaxis->title->Align('right');
650 $graph->yaxis->title->SetAngle(0);
651
652 }
653
654 // Show 0 label on Y-axis (default is not to show)
655 $graph->yscale->ticks->SupressZeroLabel(false);
656 // Setup X-axis labels
657 $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
658 $graph->xaxis->title->SetAngle(90);
659 $graph->xaxis->SetTickLabels($legends);
660 $graph->xaxis->SetLabelMargin(4*$k);
661 // X-axis title
662 if ($xlabel) {
663 $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
664 $graph->xaxis->SetTitleMargin($xaxislblmargin*$k);
665 $graph->xaxis->SetTitle($xlabel,'middle');
666 }
667 $group = array();
668 foreach($data AS $series => $dat) {
669 $rdata = array();
670 foreach($data[$series] AS $row) { $rdata[] = $row; }
671 // Create the bar pot
672 $bplot = new BarPlot($rdata);
673 $bplot->SetWidth(0.6); // for SINGLE??
674 // Setup color for gradient fill style
675 if ($bandw) { $bplot->SetPattern( $patterns[$series]); }
676 else { $bplot->SetFillGradient($fills[$series],"#EEEEEE",GRAD_LEFT_REFLECTION); }
677
678 // Set color for the frame of each bar
679 $bplot->SetColor("darkgray");
680 $bplot->SetLegend($labels[$series]);
681 if ($bandw) { $bplot->SetShadow("gray5"); }
682 if ($show_values) {
683 $bplot->value-> Show();
684 $bplot->value->SetMargin(6*$k);
685 $bplot->value->SetColor("darkred");
686 $bplot->value->SetFont( FF_USERFONT, FS_NORMAL, 8*$k);
687 if ($percent || $show_percent) { $bplot->value->SetFormat( '%d%%'); }
688 else { $bplot->value->SetFormat("%s"); }
689 }
690
691 $group[] = $bplot;
692 }
693 if (count($data)==1) {
694 $graph->Add($group[0]);
695 }
696 else {
697 // Create the grouped bar plot
698 if ($stacked) {
699 $gbplot = new AccBarPlot ($group);
700 }
701 else {
702 $gbplot = new GroupBarPlot ($group);
703 }
704 $graph->Add($gbplot);
705 }
706 }
707 if ($graph) {
708 $graph->Stroke( _MPDF_PATH.$figure_file);
709 $srcpath = str_replace("\\","/",dirname(__FILE__)) . "/";
710 $srcpath .= $figure_file;
711 return array('file'=>$srcpath, 'w'=>$w, 'h'=>$h);
712 }
713 }
714 return false;
715}
716//======================================================================================================
717//======================================================================================================
718//======================================================================================================
719//======================================================================================================
720
721?> \ 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
index 41234966..00000000
--- a/inc/3rdparty/libraries/mpdf/graph_cache/dummy.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1This is just a placeholder file so that the folder is created on install.
2It 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
index 0d06cd5f..00000000
--- a/inc/3rdparty/libraries/mpdf/iccprofiles/SWOP2006_Coated5v2.icc
+++ /dev/null
Binary files 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
index d0ef5738..00000000
--- a/inc/3rdparty/libraries/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc
+++ /dev/null
Binary files differ
diff --git a/inc/3rdparty/libraries/mpdf/includes/CJKdata.php b/inc/3rdparty/libraries/mpdf/includes/CJKdata.php
deleted file mode 100644
index 84230529..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/CJKdata.php
+++ /dev/null
@@ -1,101 +0,0 @@
1<?php
2// mPDF 2.5
3
4// BIG 5
5$cw = array(
6 32 => 250, 33 => 250, 34 => 408, 35 => 668, 36 => 490, 37 => 875, 38 => 698, 39 => 250, 40 => 240, 41 => 240,
7 42 => 417, 43 => 667, 44 => 250, 45 => 313, 46 => 250, 47 => 520, 48 => 500, 49 => 500, 50 => 500, 51 => 500,
8 52 => 500, 53 => 500, 54 => 500, 55 => 500, 56 => 500, 57 => 500, 58 => 250, 59 => 250, 60 => 667, 61 => 667,
9 62 => 667, 63 => 396, 64 => 921, 65 => 677, 66 => 615, 67 => 719, 68 => 760, 69 => 625, 70 => 552, 71 => 771,
10 72 => 802, 73 => 354, 74 => 354, 75 => 781, 76 => 604, 77 => 927, 78 => 750, 79 => 823, 80 => 563, 81 => 823,
11 82 => 729, 83 => 542, 84 => 698, 85 => 771, 86 => 729, 87 => 948, 88 => 771, 89 => 677, 90 => 635, 91 => 344,
12 92 => 520, 93 => 344, 94 => 469, 95 => 500, 96 => 250, 97 => 469, 98 => 521, 99 => 427, 100 => 521, 101 => 438,
13 102 => 271, 103 => 469, 104 => 531, 105 => 250, 106 => 250, 107 => 458, 108 => 240, 109 => 802, 110 => 531, 111 => 500,
14 112 => 521, 113 => 521, 114 => 365, 115 => 333, 116 => 292, 117 => 521, 118 => 458, 119 => 677, 120 => 479, 121 => 458,
15 122 => 427, 123 => 480, 124 => 496, 125 => 480, 126 => 667,
16 17601 => 500,
17);
18$this->Big5_widths=$cw;
19
20
21// GB
22$cw = array(
23 32 => 207, 33 => 270, 34 => 342, 35 => 467, 36 => 462, 37 => 797, 38 => 710, 39 => 239, 40 => 374, 41 => 374,
24 42 => 423, 43 => 605, 44 => 238, 45 => 375, 46 => 238, 47 => 334, 48 => 462, 49 => 462, 50 => 462, 51 => 462,
25 52 => 462, 53 => 462, 54 => 462, 55 => 462, 56 => 462, 57 => 462, 58 => 238, 59 => 238, 60 => 605, 61 => 605,
26 62 => 605, 63 => 344, 64 => 748, 65 => 684, 66 => 560, 67 => 695, 68 => 739, 69 => 563, 70 => 511, 71 => 729,
27 72 => 793, 73 => 318, 74 => 312, 75 => 666, 76 => 526, 77 => 896, 78 => 758, 79 => 772, 80 => 544, 81 => 772,
28 82 => 628, 83 => 465, 84 => 607, 85 => 753, 86 => 711, 87 => 972, 88 => 647, 89 => 620, 90 => 607, 91 => 374,
29 92 => 333, 93 => 374, 94 => 606, 95 => 500, 96 => 239, 97 => 417, 98 => 503, 99 => 427, 100 => 529, 101 => 415,
30 102 => 264, 103 => 444, 104 => 518, 105 => 241, 106 => 230, 107 => 495, 108 => 228, 109 => 793, 110 => 527, 111 => 524,
31 112 => 524, 113 => 504, 114 => 338, 115 => 336, 116 => 277, 117 => 517, 118 => 450, 119 => 652, 120 => 466, 121 => 452,
32 122 => 407, 123 => 370, 124 => 258, 125 => 370, 126 => 605,
33);
34$this->GB_widths=$cw;
35
36// Japanese
37$cw = array(
38 32 => 278, 33 => 299, 34 => 353, 35 => 614, 36 => 614, 37 => 721, 38 => 735, 39 => 216, 40 => 323, 41 => 323,
39 42 => 449, 43 => 529, 44 => 219, 45 => 306, 46 => 219, 47 => 453, 48 => 614, 49 => 614, 50 => 614, 51 => 614,
40 52 => 614, 53 => 614, 54 => 614, 55 => 614, 56 => 614, 57 => 614, 58 => 219, 59 => 219, 60 => 529, 61 => 529,
41 62 => 529, 63 => 486, 64 => 744, 65 => 646, 66 => 604, 67 => 617, 68 => 681, 69 => 567, 70 => 537, 71 => 647,
42 72 => 738, 73 => 320, 74 => 433, 75 => 637, 76 => 566, 77 => 904, 78 => 710, 79 => 716, 80 => 605, 81 => 716,
43 82 => 623, 83 => 517, 84 => 601, 85 => 690, 86 => 668, 87 => 990, 88 => 681, 89 => 634, 90 => 578, 91 => 316,
44 92 => 614, 93 => 316, 94 => 529, 95 => 500, 96 => 387, 97 => 509, 98 => 566, 99 => 478, 100 => 565, 101 => 503,
45 102 => 337, 103 => 549, 104 => 580, 105 => 275, 106 => 266, 107 => 544, 108 => 276, 109 => 854, 110 => 579, 111 => 550,
46 112 => 578, 113 => 566, 114 => 410, 115 => 444, 116 => 340, 117 => 575, 118 => 512, 119 => 760, 120 => 503, 121 => 529,
47 122 => 453, 123 => 326, 124 => 380, 125 => 326, 126 => 387, 127 => 216, 128 => 453, 129 => 216, 130 => 380, 131 => 529,
48 132 => 299, 133 => 614, 134 => 614, 135 => 265, 136 => 614, 137 => 475, 138 => 614, 139 => 353, 140 => 451, 141 => 291,
49 142 => 291, 143 => 588, 144 => 589, 145 => 500, 146 => 476, 147 => 476, 148 => 219, 149 => 494, 150 => 452, 151 => 216,
50 152 => 353, 153 => 353, 154 => 451, 156 => 1075, 157 => 486, 158 => 387, 159 => 387, 160 => 387, 161 => 387,
51 162 => 387, 163 => 387, 164 => 387, 165 => 387, 166 => 387, 167 => 387, 168 => 387, 170 => 880, 171 => 448,
52 172 => 566, 173 => 716, 174 => 903, 175 => 460, 176 => 805, 177 => 275, 178 => 276, 179 => 550, 180 => 886, 181 => 582,
53 182 => 529, 183 => 738, 184 => 529, 185 => 738, 186 => 357, 187 => 529, 188 => 406, 189 => 406, 190 => 575, 191 => 406,
54 192 => 934, 193 => 934, 194 => 934, 195 => 646, 196 => 646, 197 => 646, 198 => 646, 199 => 646, 200 => 646, 201 => 617,
55 202 => 567, 203 => 567, 204 => 567, 205 => 567, 206 => 320, 207 => 320, 208 => 320, 209 => 320, 210 => 681, 211 => 710,
56 212 => 716, 213 => 716, 214 => 716, 215 => 716, 216 => 716, 217 => 529, 218 => 690, 219 => 690, 220 => 690, 221 => 690,
57 222 => 634, 223 => 605, 224 => 509, 225 => 509, 226 => 509, 227 => 509, 228 => 509, 229 => 509, 230 => 478, 231 => 503,
58 232 => 503, 233 => 503, 234 => 503, 235 => 275, 236 => 275, 237 => 275, 238 => 275, 239 => 550, 240 => 579, 241 => 550,
59 242 => 550, 243 => 550, 244 => 550, 245 => 550, 246 => 529, 247 => 575, 248 => 575, 249 => 575, 250 => 575, 251 => 529,
60 252 => 578, 253 => 529, 254 => 517, 255 => 634, 256 => 578, 257 => 445, 258 => 444, 259 => 842, 260 => 453, 261 => 614,
61);
62
63
64$_cr = array(
65 array(231, 632, 500), // half-width
66 array(8718, 8718, 500),
67 array(9738, 9757, 250), // quarter-width
68 array(9758, 9778, 333), // third-width
69 array(12063, 12087, 500),
70);
71foreach($_cr as $_r) {
72 for($i = $_r[0]; $i <= $_r[1]; $i++) {
73 $cw[$i+31] = $_r[2];
74 }
75}
76$this->SJIS_widths=$cw;
77
78// Korean
79$cw = array(
80 32 => 333, 33 => 416, 34 => 416, 35 => 833, 36 => 625, 37 => 916, 38 => 833, 39 => 250, 40 => 500, 41 => 500,
81 42 => 500, 43 => 833, 44 => 291, 45 => 450, 46 => 291, 47 => 375, 48 => 625, 49 => 625, 50 => 625, 51 => 625,
82 52 => 625, 53 => 625, 54 => 625, 55 => 625, 56 => 625, 57 => 625, 58 => 333, 59 => 333, 60 => 833, 61 => 833,
83 62 => 916, 63 => 500, 64 => 1000, 65 => 791, 66 => 708, 67 => 708, 68 => 750, 69 => 708, 70 => 666, 71 => 750,
84 72 => 791, 73 => 375, 74 => 500, 75 => 791, 76 => 666, 77 => 916, 78 => 791, 79 => 750, 80 => 666, 81 => 750,
85 82 => 708, 83 => 666, 84 => 791, 85 => 791, 86 => 750, 87 => 1000, 88 => 708, 89 => 708, 90 => 666, 91 => 500,
86 92 => 375, 93 => 500, 94 => 500, 95 => 500, 96 => 333, 97 => 541, 98 => 583, 99 => 541, 100 => 583, 101 => 583,
87 102 => 375, 103 => 583, 104 => 583, 105 => 291, 106 => 333, 107 => 583, 108 => 291, 109 => 875, 110 => 583, 111 => 583,
88 112 => 583, 113 => 583, 114 => 458, 115 => 541, 116 => 375, 117 => 583, 118 => 583, 119 => 833, 120 => 625, 121 => 625,
89 122 => 500, 123 => 583, 124 => 583, 125 => 583, 126 => 750,
90);
91$_cr = array(
92 array(8094, 8190, 500)
93);
94foreach($_cr as $_r) {
95 for($i = $_r[0]; $i <= $_r[1]; $i++) {
96 $cw[$i+31] = $_r[2];
97 }
98}
99$this->UHC_widths=$cw;
100
101?> \ 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
index 78683af8..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/functions.php
+++ /dev/null
@@ -1,152 +0,0 @@
1<?php
2
3// mPDF 5.7
4// Replace a section of an array with the elements in reverse
5function array_splice_reverse(&$arr, $offset, $length) {
6 $tmp = (array_reverse(array_slice($arr, $offset, $length)));
7 array_splice($arr, $offset, $length, $tmp);
8}
9
10
11// mPDF 5.6.23
12function array_insert(&$array, $value, $offset) {
13 if (is_array($array)) {
14 $array = array_values($array);
15 $offset = intval($offset);
16 if ($offset < 0 || $offset >= count($array)) { array_push($array, $value); }
17 else if ($offset == 0) { array_unshift($array, $value); }
18 else {
19 $temp = array_slice($array, 0, $offset);
20 array_push($temp, $value);
21 $array = array_slice($array, $offset);
22 $array = array_merge($temp, $array);
23 }
24 }
25 else { $array = array($value); }
26 return count($array);
27}
28
29function urlencode_part($url) { // mPDF 5.6.02
30 if (!preg_match('/^[a-z]+:\/\//i',$url)) { return $url; }
31 $file=$url;
32 $query='';
33 if (preg_match('/[?]/',$url)) {
34 $bits = preg_split('/[?]/',$url,2);
35 $file=$bits[0];
36 $query='?'.$bits[1];
37 }
38 $file = str_replace(array(" ","!","$","&","'","(",")","*","+",",",";","="),array("%20","%21","%24","%26","%27","%28","%29","%2A","%2B","%2C","%3B","%3D"),$file);
39 return $file.$query;
40}
41
42
43function _strspn($str1, $str2, $start=null, $length=null) {
44 $numargs = func_num_args();
45 if ($numargs == 2) {
46 return strspn($str1, $str2);
47 }
48 else if ($numargs == 3) {
49 return strspn($str1, $str2, $start);
50 }
51 else {
52 return strspn($str1, $str2, $start, $length);
53 }
54}
55
56
57function _strcspn($str1, $str2, $start=null, $length=null) {
58 $numargs = func_num_args();
59 if ($numargs == 2) {
60 return strcspn($str1, $str2);
61 }
62 else if ($numargs == 3) {
63 return strcspn($str1, $str2, $start);
64 }
65 else {
66 return strcspn($str1, $str2, $start, $length);
67 }
68}
69
70function _fgets (&$h, $force=false) {
71 $startpos = ftell($h);
72 $s = fgets($h, 1024);
73 if ($force && preg_match("/^([^\r\n]*[\r\n]{1,2})(.)/",trim($s), $ns)) {
74 $s = $ns[1];
75 fseek($h,$startpos+strlen($s));
76 }
77 return $s;
78}
79
80
81// For PHP4 compatability
82if(!function_exists('str_ireplace')) {
83 function str_ireplace($search,$replace,$subject) {
84 $search = preg_quote($search, "/");
85 return preg_replace("/".$search."/i", $replace, $subject);
86 }
87}
88if(!function_exists('htmlspecialchars_decode')) {
89 function htmlspecialchars_decode ($str) {
90 return strtr($str, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));
91 }
92}
93
94function PreparePreText($text,$ff='//FF//') {
95 $text = htmlspecialchars($text);
96 if ($ff) { $text = str_replace($ff,'</pre><formfeed /><pre>',$text); }
97 return ('<pre>'.$text.'</pre>');
98}
99
100if(!function_exists('strcode2utf')){
101 function strcode2utf($str,$lo=true) {
102 //converts all the &#nnn; and &#xhhh; in a string to Unicode
103 // mPDF 5.7
104 if ($lo) {
105 $str = preg_replace_callback('/\&\#([0-9]+)\;/m', 'code2utf_lo_callback', $str);
106 $str = preg_replace_callback('/\&\#x([0-9a-fA-F]+)\;/m', 'codeHex2utf_lo_callback', $str);
107 }
108 else {
109 $str = preg_replace_callback('/\&\#([0-9]+)\;/m', 'code2utf_callback', $str);
110 $str = preg_replace_callback('/\&\#x([0-9a-fA-F]+)\;/m', 'codeHex2utf_callback', $str);
111 }
112 return $str;
113 }
114}
115function code2utf_callback($matches) {
116 return code2utf($matches[1], 0);
117}
118function code2utf_lo_callback($matches) {
119 return code2utf($matches[1], 1);
120}
121function codeHex2utf_callback($matches) {
122 return codeHex2utf($matches[1], 0);
123}
124function codeHex2utf_lo_callback($matches) {
125 return codeHex2utf($matches[1], 1);
126}
127
128if(!function_exists('code2utf')){
129 function code2utf($num,$lo=true){
130 //Returns the utf string corresponding to the unicode value
131 if ($num<128) {
132 if ($lo) return chr($num);
133 else return '&#'.$num.';';
134 }
135 if ($num<2048) return chr(($num>>6)+192).chr(($num&63)+128);
136 if ($num<65536) return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128);
137 if ($num<2097152) return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128);
138 return '?';
139 }
140}
141
142
143if(!function_exists('codeHex2utf')){
144 function codeHex2utf($hex,$lo=true){
145 $num = hexdec($hex);
146 if (($num<128) && !$lo) return '&#x'.$hex.';';
147 return code2utf($num,$lo);
148 }
149}
150
151
152?> \ 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
index f745de0e..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/ind_bn_1_001.volt.php
+++ /dev/null
@@ -1,3164 +0,0 @@
1<?php
2 $volt = array (
3 0 =>
4 array (
5 'match' => '0995 09CD 09B7',
6 'replace' => 'E002',
7 ),
8 1 =>
9 array (
10 'match' => '099C 09CD 099E',
11 'replace' => 'E003',
12 ),
13 2 =>
14 array (
15 'match' => '09CD 200D',
16 'replace' => '007E',
17 ),
18 3 =>
19 array (
20 'match' => '09CD 200C',
21 'replace' => '200C',
22 ),
23 4 =>
24 array (
25 'match' => '200D 09CD',
26 'replace' => '00D0',
27 ),
28 5 =>
29 array (
30 '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',
31 'replace' => '\\1 E1CD',
32 ),
33 6 =>
34 array (
35 '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',
36 'replace' => '\\1 E068',
37 ),
38 7 =>
39 array (
40 'match' => '((09BE|09C0|09C1|09C2|09C3|09C4|09CB|09CC|09D7|09BC)) 09CD 09B0',
41 'replace' => '\\1 E1CD',
42 ),
43 8 =>
44 array (
45 'match' => '((09BE|09C0|09C1|09C2|09C3|09C4|09CB|09CC|09D7|09BC)) 09B0 09CD',
46 'replace' => '\\1 E068',
47 ),
48 9 =>
49 array (
50 'match' => '(0020) 09CD 09B0',
51 'replace' => '\\1 E1CD',
52 ),
53 10 =>
54 array (
55 'match' => '(0020) 09B0 09CD',
56 'replace' => '\\1 E068',
57 ),
58 11 =>
59 array (
60 'match' => '(25CC) 09CD 09B0',
61 'replace' => '\\1 E1CD',
62 ),
63 12 =>
64 array (
65 'match' => '(25CC) 09B0 09CD',
66 'replace' => '\\1 E068',
67 ),
68 13 =>
69 array (
70 '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',
71 'replace' => '\\1 E03C',
72 ),
73 14 =>
74 array (
75 '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',
76 'replace' => '\\1 E03E',
77 ),
78 15 =>
79 array (
80 'match' => '((E045|E046|E047|E04A|E04B|E04C|E04D|E05F|E060|E061|E07C|E07D|E0B1|E0E8|E0E9|E11A|E11B|E163|E17B|E18D)) 09C1',
81 'replace' => '\\1 E03D',
82 ),
83 16 =>
84 array (
85 'match' => 'E068 0981',
86 'replace' => 'E069',
87 ),
88 17 =>
89 array (
90 'match' => '0995 09CD 0995',
91 'replace' => 'E06A',
92 ),
93 18 =>
94 array (
95 'match' => '0995 09CD 0996',
96 'replace' => 'E06B',
97 ),
98 19 =>
99 array (
100 'match' => '0995 09CD 099A',
101 'replace' => 'E06C',
102 ),
103 20 =>
104 array (
105 'match' => '0995 09CD 099B',
106 'replace' => 'E06D',
107 ),
108 21 =>
109 array (
110 'match' => '0995 09CD 099F',
111 'replace' => 'E06E',
112 ),
113 22 =>
114 array (
115 'match' => '0995 09CD 09A0',
116 'replace' => 'E06F',
117 ),
118 23 =>
119 array (
120 'match' => '0995 09CD 09A3',
121 'replace' => 'E070',
122 ),
123 24 =>
124 array (
125 'match' => '0995 09CD 09A4',
126 'replace' => 'E071',
127 ),
128 25 =>
129 array (
130 'match' => '0995 09CD 09A5',
131 'replace' => 'E072',
132 ),
133 26 =>
134 array (
135 'match' => '0995 09CD 09A8',
136 'replace' => 'E073',
137 ),
138 27 =>
139 array (
140 'match' => '0995 09CD 09AA',
141 'replace' => 'E074',
142 ),
143 28 =>
144 array (
145 'match' => '0995 09CD 09AB',
146 'replace' => 'E075',
147 ),
148 29 =>
149 array (
150 'match' => '0995 09CD 09AE',
151 'replace' => 'E076',
152 ),
153 30 =>
154 array (
155 'match' => '0995 09CD 09B2',
156 'replace' => 'E077',
157 ),
158 31 =>
159 array (
160 'match' => '0995 09CD 09AC',
161 'replace' => 'E078',
162 ),
163 32 =>
164 array (
165 'match' => '0995 09CD 09B6',
166 'replace' => 'E079',
167 ),
168 33 =>
169 array (
170 'match' => '0995 09CD 09B8',
171 'replace' => 'E07A',
172 ),
173 34 =>
174 array (
175 'match' => '0996 09CD 0996',
176 'replace' => 'E083',
177 ),
178 35 =>
179 array (
180 'match' => '0996 09CD 09A4',
181 'replace' => 'E084',
182 ),
183 36 =>
184 array (
185 'match' => '0996 09CD 09A8',
186 'replace' => 'E085',
187 ),
188 37 =>
189 array (
190 'match' => '0996 09CD 09AE',
191 'replace' => 'E086',
192 ),
193 38 =>
194 array (
195 'match' => '0996 09CD 09AC',
196 'replace' => 'E087',
197 ),
198 39 =>
199 array (
200 'match' => '0997 09CD 0997',
201 'replace' => 'E088',
202 ),
203 40 =>
204 array (
205 'match' => '0997 09CD 0998',
206 'replace' => 'E089',
207 ),
208 41 =>
209 array (
210 'match' => '0997 09CD 099C',
211 'replace' => 'E08A',
212 ),
213 42 =>
214 array (
215 'match' => '0997 09CD 099D',
216 'replace' => 'E08B',
217 ),
218 43 =>
219 array (
220 'match' => '0997 09CD 09A1',
221 'replace' => 'E08C',
222 ),
223 44 =>
224 array (
225 'match' => '0997 09CD 09A2',
226 'replace' => 'E08D',
227 ),
228 45 =>
229 array (
230 'match' => '0997 09CD 09A3',
231 'replace' => 'E08E',
232 ),
233 46 =>
234 array (
235 'match' => '0997 09CD 09A6',
236 'replace' => 'E08F',
237 ),
238 47 =>
239 array (
240 'match' => '0997 09CD 09A7',
241 'replace' => 'E090',
242 ),
243 48 =>
244 array (
245 'match' => '0997 09CD 09A8',
246 'replace' => 'E091',
247 ),
248 49 =>
249 array (
250 'match' => '0997 09CD 09AB',
251 'replace' => 'E092',
252 ),
253 50 =>
254 array (
255 'match' => '0997 09CD 09AC',
256 'replace' => 'E093',
257 ),
258 51 =>
259 array (
260 'match' => '0997 09CD 09AD',
261 'replace' => 'E094',
262 ),
263 52 =>
264 array (
265 'match' => '0997 09CD 09AE',
266 'replace' => 'E095',
267 ),
268 53 =>
269 array (
270 'match' => '0997 09CD 09B2',
271 'replace' => 'E096',
272 ),
273 54 =>
274 array (
275 'match' => '0998 09CD 09A8',
276 'replace' => 'E099',
277 ),
278 55 =>
279 array (
280 'match' => '0998 09CD 09AE',
281 'replace' => 'E09A',
282 ),
283 56 =>
284 array (
285 'match' => '0998 09CD 09AC',
286 'replace' => 'E09B',
287 ),
288 57 =>
289 array (
290 'match' => '0999 09CD 0995',
291 'replace' => 'E09C',
292 ),
293 58 =>
294 array (
295 'match' => '0999 09CD 0996',
296 'replace' => 'E09D',
297 ),
298 59 =>
299 array (
300 'match' => '0999 09CD 0997',
301 'replace' => 'E09E',
302 ),
303 60 =>
304 array (
305 'match' => '0999 09CD 0998',
306 'replace' => 'E09F',
307 ),
308 61 =>
309 array (
310 'match' => '0999 09CD 09A8',
311 'replace' => 'E0A0',
312 ),
313 62 =>
314 array (
315 'match' => '0999 09CD 09AD',
316 'replace' => 'E0A1',
317 ),
318 63 =>
319 array (
320 'match' => '0999 09CD 09AE',
321 'replace' => 'E0A2',
322 ),
323 64 =>
324 array (
325 'match' => '0999 09CD 09AC',
326 'replace' => 'E0A3',
327 ),
328 65 =>
329 array (
330 'match' => '0999 09CD 09B6',
331 'replace' => 'E0A4',
332 ),
333 66 =>
334 array (
335 'match' => '0999 09CD 09B7',
336 'replace' => 'E0A5',
337 ),
338 67 =>
339 array (
340 'match' => '0999 09CD 09B9',
341 'replace' => 'E0A6',
342 ),
343 68 =>
344 array (
345 'match' => '099A 09CD 099A',
346 'replace' => 'E0AC',
347 ),
348 69 =>
349 array (
350 'match' => '099A 09CD 099B',
351 'replace' => 'E0AD',
352 ),
353 70 =>
354 array (
355 'match' => '099A 09CD 099E',
356 'replace' => 'E0AE',
357 ),
358 71 =>
359 array (
360 'match' => '099A 09CD 09AE',
361 'replace' => 'E0AF',
362 ),
363 72 =>
364 array (
365 'match' => '099A 09CD 09AC',
366 'replace' => 'E0B0',
367 ),
368 73 =>
369 array (
370 'match' => '099B 09CD 099B',
371 'replace' => 'E0B4',
372 ),
373 74 =>
374 array (
375 'match' => '099B 09CD 09B2',
376 'replace' => 'E0B5',
377 ),
378 75 =>
379 array (
380 'match' => '099B 09CD 09AC',
381 'replace' => 'E0B6',
382 ),
383 76 =>
384 array (
385 'match' => '099C 09CD 099C',
386 'replace' => 'E0B7',
387 ),
388 77 =>
389 array (
390 'match' => '099C 09CD 099D',
391 'replace' => 'E0B8',
392 ),
393 78 =>
394 array (
395 'match' => '099C 09CD 09A6',
396 'replace' => 'E0B9',
397 ),
398 79 =>
399 array (
400 'match' => '099C 09CD 09AC',
401 'replace' => 'E0BA',
402 ),
403 80 =>
404 array (
405 'match' => '099C 09CD 09AE',
406 'replace' => 'E0BB',
407 ),
408 81 =>
409 array (
410 'match' => '099D 09CD 099D',
411 'replace' => 'E0BE',
412 ),
413 82 =>
414 array (
415 'match' => '099D 09CD 09AE',
416 'replace' => 'E0BF',
417 ),
418 83 =>
419 array (
420 'match' => '099D 09CD 09AC',
421 'replace' => 'E0C0',
422 ),
423 84 =>
424 array (
425 'match' => '099E 09CD 099A',
426 'replace' => 'E0C1',
427 ),
428 85 =>
429 array (
430 'match' => '099E 09CD 099B',
431 'replace' => 'E0C2',
432 ),
433 86 =>
434 array (
435 'match' => '099E 09CD 099C',
436 'replace' => 'E0C3',
437 ),
438 87 =>
439 array (
440 'match' => '099E 09CD 099D',
441 'replace' => 'E0C4',
442 ),
443 88 =>
444 array (
445 'match' => '099E 09CD 09B6',
446 'replace' => 'E0C5',
447 ),
448 89 =>
449 array (
450 'match' => '099F 09CD 0995',
451 'replace' => 'E0C6',
452 ),
453 90 =>
454 array (
455 'match' => '099F 09CD 0996',
456 'replace' => 'E0C7',
457 ),
458 91 =>
459 array (
460 'match' => '099F 09CD 099A',
461 'replace' => 'E0C8',
462 ),
463 92 =>
464 array (
465 'match' => '099F 09CD 099B',
466 'replace' => 'E0C9',
467 ),
468 93 =>
469 array (
470 'match' => '099F 09CD 099F',
471 'replace' => 'E0CA',
472 ),
473 94 =>
474 array (
475 'match' => '099F 09CD 09A0',
476 'replace' => 'E0CB',
477 ),
478 95 =>
479 array (
480 'match' => '099F 09CD 09A4',
481 'replace' => 'E0CC',
482 ),
483 96 =>
484 array (
485 'match' => '099F 09CD 09A5',
486 'replace' => 'E0CD',
487 ),
488 97 =>
489 array (
490 'match' => '099F 09CD 09AA',
491 'replace' => 'E0CE',
492 ),
493 98 =>
494 array (
495 'match' => '099F 09CD 09AB',
496 'replace' => 'E0CF',
497 ),
498 99 =>
499 array (
500 'match' => '099F 09CD 09AC',
501 'replace' => 'E0D0',
502 ),
503 100 =>
504 array (
505 'match' => '099F 09CD 09AE',
506 'replace' => 'E0D1',
507 ),
508 101 =>
509 array (
510 'match' => '099F 09CD 09B6',
511 'replace' => 'E0D2',
512 ),
513 102 =>
514 array (
515 'match' => '099F 09CD 09B7',
516 'replace' => 'E0D3',
517 ),
518 103 =>
519 array (
520 'match' => '099F 09CD 09B8',
521 'replace' => 'E0D4',
522 ),
523 104 =>
524 array (
525 'match' => '09A0 09CD 09A0',
526 'replace' => 'E0D5',
527 ),
528 105 =>
529 array (
530 'match' => '09A0 09CD 09A3',
531 'replace' => 'E0D6',
532 ),
533 106 =>
534 array (
535 'match' => '09A0 09CD 09AC',
536 'replace' => 'E0D7',
537 ),
538 107 =>
539 array (
540 'match' => '09A1 09CD 0997',
541 'replace' => 'E0D8',
542 ),
543 108 =>
544 array (
545 'match' => '09A1 09CD 09A1',
546 'replace' => 'E0D9',
547 ),
548 109 =>
549 array (
550 'match' => '09A1 09CD 09A2',
551 'replace' => 'E0DA',
552 ),
553 110 =>
554 array (
555 'match' => '09A1 09CD 09AE',
556 'replace' => 'E0DB',
557 ),
558 111 =>
559 array (
560 'match' => '09A1 09CD 09AC',
561 'replace' => 'E0DC',
562 ),
563 112 =>
564 array (
565 'match' => '09A2 09CD 09A2',
566 'replace' => 'E0DD',
567 ),
568 113 =>
569 array (
570 'match' => '09A2 09CD 09A3',
571 'replace' => 'E0DE',
572 ),
573 114 =>
574 array (
575 'match' => '09A2 09CD 09AC',
576 'replace' => 'E0DF',
577 ),
578 115 =>
579 array (
580 'match' => '09A3 09CD 099F',
581 'replace' => 'E0E0',
582 ),
583 116 =>
584 array (
585 'match' => '09A3 09CD 09A0',
586 'replace' => 'E0E1',
587 ),
588 117 =>
589 array (
590 'match' => '09A3 09CD 09A1',
591 'replace' => 'E0E2',
592 ),
593 118 =>
594 array (
595 'match' => '09A3 09CD 09A2',
596 'replace' => 'E0E3',
597 ),
598 119 =>
599 array (
600 'match' => '09A3 09CD 09A3',
601 'replace' => 'E0E4',
602 ),
603 120 =>
604 array (
605 'match' => '09A3 09CD 09AE',
606 'replace' => 'E0E5',
607 ),
608 121 =>
609 array (
610 'match' => '09A3 09CD 09AC',
611 'replace' => 'E0E6',
612 ),
613 122 =>
614 array (
615 'match' => '09A3 09CD 09B8',
616 'replace' => 'E0E7',
617 ),
618 123 =>
619 array (
620 'match' => '09A4 09CD 09A4',
621 'replace' => 'E0EA',
622 ),
623 124 =>
624 array (
625 'match' => '09A4 09CD 09A5',
626 'replace' => 'E0EB',
627 ),
628 125 =>
629 array (
630 'match' => '09A4 09CD 09A8',
631 'replace' => 'E0EC',
632 ),
633 126 =>
634 array (
635 'match' => '09A4 09CD 09AE',
636 'replace' => 'E0ED',
637 ),
638 127 =>
639 array (
640 'match' => '09A4 09CD 09AC',
641 'replace' => 'E0EE',
642 ),
643 128 =>
644 array (
645 'match' => '09A5 09CD 09A5',
646 'replace' => 'E0F1',
647 ),
648 129 =>
649 array (
650 'match' => '09A5 09CD 09A8',
651 'replace' => 'E0F2',
652 ),
653 130 =>
654 array (
655 'match' => '09A5 09CD 09AC',
656 'replace' => 'E0F3',
657 ),
658 131 =>
659 array (
660 'match' => '09A6 09CD 0997',
661 'replace' => 'E0F4',
662 ),
663 132 =>
664 array (
665 'match' => '09A6 09CD 0998',
666 'replace' => 'E0F5',
667 ),
668 133 =>
669 array (
670 'match' => '09A6 09CD 09A6',
671 'replace' => 'E0F6',
672 ),
673 134 =>
674 array (
675 'match' => '09A6 09CD 09A7',
676 'replace' => 'E0F7',
677 ),
678 135 =>
679 array (
680 'match' => '09A6 09CD 09A8',
681 'replace' => 'E0F8',
682 ),
683 136 =>
684 array (
685 'match' => '09A6 09CD 09AC',
686 'replace' => 'E0F9',
687 ),
688 137 =>
689 array (
690 'match' => '09A6 09CD 09AE',
691 'replace' => 'E0FB',
692 ),
693 138 =>
694 array (
695 'match' => '09A6 09CD 09AF',
696 'replace' => 'E0FC',
697 ),
698 139 =>
699 array (
700 'match' => '09A7 09CD 09A7',
701 'replace' => 'E102',
702 ),
703 140 =>
704 array (
705 'match' => '09A7 09CD 09A8',
706 'replace' => 'E103',
707 ),
708 141 =>
709 array (
710 'match' => '09A7 09CD 09AE',
711 'replace' => 'E104',
712 ),
713 142 =>
714 array (
715 'match' => '09A7 09CD 09AC',
716 'replace' => 'E105',
717 ),
718 143 =>
719 array (
720 'match' => '09A8 09CD 0995',
721 'replace' => 'E106',
722 ),
723 144 =>
724 array (
725 'match' => '09A8 09CD 0997',
726 'replace' => 'E107',
727 ),
728 145 =>
729 array (
730 'match' => '09A8 09CD 099A',
731 'replace' => 'E108',
732 ),
733 146 =>
734 array (
735 'match' => '09A8 09CD 099C',
736 'replace' => 'E109',
737 ),
738 147 =>
739 array (
740 'match' => '09A8 09CD 099F',
741 'replace' => 'E10A',
742 ),
743 148 =>
744 array (
745 'match' => '09A8 09CD 09A0',
746 'replace' => 'E10B',
747 ),
748 149 =>
749 array (
750 'match' => '09A8 09CD 09A1',
751 'replace' => 'E10C',
752 ),
753 150 =>
754 array (
755 'match' => '09A8 09CD 09A4',
756 'replace' => 'E10D',
757 ),
758 151 =>
759 array (
760 'match' => '09A8 09CD 09A5',
761 'replace' => 'E10E',
762 ),
763 152 =>
764 array (
765 'match' => '09A8 09CD 09A6',
766 'replace' => 'E10F',
767 ),
768 153 =>
769 array (
770 'match' => '09A8 09CD 09A7',
771 'replace' => 'E110',
772 ),
773 154 =>
774 array (
775 'match' => '09A8 09CD 09A8',
776 'replace' => 'E111',
777 ),
778 155 =>
779 array (
780 'match' => '09A8 09CD 09AB',
781 'replace' => 'E112',
782 ),
783 156 =>
784 array (
785 'match' => '09A8 09CD 09AD',
786 'replace' => 'E113',
787 ),
788 157 =>
789 array (
790 'match' => '09A8 09CD 09AE',
791 'replace' => 'E114',
792 ),
793 158 =>
794 array (
795 'match' => '09A8 09CD 09AF',
796 'replace' => 'E115',
797 ),
798 159 =>
799 array (
800 'match' => '09A8 09CD 09AC',
801 'replace' => 'E116',
802 ),
803 160 =>
804 array (
805 'match' => '09A8 09CD 09B6',
806 'replace' => 'E117',
807 ),
808 161 =>
809 array (
810 'match' => '09A8 09CD 09B7',
811 'replace' => 'E118',
812 ),
813 162 =>
814 array (
815 'match' => '09A8 09CD 09B8',
816 'replace' => 'E119',
817 ),
818 163 =>
819 array (
820 'match' => '09AA 09CD 0995',
821 'replace' => 'E122',
822 ),
823 164 =>
824 array (
825 'match' => '09AA 09CD 0996',
826 'replace' => 'E123',
827 ),
828 165 =>
829 array (
830 'match' => '09AA 09CD 099A',
831 'replace' => 'E124',
832 ),
833 166 =>
834 array (
835 'match' => '09AA 09CD 099B',
836 'replace' => 'E125',
837 ),
838 167 =>
839 array (
840 'match' => '09AA 09CD 099F',
841 'replace' => 'E126',
842 ),
843 168 =>
844 array (
845 'match' => '09AA 09CD 09A0',
846 'replace' => 'E127',
847 ),
848 169 =>
849 array (
850 'match' => '09AA 09CD 09A4',
851 'replace' => 'E128',
852 ),
853 170 =>
854 array (
855 'match' => '09AA 09CD 09A8',
856 'replace' => 'E129',
857 ),
858 171 =>
859 array (
860 'match' => '09AA 09CD 09AA',
861 'replace' => 'E12A',
862 ),
863 172 =>
864 array (
865 'match' => '09AA 09CD 09AB',
866 'replace' => 'E12B',
867 ),
868 173 =>
869 array (
870 'match' => '09AA 09CD 09AE',
871 'replace' => 'E12C',
872 ),
873 174 =>
874 array (
875 'match' => '09AA 09CD 09B2',
876 'replace' => 'E12D',
877 ),
878 175 =>
879 array (
880 'match' => '09AA 09CD 09AC',
881 'replace' => 'E12E',
882 ),
883 176 =>
884 array (
885 'match' => '09AA 09CD 09B6',
886 'replace' => 'E12F',
887 ),
888 177 =>
889 array (
890 'match' => '09AA 09CD 09B7',
891 'replace' => 'E130',
892 ),
893 178 =>
894 array (
895 'match' => '09AA 09CD 09B8',
896 'replace' => 'E131',
897 ),
898 179 =>
899 array (
900 'match' => '09AB 09CD 099F',
901 'replace' => 'E132',
902 ),
903 180 =>
904 array (
905 'match' => '09AB 09CD 09A4',
906 'replace' => 'E133',
907 ),
908 181 =>
909 array (
910 'match' => '09AB 09CD 09AA',
911 'replace' => 'E134',
912 ),
913 182 =>
914 array (
915 'match' => '09AB 09CD 09AB',
916 'replace' => 'E135',
917 ),
918 183 =>
919 array (
920 'match' => '09AB 09CD 09B2',
921 'replace' => 'E136',
922 ),
923 184 =>
924 array (
925 'match' => '09AC 09CD 099C',
926 'replace' => 'E137',
927 ),
928 185 =>
929 array (
930 'match' => '09AC 09CD 099D',
931 'replace' => 'E138',
932 ),
933 186 =>
934 array (
935 'match' => '09AC 09CD 09A1',
936 'replace' => 'E139',
937 ),
938 187 =>
939 array (
940 'match' => '09AC 09CD 09A2',
941 'replace' => 'E13A',
942 ),
943 188 =>
944 array (
945 'match' => '09AC 09CD 09A6',
946 'replace' => 'E13B',
947 ),
948 189 =>
949 array (
950 'match' => '09AC 09CD 09A7',
951 'replace' => 'E13C',
952 ),
953 190 =>
954 array (
955 'match' => '09AC 09CD 09A8',
956 'replace' => 'E13D',
957 ),
958 191 =>
959 array (
960 'match' => '09AC 09CD 09B2',
961 'replace' => 'E13E',
962 ),
963 192 =>
964 array (
965 'match' => '09AC 09CD 09AC',
966 'replace' => 'E13F',
967 ),
968 193 =>
969 array (
970 'match' => '09AD 09CD 09A3',
971 'replace' => 'E141',
972 ),
973 194 =>
974 array (
975 'match' => '09AD 09CD 09A8',
976 'replace' => 'E142',
977 ),
978 195 =>
979 array (
980 'match' => '09AD 09CD 09AD',
981 'replace' => 'E143',
982 ),
983 196 =>
984 array (
985 'match' => '09AD 09CD 09AE',
986 'replace' => 'E144',
987 ),
988 197 =>
989 array (
990 'match' => '09AD 09CD 09B2',
991 'replace' => 'E145',
992 ),
993 198 =>
994 array (
995 'match' => '09AD 09CD 09AC',
996 'replace' => 'E146',
997 ),
998 199 =>
999 array (
1000 'match' => '09AE 09CD 09A3',
1001 'replace' => 'E147',
1002 ),
1003 200 =>
1004 array (
1005 'match' => '09AE 09CD 09A8',
1006 'replace' => 'E148',
1007 ),
1008 201 =>
1009 array (
1010 'match' => '09AE 09CD 09AA',
1011 'replace' => 'E149',
1012 ),
1013 202 =>
1014 array (
1015 'match' => '09AE 09CD 09AB',
1016 'replace' => 'E14A',
1017 ),
1018 203 =>
1019 array (
1020 'match' => '09AE 09CD 09AC',
1021 'replace' => 'E14B',
1022 ),
1023 204 =>
1024 array (
1025 'match' => '09AE 09CD 09AD',
1026 'replace' => 'E14C',
1027 ),
1028 205 =>
1029 array (
1030 'match' => '09AE 09CD 09AE',
1031 'replace' => 'E14D',
1032 ),
1033 206 =>
1034 array (
1035 'match' => '09AE 09CD 09B2',
1036 'replace' => 'E14E',
1037 ),
1038 207 =>
1039 array (
1040 'match' => '09B2 09CD 0995',
1041 'replace' => 'E153',
1042 ),
1043 208 =>
1044 array (
1045 'match' => '09B2 09CD 0996',
1046 'replace' => 'E154',
1047 ),
1048 209 =>
1049 array (
1050 'match' => '09B2 09CD 0997',
1051 'replace' => 'E155',
1052 ),
1053 210 =>
1054 array (
1055 'match' => '09B2 09CD 099A',
1056 'replace' => 'E156',
1057 ),
1058 211 =>
1059 array (
1060 'match' => '09B2 09CD 099C',
1061 'replace' => 'E157',
1062 ),
1063 212 =>
1064 array (
1065 'match' => '09B2 09CD 099F',
1066 'replace' => 'E158',
1067 ),
1068 213 =>
1069 array (
1070 'match' => '09B2 09CD 09A1',
1071 'replace' => 'E159',
1072 ),
1073 214 =>
1074 array (
1075 'match' => '09B2 09CD 09A6',
1076 'replace' => 'E15A',
1077 ),
1078 215 =>
1079 array (
1080 'match' => '09B2 09CD 09AA',
1081 'replace' => 'E15B',
1082 ),
1083 216 =>
1084 array (
1085 'match' => '09B2 09CD 09AB',
1086 'replace' => 'E15C',
1087 ),
1088 217 =>
1089 array (
1090 'match' => '09B2 09CD 09AC',
1091 'replace' => 'E15D',
1092 ),
1093 218 =>
1094 array (
1095 'match' => '09B2 09CD 09AE',
1096 'replace' => 'E15E',
1097 ),
1098 219 =>
1099 array (
1100 'match' => '09B2 09CD 09B2',
1101 'replace' => 'E15F',
1102 ),
1103 220 =>
1104 array (
1105 'match' => '09B2 09CD 09B6',
1106 'replace' => 'E160',
1107 ),
1108 221 =>
1109 array (
1110 'match' => '09B2 09CD 09B8',
1111 'replace' => 'E161',
1112 ),
1113 222 =>
1114 array (
1115 'match' => '09B2 09CD 09B9',
1116 'replace' => 'E162',
1117 ),
1118 223 =>
1119 array (
1120 'match' => '09B6 09CD 0995',
1121 'replace' => 'E166',
1122 ),
1123 224 =>
1124 array (
1125 'match' => '09B6 09CD 099A',
1126 'replace' => 'E167',
1127 ),
1128 225 =>
1129 array (
1130 'match' => '09B6 09CD 099B',
1131 'replace' => 'E168',
1132 ),
1133 226 =>
1134 array (
1135 'match' => '09B6 09CD 09A4',
1136 'replace' => 'E169',
1137 ),
1138 227 =>
1139 array (
1140 'match' => '09B6 09CD 09A8',
1141 'replace' => 'E16A',
1142 ),
1143 228 =>
1144 array (
1145 'match' => '09B6 09CD 09AA',
1146 'replace' => 'E16B',
1147 ),
1148 229 =>
1149 array (
1150 'match' => '09B6 09CD 09AE',
1151 'replace' => 'E16C',
1152 ),
1153 230 =>
1154 array (
1155 'match' => '09B6 09CD 09AF',
1156 'replace' => 'E16D',
1157 ),
1158 231 =>
1159 array (
1160 'match' => '09B6 09CD 09B2',
1161 'replace' => 'E16E',
1162 ),
1163 232 =>
1164 array (
1165 'match' => '09B6 09CD 09AC',
1166 'replace' => 'E16F',
1167 ),
1168 233 =>
1169 array (
1170 'match' => '09B6 09CD 09B6',
1171 'replace' => 'E170',
1172 ),
1173 234 =>
1174 array (
1175 'match' => '09B7 09CD 0995',
1176 'replace' => 'E171',
1177 ),
1178 235 =>
1179 array (
1180 'match' => '09B7 09CD 099F',
1181 'replace' => 'E172',
1182 ),
1183 236 =>
1184 array (
1185 'match' => '09B7 09CD 09A0',
1186 'replace' => 'E173',
1187 ),
1188 237 =>
1189 array (
1190 'match' => '09B7 09CD 09A3',
1191 'replace' => 'E174',
1192 ),
1193 238 =>
1194 array (
1195 'match' => '09B7 09CD 09AA',
1196 'replace' => 'E175',
1197 ),
1198 239 =>
1199 array (
1200 'match' => '09B7 09CD 09AB',
1201 'replace' => 'E176',
1202 ),
1203 240 =>
1204 array (
1205 'match' => '09B7 09CD 09AE',
1206 'replace' => 'E177',
1207 ),
1208 241 =>
1209 array (
1210 'match' => '09B7 09CD 09AF',
1211 'replace' => 'E178',
1212 ),
1213 242 =>
1214 array (
1215 'match' => '09B7 09CD 09AC',
1216 'replace' => 'E179',
1217 ),
1218 243 =>
1219 array (
1220 'match' => '09B8 09CD 0995',
1221 'replace' => 'E17E',
1222 ),
1223 244 =>
1224 array (
1225 'match' => '09B8 09CD 0996',
1226 'replace' => 'E17F',
1227 ),
1228 245 =>
1229 array (
1230 'match' => '09B8 09CD 099C',
1231 'replace' => 'E180',
1232 ),
1233 246 =>
1234 array (
1235 'match' => '09B8 09CD 099F',
1236 'replace' => 'E181',
1237 ),
1238 247 =>
1239 array (
1240 'match' => '09B8 09CD 09A4',
1241 'replace' => 'E182',
1242 ),
1243 248 =>
1244 array (
1245 'match' => '09B8 09CD 09A5',
1246 'replace' => 'E183',
1247 ),
1248 249 =>
1249 array (
1250 'match' => '09B8 09CD 09A8',
1251 'replace' => 'E184',
1252 ),
1253 250 =>
1254 array (
1255 'match' => '09B8 09CD 09AA',
1256 'replace' => 'E185',
1257 ),
1258 251 =>
1259 array (
1260 'match' => '09B8 09CD 09AB',
1261 'replace' => 'E186',
1262 ),
1263 252 =>
1264 array (
1265 'match' => '09B8 09CD 09AE',
1266 'replace' => 'E187',
1267 ),
1268 253 =>
1269 array (
1270 'match' => '09B8 09CD 09AF',
1271 'replace' => 'E188',
1272 ),
1273 254 =>
1274 array (
1275 'match' => '09B8 09CD 09B2',
1276 'replace' => 'E189',
1277 ),
1278 255 =>
1279 array (
1280 'match' => '09B8 09CD 09AC',
1281 'replace' => 'E18A',
1282 ),
1283 256 =>
1284 array (
1285 'match' => '09B8 09CD 09B8',
1286 'replace' => 'E18B',
1287 ),
1288 257 =>
1289 array (
1290 'match' => '09B9 09CD 09A3',
1291 'replace' => 'E192',
1292 ),
1293 258 =>
1294 array (
1295 'match' => '09B9 09CD 09A8',
1296 'replace' => 'E193',
1297 ),
1298 259 =>
1299 array (
1300 'match' => '09B9 09CD 09AE',
1301 'replace' => 'E194',
1302 ),
1303 260 =>
1304 array (
1305 'match' => '09B9 09CD 09AF',
1306 'replace' => 'E195',
1307 ),
1308 261 =>
1309 array (
1310 'match' => '09B9 09CD 09B2',
1311 'replace' => 'E196',
1312 ),
1313 262 =>
1314 array (
1315 'match' => '09B9 09CD 09AC',
1316 'replace' => 'E197',
1317 ),
1318 263 =>
1319 array (
1320 'match' => '09DC 09CD 0997',
1321 'replace' => 'E198',
1322 ),
1323 264 =>
1324 array (
1325 'match' => '09DC 09CD 099C',
1326 'replace' => 'E199',
1327 ),
1328 265 =>
1329 array (
1330 'match' => '09DC 09CD 09A7',
1331 'replace' => 'E19A',
1332 ),
1333 266 =>
1334 array (
1335 'match' => '0995 E1CD',
1336 'replace' => 'E041',
1337 ),
1338 267 =>
1339 array (
1340 'match' => '0996 E1CD',
1341 'replace' => 'E042',
1342 ),
1343 268 =>
1344 array (
1345 'match' => '0997 E1CD',
1346 'replace' => 'E043',
1347 ),
1348 269 =>
1349 array (
1350 'match' => '0998 E1CD',
1351 'replace' => 'E044',
1352 ),
1353 270 =>
1354 array (
1355 'match' => '0999 E1CD',
1356 'replace' => 'E045',
1357 ),
1358 271 =>
1359 array (
1360 'match' => '099A E1CD',
1361 'replace' => 'E046',
1362 ),
1363 272 =>
1364 array (
1365 'match' => '099B E1CD',
1366 'replace' => 'E047',
1367 ),
1368 273 =>
1369 array (
1370 'match' => '099C E1CD',
1371 'replace' => 'E048',
1372 ),
1373 274 =>
1374 array (
1375 'match' => '099D E1CD',
1376 'replace' => 'E049',
1377 ),
1378 275 =>
1379 array (
1380 'match' => '099F E1CD',
1381 'replace' => 'E04A',
1382 ),
1383 276 =>
1384 array (
1385 'match' => '09A0 E1CD',
1386 'replace' => 'E04B',
1387 ),
1388 277 =>
1389 array (
1390 'match' => '09A1 E1CD',
1391 'replace' => 'E04C',
1392 ),
1393 278 =>
1394 array (
1395 'match' => '09A2 E1CD',
1396 'replace' => 'E04D',
1397 ),
1398 279 =>
1399 array (
1400 'match' => '09A3 E1CD',
1401 'replace' => 'E04E',
1402 ),
1403 280 =>
1404 array (
1405 'match' => '09A4 E1CD',
1406 'replace' => 'E04F',
1407 ),
1408 281 =>
1409 array (
1410 'match' => '09A5 E1CD',
1411 'replace' => 'E050',
1412 ),
1413 282 =>
1414 array (
1415 'match' => '09A6 E1CD',
1416 'replace' => 'E051',
1417 ),
1418 283 =>
1419 array (
1420 'match' => '09A7 E1CD',
1421 'replace' => 'E052',
1422 ),
1423 284 =>
1424 array (
1425 'match' => '09A8 E1CD',
1426 'replace' => 'E053',
1427 ),
1428 285 =>
1429 array (
1430 'match' => '09AA E1CD',
1431 'replace' => 'E054',
1432 ),
1433 286 =>
1434 array (
1435 'match' => '09AB E1CD',
1436 'replace' => 'E055',
1437 ),
1438 287 =>
1439 array (
1440 'match' => '09AC E1CD',
1441 'replace' => 'E056',
1442 ),
1443 288 =>
1444 array (
1445 'match' => '09AD E1CD',
1446 'replace' => 'E057',
1447 ),
1448 289 =>
1449 array (
1450 'match' => '09AE E1CD',
1451 'replace' => 'E058',
1452 ),
1453 290 =>
1454 array (
1455 'match' => '09AF E1CD',
1456 'replace' => 'E059',
1457 ),
1458 291 =>
1459 array (
1460 'match' => '09B0 E1CD',
1461 'replace' => 'E05A',
1462 ),
1463 292 =>
1464 array (
1465 'match' => '09B2 E1CD',
1466 'replace' => 'E05B',
1467 ),
1468 293 =>
1469 array (
1470 'match' => '09B6 E1CD',
1471 'replace' => 'E05C',
1472 ),
1473 294 =>
1474 array (
1475 'match' => '09B7 E1CD',
1476 'replace' => 'E05D',
1477 ),
1478 295 =>
1479 array (
1480 'match' => '09B8 E1CD',
1481 'replace' => 'E05E',
1482 ),
1483 296 =>
1484 array (
1485 'match' => '09B9 E1CD',
1486 'replace' => 'E05F',
1487 ),
1488 297 =>
1489 array (
1490 'match' => '09DC E1CD',
1491 'replace' => 'E060',
1492 ),
1493 298 =>
1494 array (
1495 'match' => '09DD E1CD',
1496 'replace' => 'E061',
1497 ),
1498 299 =>
1499 array (
1500 'match' => '09DF E1CD',
1501 'replace' => 'E062',
1502 ),
1503 300 =>
1504 array (
1505 'match' => '00D0 09B0',
1506 'replace' => 'E1CD',
1507 ),
1508 301 =>
1509 array (
1510 'match' => 'E06A E1CD',
1511 'replace' => 'E07B',
1512 ),
1513 302 =>
1514 array (
1515 'match' => 'E06E E1CD',
1516 'replace' => 'E07C',
1517 ),
1518 303 =>
1519 array (
1520 'match' => 'E071 E1CD',
1521 'replace' => 'E07D',
1522 ),
1523 304 =>
1524 array (
1525 'match' => 'E071 09CD 09AC',
1526 'replace' => 'E07E',
1527 ),
1528 305 =>
1529 array (
1530 'match' => 'E002 09CD 09A3',
1531 'replace' => 'E07F',
1532 ),
1533 306 =>
1534 array (
1535 'match' => 'E002 09CD 09AE',
1536 'replace' => 'E080',
1537 ),
1538 307 =>
1539 array (
1540 'match' => 'E002 E1CD',
1541 'replace' => 'E081',
1542 ),
1543 308 =>
1544 array (
1545 'match' => 'E002 09CD 09AC',
1546 'replace' => 'E082',
1547 ),
1548 309 =>
1549 array (
1550 'match' => 'E090 E1CD',
1551 'replace' => 'E097',
1552 ),
1553 310 =>
1554 array (
1555 'match' => 'E090 09CD 09AC',
1556 'replace' => 'E098',
1557 ),
1558 311 =>
1559 array (
1560 'match' => 'E09C E1CD',
1561 'replace' => 'E0A7',
1562 ),
1563 312 =>
1564 array (
1565 'match' => 'E09F E1CD',
1566 'replace' => 'E0A8',
1567 ),
1568 313 =>
1569 array (
1570 'match' => '0999 09CD E002',
1571 'replace' => 'E0A9',
1572 ),
1573 314 =>
1574 array (
1575 'match' => 'E0AD E1CD',
1576 'replace' => 'E0B1',
1577 ),
1578 315 =>
1579 array (
1580 'match' => 'E0AD 09CD 09B2',
1581 'replace' => 'E0B2',
1582 ),
1583 316 =>
1584 array (
1585 'match' => 'E0AD 09CD 09AC',
1586 'replace' => 'E0B3',
1587 ),
1588 317 =>
1589 array (
1590 'match' => 'E0B7 E1CD',
1591 'replace' => 'E0BC',
1592 ),
1593 318 =>
1594 array (
1595 'match' => 'E0B7 09CD 09AC',
1596 'replace' => 'E0BD',
1597 ),
1598 319 =>
1599 array (
1600 'match' => 'E0E0 E1CD',
1601 'replace' => 'E0E8',
1602 ),
1603 320 =>
1604 array (
1605 'match' => 'E0E2 E1CD',
1606 'replace' => 'E0E9',
1607 ),
1608 321 =>
1609 array (
1610 'match' => 'E0EA E1CD',
1611 'replace' => 'E0EF',
1612 ),
1613 322 =>
1614 array (
1615 'match' => 'E0EA 09CD 09AC',
1616 'replace' => 'E0F0',
1617 ),
1618 323 =>
1619 array (
1620 'match' => 'E0F6 E1CD',
1621 'replace' => 'E0FD',
1622 ),
1623 324 =>
1624 array (
1625 'match' => 'E0F6 09CD 09AC',
1626 'replace' => 'E0FE',
1627 ),
1628 325 =>
1629 array (
1630 'match' => 'E0F7 E1CD',
1631 'replace' => 'E0FF',
1632 ),
1633 326 =>
1634 array (
1635 'match' => 'E0F7 09CD 09AC',
1636 'replace' => 'E100',
1637 ),
1638 327 =>
1639 array (
1640 'match' => 'E0FA E1CD',
1641 'replace' => 'E101',
1642 ),
1643 328 =>
1644 array (
1645 'match' => 'E10A E1CD',
1646 'replace' => 'E11A',
1647 ),
1648 329 =>
1649 array (
1650 'match' => 'E10C E1CD',
1651 'replace' => 'E11B',
1652 ),
1653 330 =>
1654 array (
1655 'match' => 'E10D E1CD',
1656 'replace' => 'E11C',
1657 ),
1658 331 =>
1659 array (
1660 'match' => 'E10D 09CD 09AC',
1661 'replace' => 'E11D',
1662 ),
1663 332 =>
1664 array (
1665 'match' => 'E10F E1CD',
1666 'replace' => 'E11E',
1667 ),
1668 333 =>
1669 array (
1670 'match' => 'E10F 09CD 09AC',
1671 'replace' => 'E11F',
1672 ),
1673 334 =>
1674 array (
1675 'match' => 'E110 E1CD',
1676 'replace' => 'E120',
1677 ),
1678 335 =>
1679 array (
1680 'match' => 'E110 09CD 09AC',
1681 'replace' => 'E121',
1682 ),
1683 336 =>
1684 array (
1685 'match' => 'E13C 09CD 09AC',
1686 'replace' => 'E140',
1687 ),
1688 337 =>
1689 array (
1690 'match' => 'E149 E1CD',
1691 'replace' => 'E14F',
1692 ),
1693 338 =>
1694 array (
1695 'match' => 'E14A E1CD',
1696 'replace' => 'E150',
1697 ),
1698 339 =>
1699 array (
1700 'match' => 'E14B E1CD',
1701 'replace' => 'E151',
1702 ),
1703 340 =>
1704 array (
1705 'match' => 'E14C E1CD',
1706 'replace' => 'E152',
1707 ),
1708 341 =>
1709 array (
1710 'match' => 'E158 E1CD',
1711 'replace' => 'E163',
1712 ),
1713 342 =>
1714 array (
1715 'match' => 'E15B E1CD',
1716 'replace' => 'E164',
1717 ),
1718 343 =>
1719 array (
1720 'match' => 'E161 09CD 099F',
1721 'replace' => 'E165',
1722 ),
1723 344 =>
1724 array (
1725 'match' => 'E171 E1CD',
1726 'replace' => 'E17A',
1727 ),
1728 345 =>
1729 array (
1730 'match' => 'E172 E1CD',
1731 'replace' => 'E17B',
1732 ),
1733 346 =>
1734 array (
1735 'match' => 'E172 09CD 09AC',
1736 'replace' => 'E17C',
1737 ),
1738 347 =>
1739 array (
1740 'match' => 'E175 E1CD',
1741 'replace' => 'E17D',
1742 ),
1743 348 =>
1744 array (
1745 'match' => 'E17E E1CD',
1746 'replace' => 'E18C',
1747 ),
1748 349 =>
1749 array (
1750 'match' => 'E181 E1CD',
1751 'replace' => 'E18D',
1752 ),
1753 350 =>
1754 array (
1755 'match' => 'E182 E1CD',
1756 'replace' => 'E18E',
1757 ),
1758 351 =>
1759 array (
1760 'match' => 'E182 09CD 09AC',
1761 'replace' => 'E18F',
1762 ),
1763 352 =>
1764 array (
1765 'match' => 'E185 E1CD',
1766 'replace' => 'E190',
1767 ),
1768 353 =>
1769 array (
1770 'match' => 'E185 09CD 09B2',
1771 'replace' => 'E191',
1772 ),
1773 354 =>
1774 array (
1775 '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',
1776 'replace' => '\\1 E067',
1777 ),
1778 355 =>
1779 array (
1780 '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',
1781 'replace' => '\\1 E067',
1782 ),
1783 356 =>
1784 array (
1785 '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',
1786 'replace' => '\\1 E067',
1787 ),
1788 357 =>
1789 array (
1790 'match' => '(200C) 09CD 09AF',
1791 'replace' => '\\1 E067',
1792 ),
1793 358 =>
1794 array (
1795 'match' => 'E0A9 E1CD',
1796 'replace' => 'E0AA',
1797 ),
1798 359 =>
1799 array (
1800 'match' => 'E0A9 E1CD',
1801 'replace' => 'E0AB',
1802 ),
1803 360 =>
1804 array (
1805 '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',
1806 'replace' => '\\1 09CD 09BF',
1807 ),
1808 361 =>
1809 array (
1810 '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',
1811 'replace' => '\\1 007E 09BF',
1812 ),
1813 362 =>
1814 array (
1815 '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',
1816 'replace' => '\\1 09CD 09C7',
1817 ),
1818 363 =>
1819 array (
1820 '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',
1821 'replace' => '\\1 007E 09C7',
1822 ),
1823 364 =>
1824 array (
1825 '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',
1826 'replace' => '\\1 09CD 09C8',
1827 ),
1828 365 =>
1829 array (
1830 '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',
1831 'replace' => '\\1 007E 09C8',
1832 ),
1833 366 =>
1834 array (
1835 'match' => '09BF 0995 (09CD (09BF|09C7|09C8))',
1836 'replace' => '0995 \\1',
1837 ),
1838 367 =>
1839 array (
1840 'match' => '09BF 0996 (09CD (09BF|09C7|09C8))',
1841 'replace' => '0996 \\1',
1842 ),
1843 368 =>
1844 array (
1845 'match' => '09BF 0997 (09CD (09BF|09C7|09C8))',
1846 'replace' => '0997 \\1',
1847 ),
1848 369 =>
1849 array (
1850 'match' => '09BF 0998 (09CD (09BF|09C7|09C8))',
1851 'replace' => '0998 \\1',
1852 ),
1853 370 =>
1854 array (
1855 'match' => '09BF 0999 (09CD (09BF|09C7|09C8))',
1856 'replace' => '0999 \\1',
1857 ),
1858 371 =>
1859 array (
1860 'match' => '09BF 099A (09CD (09BF|09C7|09C8))',
1861 'replace' => '099A \\1',
1862 ),
1863 372 =>
1864 array (
1865 'match' => '09BF 099B (09CD (09BF|09C7|09C8))',
1866 'replace' => '099B \\1',
1867 ),
1868 373 =>
1869 array (
1870 'match' => '09BF 099C (09CD (09BF|09C7|09C8))',
1871 'replace' => '099C \\1',
1872 ),
1873 374 =>
1874 array (
1875 'match' => '09BF 099D (09CD (09BF|09C7|09C8))',
1876 'replace' => '099D \\1',
1877 ),
1878 375 =>
1879 array (
1880 'match' => '09BF 099F (09CD (09BF|09C7|09C8))',
1881 'replace' => '099F \\1',
1882 ),
1883 376 =>
1884 array (
1885 'match' => '09BF 09A0 (09CD (09BF|09C7|09C8))',
1886 'replace' => '09A0 \\1',
1887 ),
1888 377 =>
1889 array (
1890 'match' => '09BF 09A1 (09CD (09BF|09C7|09C8))',
1891 'replace' => '09A1 \\1',
1892 ),
1893 378 =>
1894 array (
1895 'match' => '09BF 09A2 (09CD (09BF|09C7|09C8))',
1896 'replace' => '09A2 \\1',
1897 ),
1898 379 =>
1899 array (
1900 'match' => '09BF 09A3 (09CD (09BF|09C7|09C8))',
1901 'replace' => '09A3 \\1',
1902 ),
1903 380 =>
1904 array (
1905 'match' => '09BF 09A4 (09CD (09BF|09C7|09C8))',
1906 'replace' => '09A4 \\1',
1907 ),
1908 381 =>
1909 array (
1910 'match' => '09BF 09A5 (09CD (09BF|09C7|09C8))',
1911 'replace' => '09A5 \\1',
1912 ),
1913 382 =>
1914 array (
1915 'match' => '09BF 09A6 (09CD (09BF|09C7|09C8))',
1916 'replace' => '09A6 \\1',
1917 ),
1918 383 =>
1919 array (
1920 'match' => '09BF 09A7 (09CD (09BF|09C7|09C8))',
1921 'replace' => '09A7 \\1',
1922 ),
1923 384 =>
1924 array (
1925 'match' => '09BF 09A8 (09CD (09BF|09C7|09C8))',
1926 'replace' => '09A8 \\1',
1927 ),
1928 385 =>
1929 array (
1930 'match' => '09BF 09AA (09CD (09BF|09C7|09C8))',
1931 'replace' => '09AA \\1',
1932 ),
1933 386 =>
1934 array (
1935 'match' => '09BF 09AB (09CD (09BF|09C7|09C8))',
1936 'replace' => '09AB \\1',
1937 ),
1938 387 =>
1939 array (
1940 'match' => '09BF 09AC (09CD (09BF|09C7|09C8))',
1941 'replace' => '09AC \\1',
1942 ),
1943 388 =>
1944 array (
1945 'match' => '09BF 09AD (09CD (09BF|09C7|09C8))',
1946 'replace' => '09AD \\1',
1947 ),
1948 389 =>
1949 array (
1950 'match' => '09BF 09AE (09CD (09BF|09C7|09C8))',
1951 'replace' => '09AE \\1',
1952 ),
1953 390 =>
1954 array (
1955 'match' => '09BF 09AF (09CD (09BF|09C7|09C8))',
1956 'replace' => '09AF \\1',
1957 ),
1958 391 =>
1959 array (
1960 'match' => '09BF 09B0 (09CD (09BF|09C7|09C8))',
1961 'replace' => '09B0 \\1',
1962 ),
1963 392 =>
1964 array (
1965 'match' => '09BF 09B2 (09CD (09BF|09C7|09C8))',
1966 'replace' => '09B2 \\1',
1967 ),
1968 393 =>
1969 array (
1970 'match' => '09BF 09B6 (09CD (09BF|09C7|09C8))',
1971 'replace' => '09B6 \\1',
1972 ),
1973 394 =>
1974 array (
1975 'match' => '09BF 09B7 (09CD (09BF|09C7|09C8))',
1976 'replace' => '09B7 \\1',
1977 ),
1978 395 =>
1979 array (
1980 'match' => '09BF 09B8 (09CD (09BF|09C7|09C8))',
1981 'replace' => '09B8 \\1',
1982 ),
1983 396 =>
1984 array (
1985 'match' => '09BF 09B9 (09CD (09BF|09C7|09C8))',
1986 'replace' => '09B9 \\1',
1987 ),
1988 397 =>
1989 array (
1990 'match' => '09BF 09DC (09CD (09BF|09C7|09C8))',
1991 'replace' => '09DC \\1',
1992 ),
1993 398 =>
1994 array (
1995 'match' => '09BF 09DD (09CD (09BF|09C7|09C8))',
1996 'replace' => '09DD \\1',
1997 ),
1998 399 =>
1999 array (
2000 'match' => '09BF 09DF (09CD (09BF|09C7|09C8))',
2001 'replace' => '09DF \\1',
2002 ),
2003 400 =>
2004 array (
2005 'match' => '09C7 0995 (09CD (09BF|09C7|09C8))',
2006 'replace' => '0995 \\1',
2007 ),
2008 401 =>
2009 array (
2010 'match' => '09C7 0996 (09CD (09BF|09C7|09C8))',
2011 'replace' => '0996 \\1',
2012 ),
2013 402 =>
2014 array (
2015 'match' => '09C7 0997 (09CD (09BF|09C7|09C8))',
2016 'replace' => '0997 \\1',
2017 ),
2018 403 =>
2019 array (
2020 'match' => '09C7 0998 (09CD (09BF|09C7|09C8))',
2021 'replace' => '0998 \\1',
2022 ),
2023 404 =>
2024 array (
2025 'match' => '09C7 0999 (09CD (09BF|09C7|09C8))',
2026 'replace' => '0999 \\1',
2027 ),
2028 405 =>
2029 array (
2030 'match' => '09C7 099A (09CD (09BF|09C7|09C8))',
2031 'replace' => '099A \\1',
2032 ),
2033 406 =>
2034 array (
2035 'match' => '09C7 099B (09CD (09BF|09C7|09C8))',
2036 'replace' => '099B \\1',
2037 ),
2038 407 =>
2039 array (
2040 'match' => '09C7 099C (09CD (09BF|09C7|09C8))',
2041 'replace' => '099C \\1',
2042 ),
2043 408 =>
2044 array (
2045 'match' => '09C7 099D (09CD (09BF|09C7|09C8))',
2046 'replace' => '099D \\1',
2047 ),
2048 409 =>
2049 array (
2050 'match' => '09C7 099F (09CD (09BF|09C7|09C8))',
2051 'replace' => '099F \\1',
2052 ),
2053 410 =>
2054 array (
2055 'match' => '09C7 09A0 (09CD (09BF|09C7|09C8))',
2056 'replace' => '09A0 \\1',
2057 ),
2058 411 =>
2059 array (
2060 'match' => '09C7 09A1 (09CD (09BF|09C7|09C8))',
2061 'replace' => '09A1 \\1',
2062 ),
2063 412 =>
2064 array (
2065 'match' => '09C7 09A2 (09CD (09BF|09C7|09C8))',
2066 'replace' => '09A2 \\1',
2067 ),
2068 413 =>
2069 array (
2070 'match' => '09C7 09A3 (09CD (09BF|09C7|09C8))',
2071 'replace' => '09A3 \\1',
2072 ),
2073 414 =>
2074 array (
2075 'match' => '09C7 09A4 (09CD (09BF|09C7|09C8))',
2076 'replace' => '09A4 \\1',
2077 ),
2078 415 =>
2079 array (
2080 'match' => '09C7 09A5 (09CD (09BF|09C7|09C8))',
2081 'replace' => '09A5 \\1',
2082 ),
2083 416 =>
2084 array (
2085 'match' => '09C7 09A6 (09CD (09BF|09C7|09C8))',
2086 'replace' => '09A6 \\1',
2087 ),
2088 417 =>
2089 array (
2090 'match' => '09C7 09A7 (09CD (09BF|09C7|09C8))',
2091 'replace' => '09A7 \\1',
2092 ),
2093 418 =>
2094 array (
2095 'match' => '09C7 09A8 (09CD (09BF|09C7|09C8))',
2096 'replace' => '09A8 \\1',
2097 ),
2098 419 =>
2099 array (
2100 'match' => '09C7 09AA (09CD (09BF|09C7|09C8))',
2101 'replace' => '09AA \\1',
2102 ),
2103 420 =>
2104 array (
2105 'match' => '09C7 09AB (09CD (09BF|09C7|09C8))',
2106 'replace' => '09AB \\1',
2107 ),
2108 421 =>
2109 array (
2110 'match' => '09C7 09AC (09CD (09BF|09C7|09C8))',
2111 'replace' => '09AC \\1',
2112 ),
2113 422 =>
2114 array (
2115 'match' => '09C7 09AD (09CD (09BF|09C7|09C8))',
2116 'replace' => '09AD \\1',
2117 ),
2118 423 =>
2119 array (
2120 'match' => '09C7 09AE (09CD (09BF|09C7|09C8))',
2121 'replace' => '09AE \\1',
2122 ),
2123 424 =>
2124 array (
2125 'match' => '09C7 09AF (09CD (09BF|09C7|09C8))',
2126 'replace' => '09AF \\1',
2127 ),
2128 425 =>
2129 array (
2130 'match' => '09C7 09B0 (09CD (09BF|09C7|09C8))',
2131 'replace' => '09B0 \\1',
2132 ),
2133 426 =>
2134 array (
2135 'match' => '09C7 09B2 (09CD (09BF|09C7|09C8))',
2136 'replace' => '09B2 \\1',
2137 ),
2138 427 =>
2139 array (
2140 'match' => '09C7 09B6 (09CD (09BF|09C7|09C8))',
2141 'replace' => '09B6 \\1',
2142 ),
2143 428 =>
2144 array (
2145 'match' => '09C7 09B7 (09CD (09BF|09C7|09C8))',
2146 'replace' => '09B7 \\1',
2147 ),
2148 429 =>
2149 array (
2150 'match' => '09C7 09B8 (09CD (09BF|09C7|09C8))',
2151 'replace' => '09B8 \\1',
2152 ),
2153 430 =>
2154 array (
2155 'match' => '09C7 09B9 (09CD (09BF|09C7|09C8))',
2156 'replace' => '09B9 \\1',
2157 ),
2158 431 =>
2159 array (
2160 'match' => '09C7 09DC (09CD (09BF|09C7|09C8))',
2161 'replace' => '09DC \\1',
2162 ),
2163 432 =>
2164 array (
2165 'match' => '09C7 09DD (09CD (09BF|09C7|09C8))',
2166 'replace' => '09DD \\1',
2167 ),
2168 433 =>
2169 array (
2170 'match' => '09C7 09DF (09CD (09BF|09C7|09C8))',
2171 'replace' => '09DF \\1',
2172 ),
2173 434 =>
2174 array (
2175 'match' => '09C8 0995 (09CD (09BF|09C7|09C8))',
2176 'replace' => '0995 \\1',
2177 ),
2178 435 =>
2179 array (
2180 'match' => '09C8 0996 (09CD (09BF|09C7|09C8))',
2181 'replace' => '0996 \\1',
2182 ),
2183 436 =>
2184 array (
2185 'match' => '09C8 0997 (09CD (09BF|09C7|09C8))',
2186 'replace' => '0997 \\1',
2187 ),
2188 437 =>
2189 array (
2190 'match' => '09C8 0998 (09CD (09BF|09C7|09C8))',
2191 'replace' => '0998 \\1',
2192 ),
2193 438 =>
2194 array (
2195 'match' => '09C8 0999 (09CD (09BF|09C7|09C8))',
2196 'replace' => '0999 \\1',
2197 ),
2198 439 =>
2199 array (
2200 'match' => '09C8 099A (09CD (09BF|09C7|09C8))',
2201 'replace' => '099A \\1',
2202 ),
2203 440 =>
2204 array (
2205 'match' => '09C8 099B (09CD (09BF|09C7|09C8))',
2206 'replace' => '099B \\1',
2207 ),
2208 441 =>
2209 array (
2210 'match' => '09C8 099C (09CD (09BF|09C7|09C8))',
2211 'replace' => '099C \\1',
2212 ),
2213 442 =>
2214 array (
2215 'match' => '09C8 099D (09CD (09BF|09C7|09C8))',
2216 'replace' => '099D \\1',
2217 ),
2218 443 =>
2219 array (
2220 'match' => '09C8 099F (09CD (09BF|09C7|09C8))',
2221 'replace' => '099F \\1',
2222 ),
2223 444 =>
2224 array (
2225 'match' => '09C8 09A0 (09CD (09BF|09C7|09C8))',
2226 'replace' => '09A0 \\1',
2227 ),
2228 445 =>
2229 array (
2230 'match' => '09C8 09A1 (09CD (09BF|09C7|09C8))',
2231 'replace' => '09A1 \\1',
2232 ),
2233 446 =>
2234 array (
2235 'match' => '09C8 09A2 (09CD (09BF|09C7|09C8))',
2236 'replace' => '09A2 \\1',
2237 ),
2238 447 =>
2239 array (
2240 'match' => '09C8 09A3 (09CD (09BF|09C7|09C8))',
2241 'replace' => '09A3 \\1',
2242 ),
2243 448 =>
2244 array (
2245 'match' => '09C8 09A4 (09CD (09BF|09C7|09C8))',
2246 'replace' => '09A4 \\1',
2247 ),
2248 449 =>
2249 array (
2250 'match' => '09C8 09A5 (09CD (09BF|09C7|09C8))',
2251 'replace' => '09A5 \\1',
2252 ),
2253 450 =>
2254 array (
2255 'match' => '09C8 09A6 (09CD (09BF|09C7|09C8))',
2256 'replace' => '09A6 \\1',
2257 ),
2258 451 =>
2259 array (
2260 'match' => '09C8 09A7 (09CD (09BF|09C7|09C8))',
2261 'replace' => '09A7 \\1',
2262 ),
2263 452 =>
2264 array (
2265 'match' => '09C8 09A8 (09CD (09BF|09C7|09C8))',
2266 'replace' => '09A8 \\1',
2267 ),
2268 453 =>
2269 array (
2270 'match' => '09C8 09AA (09CD (09BF|09C7|09C8))',
2271 'replace' => '09AA \\1',
2272 ),
2273 454 =>
2274 array (
2275 'match' => '09C8 09AB (09CD (09BF|09C7|09C8))',
2276 'replace' => '09AB \\1',
2277 ),
2278 455 =>
2279 array (
2280 'match' => '09C8 09AC (09CD (09BF|09C7|09C8))',
2281 'replace' => '09AC \\1',
2282 ),
2283 456 =>
2284 array (
2285 'match' => '09C8 09AD (09CD (09BF|09C7|09C8))',
2286 'replace' => '09AD \\1',
2287 ),
2288 457 =>
2289 array (
2290 'match' => '09C8 09AE (09CD (09BF|09C7|09C8))',
2291 'replace' => '09AE \\1',
2292 ),
2293 458 =>
2294 array (
2295 'match' => '09C8 09AF (09CD (09BF|09C7|09C8))',
2296 'replace' => '09AF \\1',
2297 ),
2298 459 =>
2299 array (
2300 'match' => '09C8 09B0 (09CD (09BF|09C7|09C8))',
2301 'replace' => '09B0 \\1',
2302 ),
2303 460 =>
2304 array (
2305 'match' => '09C8 09B2 (09CD (09BF|09C7|09C8))',
2306 'replace' => '09B2 \\1',
2307 ),
2308 461 =>
2309 array (
2310 'match' => '09C8 09B6 (09CD (09BF|09C7|09C8))',
2311 'replace' => '09B6 \\1',
2312 ),
2313 462 =>
2314 array (
2315 'match' => '09C8 09B7 (09CD (09BF|09C7|09C8))',
2316 'replace' => '09B7 \\1',
2317 ),
2318 463 =>
2319 array (
2320 'match' => '09C8 09B8 (09CD (09BF|09C7|09C8))',
2321 'replace' => '09B8 \\1',
2322 ),
2323 464 =>
2324 array (
2325 'match' => '09C8 09B9 (09CD (09BF|09C7|09C8))',
2326 'replace' => '09B9 \\1',
2327 ),
2328 465 =>
2329 array (
2330 'match' => '09C8 09DC (09CD (09BF|09C7|09C8))',
2331 'replace' => '09DC \\1',
2332 ),
2333 466 =>
2334 array (
2335 'match' => '09C8 09DD (09CD (09BF|09C7|09C8))',
2336 'replace' => '09DD \\1',
2337 ),
2338 467 =>
2339 array (
2340 'match' => '09C8 09DF (09CD (09BF|09C7|09C8))',
2341 'replace' => '09DF \\1',
2342 ),
2343 468 =>
2344 array (
2345 'match' => '09BF 0995 (007E (09BF|09C7|09C8))',
2346 'replace' => '0995 \\1',
2347 ),
2348 469 =>
2349 array (
2350 'match' => '09BF 0996 (007E (09BF|09C7|09C8))',
2351 'replace' => '0996 \\1',
2352 ),
2353 470 =>
2354 array (
2355 'match' => '09BF 0997 (007E (09BF|09C7|09C8))',
2356 'replace' => '0997 \\1',
2357 ),
2358 471 =>
2359 array (
2360 'match' => '09BF 0998 (007E (09BF|09C7|09C8))',
2361 'replace' => '0998 \\1',
2362 ),
2363 472 =>
2364 array (
2365 'match' => '09BF 0999 (007E (09BF|09C7|09C8))',
2366 'replace' => '0999 \\1',
2367 ),
2368 473 =>
2369 array (
2370 'match' => '09BF 099A (007E (09BF|09C7|09C8))',
2371 'replace' => '099A \\1',
2372 ),
2373 474 =>
2374 array (
2375 'match' => '09BF 099B (007E (09BF|09C7|09C8))',
2376 'replace' => '099B \\1',
2377 ),
2378 475 =>
2379 array (
2380 'match' => '09BF 099C (007E (09BF|09C7|09C8))',
2381 'replace' => '099C \\1',
2382 ),
2383 476 =>
2384 array (
2385 'match' => '09BF 099D (007E (09BF|09C7|09C8))',
2386 'replace' => '099D \\1',
2387 ),
2388 477 =>
2389 array (
2390 'match' => '09BF 099F (007E (09BF|09C7|09C8))',
2391 'replace' => '099F \\1',
2392 ),
2393 478 =>
2394 array (
2395 'match' => '09BF 09A0 (007E (09BF|09C7|09C8))',
2396 'replace' => '09A0 \\1',
2397 ),
2398 479 =>
2399 array (
2400 'match' => '09BF 09A1 (007E (09BF|09C7|09C8))',
2401 'replace' => '09A1 \\1',
2402 ),
2403 480 =>
2404 array (
2405 'match' => '09BF 09A2 (007E (09BF|09C7|09C8))',
2406 'replace' => '09A2 \\1',
2407 ),
2408 481 =>
2409 array (
2410 'match' => '09BF 09A3 (007E (09BF|09C7|09C8))',
2411 'replace' => '09A3 \\1',
2412 ),
2413 482 =>
2414 array (
2415 'match' => '09BF 09A4 (007E (09BF|09C7|09C8))',
2416 'replace' => '09A4 \\1',
2417 ),
2418 483 =>
2419 array (
2420 'match' => '09BF 09A5 (007E (09BF|09C7|09C8))',
2421 'replace' => '09A5 \\1',
2422 ),
2423 484 =>
2424 array (
2425 'match' => '09BF 09A6 (007E (09BF|09C7|09C8))',
2426 'replace' => '09A6 \\1',
2427 ),
2428 485 =>
2429 array (
2430 'match' => '09BF 09A7 (007E (09BF|09C7|09C8))',
2431 'replace' => '09A7 \\1',
2432 ),
2433 486 =>
2434 array (
2435 'match' => '09BF 09A8 (007E (09BF|09C7|09C8))',
2436 'replace' => '09A8 \\1',
2437 ),
2438 487 =>
2439 array (
2440 'match' => '09BF 09AA (007E (09BF|09C7|09C8))',
2441 'replace' => '09AA \\1',
2442 ),
2443 488 =>
2444 array (
2445 'match' => '09BF 09AB (007E (09BF|09C7|09C8))',
2446 'replace' => '09AB \\1',
2447 ),
2448 489 =>
2449 array (
2450 'match' => '09BF 09AC (007E (09BF|09C7|09C8))',
2451 'replace' => '09AC \\1',
2452 ),
2453 490 =>
2454 array (
2455 'match' => '09BF 09AD (007E (09BF|09C7|09C8))',
2456 'replace' => '09AD \\1',
2457 ),
2458 491 =>
2459 array (
2460 'match' => '09BF 09AE (007E (09BF|09C7|09C8))',
2461 'replace' => '09AE \\1',
2462 ),
2463 492 =>
2464 array (
2465 'match' => '09BF 09AF (007E (09BF|09C7|09C8))',
2466 'replace' => '09AF \\1',
2467 ),
2468 493 =>
2469 array (
2470 'match' => '09BF 09B0 (007E (09BF|09C7|09C8))',
2471 'replace' => '09B0 \\1',
2472 ),
2473 494 =>
2474 array (
2475 'match' => '09BF 09B2 (007E (09BF|09C7|09C8))',
2476 'replace' => '09B2 \\1',
2477 ),
2478 495 =>
2479 array (
2480 'match' => '09BF 09B6 (007E (09BF|09C7|09C8))',
2481 'replace' => '09B6 \\1',
2482 ),
2483 496 =>
2484 array (
2485 'match' => '09BF 09B7 (007E (09BF|09C7|09C8))',
2486 'replace' => '09B7 \\1',
2487 ),
2488 497 =>
2489 array (
2490 'match' => '09BF 09B8 (007E (09BF|09C7|09C8))',
2491 'replace' => '09B8 \\1',
2492 ),
2493 498 =>
2494 array (
2495 'match' => '09BF 09B9 (007E (09BF|09C7|09C8))',
2496 'replace' => '09B9 \\1',
2497 ),
2498 499 =>
2499 array (
2500 'match' => '09BF 09DC (007E (09BF|09C7|09C8))',
2501 'replace' => '09DC \\1',
2502 ),
2503 500 =>
2504 array (
2505 'match' => '09BF 09DD (007E (09BF|09C7|09C8))',
2506 'replace' => '09DD \\1',
2507 ),
2508 501 =>
2509 array (
2510 'match' => '09BF 09DF (007E (09BF|09C7|09C8))',
2511 'replace' => '09DF \\1',
2512 ),
2513 502 =>
2514 array (
2515 'match' => '09C7 0995 (007E (09BF|09C7|09C8))',
2516 'replace' => '0995 \\1',
2517 ),
2518 503 =>
2519 array (
2520 'match' => '09C7 0996 (007E (09BF|09C7|09C8))',
2521 'replace' => '0996 \\1',
2522 ),
2523 504 =>
2524 array (
2525 'match' => '09C7 0997 (007E (09BF|09C7|09C8))',
2526 'replace' => '0997 \\1',
2527 ),
2528 505 =>
2529 array (
2530 'match' => '09C7 0998 (007E (09BF|09C7|09C8))',
2531 'replace' => '0998 \\1',
2532 ),
2533 506 =>
2534 array (
2535 'match' => '09C7 0999 (007E (09BF|09C7|09C8))',
2536 'replace' => '0999 \\1',
2537 ),
2538 507 =>
2539 array (
2540 'match' => '09C7 099A (007E (09BF|09C7|09C8))',
2541 'replace' => '099A \\1',
2542 ),
2543 508 =>
2544 array (
2545 'match' => '09C7 099B (007E (09BF|09C7|09C8))',
2546 'replace' => '099B \\1',
2547 ),
2548 509 =>
2549 array (
2550 'match' => '09C7 099C (007E (09BF|09C7|09C8))',
2551 'replace' => '099C \\1',
2552 ),
2553 510 =>
2554 array (
2555 'match' => '09C7 099D (007E (09BF|09C7|09C8))',
2556 'replace' => '099D \\1',
2557 ),
2558 511 =>
2559 array (
2560 'match' => '09C7 099F (007E (09BF|09C7|09C8))',
2561 'replace' => '099F \\1',
2562 ),
2563 512 =>
2564 array (
2565 'match' => '09C7 09A0 (007E (09BF|09C7|09C8))',
2566 'replace' => '09A0 \\1',
2567 ),
2568 513 =>
2569 array (
2570 'match' => '09C7 09A1 (007E (09BF|09C7|09C8))',
2571 'replace' => '09A1 \\1',
2572 ),
2573 514 =>
2574 array (
2575 'match' => '09C7 09A2 (007E (09BF|09C7|09C8))',
2576 'replace' => '09A2 \\1',
2577 ),
2578 515 =>
2579 array (
2580 'match' => '09C7 09A3 (007E (09BF|09C7|09C8))',
2581 'replace' => '09A3 \\1',
2582 ),
2583 516 =>
2584 array (
2585 'match' => '09C7 09A4 (007E (09BF|09C7|09C8))',
2586 'replace' => '09A4 \\1',
2587 ),
2588 517 =>
2589 array (
2590 'match' => '09C7 09A5 (007E (09BF|09C7|09C8))',
2591 'replace' => '09A5 \\1',
2592 ),
2593 518 =>
2594 array (
2595 'match' => '09C7 09A6 (007E (09BF|09C7|09C8))',
2596 'replace' => '09A6 \\1',
2597 ),
2598 519 =>
2599 array (
2600 'match' => '09C7 09A7 (007E (09BF|09C7|09C8))',
2601 'replace' => '09A7 \\1',
2602 ),
2603 520 =>
2604 array (
2605 'match' => '09C7 09A8 (007E (09BF|09C7|09C8))',
2606 'replace' => '09A8 \\1',
2607 ),
2608 521 =>
2609 array (
2610 'match' => '09C7 09AA (007E (09BF|09C7|09C8))',
2611 'replace' => '09AA \\1',
2612 ),
2613 522 =>
2614 array (
2615 'match' => '09C7 09AB (007E (09BF|09C7|09C8))',
2616 'replace' => '09AB \\1',
2617 ),
2618 523 =>
2619 array (
2620 'match' => '09C7 09AC (007E (09BF|09C7|09C8))',
2621 'replace' => '09AC \\1',
2622 ),
2623 524 =>
2624 array (
2625 'match' => '09C7 09AD (007E (09BF|09C7|09C8))',
2626 'replace' => '09AD \\1',
2627 ),
2628 525 =>
2629 array (
2630 'match' => '09C7 09AE (007E (09BF|09C7|09C8))',
2631 'replace' => '09AE \\1',
2632 ),
2633 526 =>
2634 array (
2635 'match' => '09C7 09AF (007E (09BF|09C7|09C8))',
2636 'replace' => '09AF \\1',
2637 ),
2638 527 =>
2639 array (
2640 'match' => '09C7 09B0 (007E (09BF|09C7|09C8))',
2641 'replace' => '09B0 \\1',
2642 ),
2643 528 =>
2644 array (
2645 'match' => '09C7 09B2 (007E (09BF|09C7|09C8))',
2646 'replace' => '09B2 \\1',
2647 ),
2648 529 =>
2649 array (
2650 'match' => '09C7 09B6 (007E (09BF|09C7|09C8))',
2651 'replace' => '09B6 \\1',
2652 ),
2653 530 =>
2654 array (
2655 'match' => '09C7 09B7 (007E (09BF|09C7|09C8))',
2656 'replace' => '09B7 \\1',
2657 ),
2658 531 =>
2659 array (
2660 'match' => '09C7 09B8 (007E (09BF|09C7|09C8))',
2661 'replace' => '09B8 \\1',
2662 ),
2663 532 =>
2664 array (
2665 'match' => '09C7 09B9 (007E (09BF|09C7|09C8))',
2666 'replace' => '09B9 \\1',
2667 ),
2668 533 =>
2669 array (
2670 'match' => '09C7 09DC (007E (09BF|09C7|09C8))',
2671 'replace' => '09DC \\1',
2672 ),
2673 534 =>
2674 array (
2675 'match' => '09C7 09DD (007E (09BF|09C7|09C8))',
2676 'replace' => '09DD \\1',
2677 ),
2678 535 =>
2679 array (
2680 'match' => '09C7 09DF (007E (09BF|09C7|09C8))',
2681 'replace' => '09DF \\1',
2682 ),
2683 536 =>
2684 array (
2685 'match' => '09C8 0995 (007E (09BF|09C7|09C8))',
2686 'replace' => '0995 \\1',
2687 ),
2688 537 =>
2689 array (
2690 'match' => '09C8 0996 (007E (09BF|09C7|09C8))',
2691 'replace' => '0996 \\1',
2692 ),
2693 538 =>
2694 array (
2695 'match' => '09C8 0997 (007E (09BF|09C7|09C8))',
2696 'replace' => '0997 \\1',
2697 ),
2698 539 =>
2699 array (
2700 'match' => '09C8 0998 (007E (09BF|09C7|09C8))',
2701 'replace' => '0998 \\1',
2702 ),
2703 540 =>
2704 array (
2705 'match' => '09C8 0999 (007E (09BF|09C7|09C8))',
2706 'replace' => '0999 \\1',
2707 ),
2708 541 =>
2709 array (
2710 'match' => '09C8 099A (007E (09BF|09C7|09C8))',
2711 'replace' => '099A \\1',
2712 ),
2713 542 =>
2714 array (
2715 'match' => '09C8 099B (007E (09BF|09C7|09C8))',
2716 'replace' => '099B \\1',
2717 ),
2718 543 =>
2719 array (
2720 'match' => '09C8 099C (007E (09BF|09C7|09C8))',
2721 'replace' => '099C \\1',
2722 ),
2723 544 =>
2724 array (
2725 'match' => '09C8 099D (007E (09BF|09C7|09C8))',
2726 'replace' => '099D \\1',
2727 ),
2728 545 =>
2729 array (
2730 'match' => '09C8 099F (007E (09BF|09C7|09C8))',
2731 'replace' => '099F \\1',
2732 ),
2733 546 =>
2734 array (
2735 'match' => '09C8 09A0 (007E (09BF|09C7|09C8))',
2736 'replace' => '09A0 \\1',
2737 ),
2738 547 =>
2739 array (
2740 'match' => '09C8 09A1 (007E (09BF|09C7|09C8))',
2741 'replace' => '09A1 \\1',
2742 ),
2743 548 =>
2744 array (
2745 'match' => '09C8 09A2 (007E (09BF|09C7|09C8))',
2746 'replace' => '09A2 \\1',
2747 ),
2748 549 =>
2749 array (
2750 'match' => '09C8 09A3 (007E (09BF|09C7|09C8))',
2751 'replace' => '09A3 \\1',
2752 ),
2753 550 =>
2754 array (
2755 'match' => '09C8 09A4 (007E (09BF|09C7|09C8))',
2756 'replace' => '09A4 \\1',
2757 ),
2758 551 =>
2759 array (
2760 'match' => '09C8 09A5 (007E (09BF|09C7|09C8))',
2761 'replace' => '09A5 \\1',
2762 ),
2763 552 =>
2764 array (
2765 'match' => '09C8 09A6 (007E (09BF|09C7|09C8))',
2766 'replace' => '09A6 \\1',
2767 ),
2768 553 =>
2769 array (
2770 'match' => '09C8 09A7 (007E (09BF|09C7|09C8))',
2771 'replace' => '09A7 \\1',
2772 ),
2773 554 =>
2774 array (
2775 'match' => '09C8 09A8 (007E (09BF|09C7|09C8))',
2776 'replace' => '09A8 \\1',
2777 ),
2778 555 =>
2779 array (
2780 'match' => '09C8 09AA (007E (09BF|09C7|09C8))',
2781 'replace' => '09AA \\1',
2782 ),
2783 556 =>
2784 array (
2785 'match' => '09C8 09AB (007E (09BF|09C7|09C8))',
2786 'replace' => '09AB \\1',
2787 ),
2788 557 =>
2789 array (
2790 'match' => '09C8 09AC (007E (09BF|09C7|09C8))',
2791 'replace' => '09AC \\1',
2792 ),
2793 558 =>
2794 array (
2795 'match' => '09C8 09AD (007E (09BF|09C7|09C8))',
2796 'replace' => '09AD \\1',
2797 ),
2798 559 =>
2799 array (
2800 'match' => '09C8 09AE (007E (09BF|09C7|09C8))',
2801 'replace' => '09AE \\1',
2802 ),
2803 560 =>
2804 array (
2805 'match' => '09C8 09AF (007E (09BF|09C7|09C8))',
2806 'replace' => '09AF \\1',
2807 ),
2808 561 =>
2809 array (
2810 'match' => '09C8 09B0 (007E (09BF|09C7|09C8))',
2811 'replace' => '09B0 \\1',
2812 ),
2813 562 =>
2814 array (
2815 'match' => '09C8 09B2 (007E (09BF|09C7|09C8))',
2816 'replace' => '09B2 \\1',
2817 ),
2818 563 =>
2819 array (
2820 'match' => '09C8 09B6 (007E (09BF|09C7|09C8))',
2821 'replace' => '09B6 \\1',
2822 ),
2823 564 =>
2824 array (
2825 'match' => '09C8 09B7 (007E (09BF|09C7|09C8))',
2826 'replace' => '09B7 \\1',
2827 ),
2828 565 =>
2829 array (
2830 'match' => '09C8 09B8 (007E (09BF|09C7|09C8))',
2831 'replace' => '09B8 \\1',
2832 ),
2833 566 =>
2834 array (
2835 'match' => '09C8 09B9 (007E (09BF|09C7|09C8))',
2836 'replace' => '09B9 \\1',
2837 ),
2838 567 =>
2839 array (
2840 'match' => '09C8 09DC (007E (09BF|09C7|09C8))',
2841 'replace' => '09DC \\1',
2842 ),
2843 568 =>
2844 array (
2845 'match' => '09C8 09DD (007E (09BF|09C7|09C8))',
2846 'replace' => '09DD \\1',
2847 ),
2848 569 =>
2849 array (
2850 'match' => '09C8 09DF (007E (09BF|09C7|09C8))',
2851 'replace' => '09DF \\1',
2852 ),
2853 570 =>
2854 array (
2855 'match' => '09A4 09CD',
2856 'replace' => 'E066',
2857 ),
2858 571 =>
2859 array (
2860 'match' => '09A4 007E',
2861 'replace' => 'E066',
2862 ),
2863 572 =>
2864 array (
2865 'match' => 'E066 200D',
2866 'replace' => 'E066',
2867 ),
2868 573 =>
2869 array (
2870 'match' => '09BF 200D',
2871 'replace' => '09BF',
2872 ),
2873 574 =>
2874 array (
2875 'match' => '09C7 200D',
2876 'replace' => '09C7',
2877 ),
2878 575 =>
2879 array (
2880 'match' => '09C8 200D',
2881 'replace' => '09C8',
2882 ),
2883 576 =>
2884 array (
2885 'match' => '007E',
2886 'replace' => '09CD',
2887 ),
2888 577 =>
2889 array (
2890 'match' => '200C',
2891 'replace' => '09CD',
2892 ),
2893 578 =>
2894 array (
2895 'match' => '00D0',
2896 'replace' => '09CD',
2897 ),
2898 579 =>
2899 array (
2900 'match' => '0997 09C1',
2901 'replace' => 'E00A',
2902 ),
2903 580 =>
2904 array (
2905 'match' => '09DC 09C1',
2906 'replace' => 'E012',
2907 ),
2908 581 =>
2909 array (
2910 'match' => '09DC 09C2',
2911 'replace' => 'E013',
2912 ),
2913 582 =>
2914 array (
2915 'match' => '09DC 09C3',
2916 'replace' => 'E014',
2917 ),
2918 583 =>
2919 array (
2920 'match' => '09DC 09C4',
2921 'replace' => 'E015',
2922 ),
2923 584 =>
2924 array (
2925 'match' => '09DD 09C1',
2926 'replace' => 'E016',
2927 ),
2928 585 =>
2929 array (
2930 'match' => '09DD 09C2',
2931 'replace' => 'E017',
2932 ),
2933 586 =>
2934 array (
2935 'match' => '09DD 09C3',
2936 'replace' => 'E018',
2937 ),
2938 587 =>
2939 array (
2940 'match' => '09DD 09C4',
2941 'replace' => 'E019',
2942 ),
2943 588 =>
2944 array (
2945 'match' => '09B6 09C1',
2946 'replace' => 'E00F',
2947 ),
2948 589 =>
2949 array (
2950 'match' => '09B9 09C1',
2951 'replace' => 'E010',
2952 ),
2953 590 =>
2954 array (
2955 'match' => '09B9 09C3',
2956 'replace' => 'E011',
2957 ),
2958 591 =>
2959 array (
2960 'match' => 'E084 09C1',
2961 'replace' => 'E19B',
2962 ),
2963 592 =>
2964 array (
2965 'match' => 'E0F4 09C1',
2966 'replace' => 'E19C',
2967 ),
2968 593 =>
2969 array (
2970 'match' => 'E10D 09C1',
2971 'replace' => 'E19D',
2972 ),
2973 594 =>
2974 array (
2975 'match' => 'E128 09C1',
2976 'replace' => 'E19E',
2977 ),
2978 595 =>
2979 array (
2980 'match' => 'E133 09C1',
2981 'replace' => 'E19F',
2982 ),
2983 596 =>
2984 array (
2985 'match' => 'E155 09C1',
2986 'replace' => 'E1A0',
2987 ),
2988 597 =>
2989 array (
2990 'match' => 'E169 09C1',
2991 'replace' => 'E1A1',
2992 ),
2993 598 =>
2994 array (
2995 'match' => 'E182 09C1',
2996 'replace' => 'E1A2',
2997 ),
2998 599 =>
2999 array (
3000 '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))',
3001 'replace' => 'E01C \\1',
3002 ),
3003 600 =>
3004 array (
3005 'match' => '((0995|0999|099A|099B|099F|09A0|09A1|09A2|09A4|09AB|09AD|09B9)) 09BE',
3006 'replace' => '\\1 E01A',
3007 ),
3008 601 =>
3009 array (
3010 'match' => '((0995|0999|099A|099B|099F|09A0|09A1|09A2|09A4|09AB|09AD|09B9)) 09D7',
3011 'replace' => '\\1 E03F',
3012 ),
3013 602 =>
3014 array (
3015 'match' => '((09A6)) 09BE',
3016 'replace' => '\\1 E01B',
3017 ),
3018 603 =>
3019 array (
3020 'match' => '((09A6)) 09D7',
3021 'replace' => '\\1 E040',
3022 ),
3023 604 =>
3024 array (
3025 'match' => '09C0 0981',
3026 'replace' => 'E1B4',
3027 ),
3028 605 =>
3029 array (
3030 'match' => '09D7 0981',
3031 'replace' => 'E1B5',
3032 ),
3033 606 =>
3034 array (
3035 'match' => 'E01D 0981',
3036 'replace' => 'E1B6',
3037 ),
3038 607 =>
3039 array (
3040 'match' => 'E01E 0981',
3041 'replace' => 'E1B7',
3042 ),
3043 608 =>
3044 array (
3045 'match' => 'E01F 0981',
3046 'replace' => 'E1B8',
3047 ),
3048 609 =>
3049 array (
3050 'match' => 'E03F 0981',
3051 'replace' => 'E1B9',
3052 ),
3053 610 =>
3054 array (
3055 'match' => 'E040 0981',
3056 'replace' => 'E1BA',
3057 ),
3058 611 =>
3059 array (
3060 'match' => '09C0 E069',
3061 'replace' => 'E1BB',
3062 ),
3063 612 =>
3064 array (
3065 'match' => '09D7 E069',
3066 'replace' => 'E1BC',
3067 ),
3068 613 =>
3069 array (
3070 'match' => 'E01D E069',
3071 'replace' => 'E1BD',
3072 ),
3073 614 =>
3074 array (
3075 'match' => 'E01E E069',
3076 'replace' => 'E1BE',
3077 ),
3078 615 =>
3079 array (
3080 'match' => 'E01F E069',
3081 'replace' => 'E1BF',
3082 ),
3083 616 =>
3084 array (
3085 'match' => 'E03F E069',
3086 'replace' => 'E1C0',
3087 ),
3088 617 =>
3089 array (
3090 'match' => 'E040 E069',
3091 'replace' => 'E1C1',
3092 ),
3093 618 =>
3094 array (
3095 'match' => '0987 0981',
3096 'replace' => 'E1C2',
3097 ),
3098 619 =>
3099 array (
3100 'match' => '0988 0981',
3101 'replace' => 'E1C3',
3102 ),
3103 620 =>
3104 array (
3105 'match' => '098A 0981',
3106 'replace' => 'E1C4',
3107 ),
3108 621 =>
3109 array (
3110 'match' => '0990 0981',
3111 'replace' => 'E1C5',
3112 ),
3113 622 =>
3114 array (
3115 'match' => '0994 0981',
3116 'replace' => 'E1C6',
3117 ),
3118 623 =>
3119 array (
3120 'match' => '099F 0981',
3121 'replace' => 'E1C7',
3122 ),
3123 624 =>
3124 array (
3125 'match' => '09A0 0981',
3126 'replace' => 'E1C8',
3127 ),
3128 625 =>
3129 array (
3130 'match' => '099F E068',
3131 'replace' => 'E1C9',
3132 ),
3133 626 =>
3134 array (
3135 'match' => '09A0 E068',
3136 'replace' => 'E1CA',
3137 ),
3138 627 =>
3139 array (
3140 'match' => '099F E069',
3141 'replace' => 'E1CB',
3142 ),
3143 628 =>
3144 array (
3145 'match' => '09A0 E069',
3146 'replace' => 'E1CC',
3147 ),
3148 629 =>
3149 array (
3150 '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',
3151 'replace' => '\\1 E01D',
3152 ),
3153 630 =>
3154 array (
3155 'match' => '((09A6|E08F|E0B9|E0F4|E0F6|E0F7|E0F8|E0F9|E0FA|E0FD|E0DC|E0FF|E100|E101|E10F|E11E|E11F|E13B|E15A)) 09C0',
3156 'replace' => '\\1 E01E',
3157 ),
3158 631 =>
3159 array (
3160 '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',
3161 'replace' => '\\1 E01F',
3162 ),
3163);
3164?> \ 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
index a3e6c030..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/ind_gu_1_001.volt.php
+++ /dev/null
@@ -1,3314 +0,0 @@
1<?php
2 $volt = array (
3 0 =>
4 array (
5 'match' => '0A95 0ACD 0AB7',
6 'replace' => 'E002',
7 ),
8 1 =>
9 array (
10 'match' => '0A9C 0ACD 0A9E',
11 'replace' => 'E003',
12 ),
13 2 =>
14 array (
15 'match' => '0ACD 200C',
16 'replace' => 'E163',
17 ),
18 3 =>
19 array (
20 'match' => '0A95 0ABC',
21 'replace' => 'E004',
22 ),
23 4 =>
24 array (
25 'match' => '0A96 0ABC',
26 'replace' => 'E005',
27 ),
28 5 =>
29 array (
30 'match' => '0A97 0ABC',
31 'replace' => 'E006',
32 ),
33 6 =>
34 array (
35 'match' => '0A98 0ABC',
36 'replace' => 'E007',
37 ),
38 7 =>
39 array (
40 'match' => '0A99 0ABC',
41 'replace' => 'E008',
42 ),
43 8 =>
44 array (
45 'match' => '0A9A 0ABC',
46 'replace' => 'E009',
47 ),
48 9 =>
49 array (
50 'match' => '0A9B 0ABC',
51 'replace' => 'E00A',
52 ),
53 10 =>
54 array (
55 'match' => '0A9C 0ABC',
56 'replace' => 'E00B',
57 ),
58 11 =>
59 array (
60 'match' => '0A9D 0ABC',
61 'replace' => 'E00C',
62 ),
63 12 =>
64 array (
65 'match' => '0A9E 0ABC',
66 'replace' => 'E00D',
67 ),
68 13 =>
69 array (
70 'match' => '0A9F 0ABC',
71 'replace' => 'E00E',
72 ),
73 14 =>
74 array (
75 'match' => '0AA0 0ABC',
76 'replace' => 'E00F',
77 ),
78 15 =>
79 array (
80 'match' => '0AA1 0ABC',
81 'replace' => 'E010',
82 ),
83 16 =>
84 array (
85 'match' => '0AA2 0ABC',
86 'replace' => 'E011',
87 ),
88 17 =>
89 array (
90 'match' => '0AA3 0ABC',
91 'replace' => 'E012',
92 ),
93 18 =>
94 array (
95 'match' => '0AA4 0ABC',
96 'replace' => 'E013',
97 ),
98 19 =>
99 array (
100 'match' => '0AA5 0ABC',
101 'replace' => 'E014',
102 ),
103 20 =>
104 array (
105 'match' => '0AA6 0ABC',
106 'replace' => 'E015',
107 ),
108 21 =>
109 array (
110 'match' => '0AA7 0ABC',
111 'replace' => 'E016',
112 ),
113 22 =>
114 array (
115 'match' => '0AA8 0ABC',
116 'replace' => 'E017',
117 ),
118 23 =>
119 array (
120 'match' => '0AAA 0ABC',
121 'replace' => 'E018',
122 ),
123 24 =>
124 array (
125 'match' => '0AAB 0ABC',
126 'replace' => 'E019',
127 ),
128 25 =>
129 array (
130 'match' => '0AAC 0ABC',
131 'replace' => 'E01A',
132 ),
133 26 =>
134 array (
135 'match' => '0AAD 0ABC',
136 'replace' => 'E01B',
137 ),
138 27 =>
139 array (
140 'match' => '0AAE 0ABC',
141 'replace' => 'E01C',
142 ),
143 28 =>
144 array (
145 'match' => '0AAF 0ABC',
146 'replace' => 'E01D',
147 ),
148 29 =>
149 array (
150 'match' => '0AB0 0ABC',
151 'replace' => 'E01E',
152 ),
153 30 =>
154 array (
155 'match' => '0AB2 0ABC',
156 'replace' => 'E01F',
157 ),
158 31 =>
159 array (
160 'match' => '0AB3 0ABC',
161 'replace' => 'E020',
162 ),
163 32 =>
164 array (
165 'match' => '0AB5 0ABC',
166 'replace' => 'E021',
167 ),
168 33 =>
169 array (
170 'match' => '0AB6 0ABC',
171 'replace' => 'E022',
172 ),
173 34 =>
174 array (
175 'match' => '0AB7 0ABC',
176 'replace' => 'E023',
177 ),
178 35 =>
179 array (
180 'match' => '0AB8 0ABC',
181 'replace' => 'E024',
182 ),
183 36 =>
184 array (
185 'match' => '0AB9 0ABC',
186 'replace' => 'E025',
187 ),
188 37 =>
189 array (
190 'match' => 'E002 0ABC',
191 'replace' => 'E026',
192 ),
193 38 =>
194 array (
195 'match' => 'E003 0ABC',
196 'replace' => 'E027',
197 ),
198 39 =>
199 array (
200 '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',
201 'replace' => '\\1 E05D',
202 ),
203 40 =>
204 array (
205 'match' => '(25CC) 0ACD 0AB0',
206 'replace' => '\\1 E05D',
207 ),
208 41 =>
209 array (
210 'match' => '(200D) 0ACD 0AB0',
211 'replace' => '\\1 E05D',
212 ),
213 42 =>
214 array (
215 'match' => '(0020) 0ACD 0AB0',
216 'replace' => '\\1 E05D',
217 ),
218 43 =>
219 array (
220 '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',
221 'replace' => '\\1 E032',
222 ),
223 44 =>
224 array (
225 'match' => '((0ABE|0AC0|0AC1|0AC2|0AC3|0AC4|0AC5|0AC7|0AC8|0AC9|0ACB|0ACC)) 0AB0 0ACD',
226 'replace' => '\\1 E032',
227 ),
228 45 =>
229 array (
230 'match' => '(E05D) 0AB0 0ACD',
231 'replace' => '\\1 E032',
232 ),
233 46 =>
234 array (
235 'match' => '(25CC) 0AB0 0ACD',
236 'replace' => '\\1 E032',
237 ),
238 47 =>
239 array (
240 'match' => '0A95 E05D',
241 'replace' => 'E05E',
242 ),
243 48 =>
244 array (
245 'match' => '0A96 E05D',
246 'replace' => 'E05F',
247 ),
248 49 =>
249 array (
250 'match' => '0A97 E05D',
251 'replace' => 'E060',
252 ),
253 50 =>
254 array (
255 'match' => '0A98 E05D',
256 'replace' => 'E061',
257 ),
258 51 =>
259 array (
260 'match' => '0A99 E05D',
261 'replace' => 'E062',
262 ),
263 52 =>
264 array (
265 'match' => '0A9A E05D',
266 'replace' => 'E063',
267 ),
268 53 =>
269 array (
270 'match' => '0A9B E05D',
271 'replace' => 'E064',
272 ),
273 54 =>
274 array (
275 'match' => '0A9C E05D',
276 'replace' => 'E065',
277 ),
278 55 =>
279 array (
280 'match' => '0A9D E05D',
281 'replace' => 'E066',
282 ),
283 56 =>
284 array (
285 'match' => '0A9E E05D',
286 'replace' => 'E067',
287 ),
288 57 =>
289 array (
290 'match' => '0A9F E05D',
291 'replace' => 'E068',
292 ),
293 58 =>
294 array (
295 'match' => '0AA0 E05D',
296 'replace' => 'E069',
297 ),
298 59 =>
299 array (
300 'match' => '0AA1 E05D',
301 'replace' => 'E06A',
302 ),
303 60 =>
304 array (
305 'match' => '0AA2 E05D',
306 'replace' => 'E06B',
307 ),
308 61 =>
309 array (
310 'match' => '0AA3 E05D',
311 'replace' => 'E06C',
312 ),
313 62 =>
314 array (
315 'match' => '0AA4 E05D',
316 'replace' => 'E06D',
317 ),
318 63 =>
319 array (
320 'match' => '0AA5 E05D',
321 'replace' => 'E06E',
322 ),
323 64 =>
324 array (
325 'match' => '0AA6 E05D',
326 'replace' => 'E06F',
327 ),
328 65 =>
329 array (
330 'match' => '0AA7 E05D',
331 'replace' => 'E070',
332 ),
333 66 =>
334 array (
335 'match' => '0AA8 E05D',
336 'replace' => 'E071',
337 ),
338 67 =>
339 array (
340 'match' => '0AAA E05D',
341 'replace' => 'E072',
342 ),
343 68 =>
344 array (
345 'match' => '0AAB E05D',
346 'replace' => 'E073',
347 ),
348 69 =>
349 array (
350 'match' => '0AAC E05D',
351 'replace' => 'E074',
352 ),
353 70 =>
354 array (
355 'match' => '0AAD E05D',
356 'replace' => 'E075',
357 ),
358 71 =>
359 array (
360 'match' => '0AAE E05D',
361 'replace' => 'E076',
362 ),
363 72 =>
364 array (
365 'match' => '0AAF E05D',
366 'replace' => 'E077',
367 ),
368 73 =>
369 array (
370 'match' => '0AB0 E05D',
371 'replace' => 'E078',
372 ),
373 74 =>
374 array (
375 'match' => '0AB2 E05D',
376 'replace' => 'E079',
377 ),
378 75 =>
379 array (
380 'match' => '0AB3 E05D',
381 'replace' => 'E07A',
382 ),
383 76 =>
384 array (
385 'match' => '0AB5 E05D',
386 'replace' => 'E07B',
387 ),
388 77 =>
389 array (
390 'match' => '0AB6 E05D',
391 'replace' => 'E07C',
392 ),
393 78 =>
394 array (
395 'match' => '0AB7 E05D',
396 'replace' => 'E07D',
397 ),
398 79 =>
399 array (
400 'match' => '0AB8 E05D',
401 'replace' => 'E07E',
402 ),
403 80 =>
404 array (
405 'match' => '0AB9 E05D',
406 'replace' => 'E07F',
407 ),
408 81 =>
409 array (
410 'match' => 'E002 E05D',
411 'replace' => 'E080',
412 ),
413 82 =>
414 array (
415 'match' => 'E003 E05D',
416 'replace' => 'E081',
417 ),
418 83 =>
419 array (
420 'match' => 'E004 E05D',
421 'replace' => 'E082',
422 ),
423 84 =>
424 array (
425 'match' => 'E005 E05D',
426 'replace' => 'E083',
427 ),
428 85 =>
429 array (
430 'match' => 'E006 E05D',
431 'replace' => 'E084',
432 ),
433 86 =>
434 array (
435 'match' => 'E007 E05D',
436 'replace' => 'E085',
437 ),
438 87 =>
439 array (
440 'match' => 'E008 E05D',
441 'replace' => 'E086',
442 ),
443 88 =>
444 array (
445 'match' => 'E009 E05D',
446 'replace' => 'E087',
447 ),
448 89 =>
449 array (
450 'match' => 'E00A E05D',
451 'replace' => 'E088',
452 ),
453 90 =>
454 array (
455 'match' => 'E00B E05D',
456 'replace' => 'E089',
457 ),
458 91 =>
459 array (
460 'match' => 'E00C E05D',
461 'replace' => 'E08A',
462 ),
463 92 =>
464 array (
465 'match' => 'E00D E05D',
466 'replace' => 'E08B',
467 ),
468 93 =>
469 array (
470 'match' => 'E00E E05D',
471 'replace' => 'E08C',
472 ),
473 94 =>
474 array (
475 'match' => 'E00F E05D',
476 'replace' => 'E08D',
477 ),
478 95 =>
479 array (
480 'match' => 'E010 E05D',
481 'replace' => 'E08E',
482 ),
483 96 =>
484 array (
485 'match' => 'E011 E05D',
486 'replace' => 'E08F',
487 ),
488 97 =>
489 array (
490 'match' => 'E012 E05D',
491 'replace' => 'E090',
492 ),
493 98 =>
494 array (
495 'match' => 'E013 E05D',
496 'replace' => 'E091',
497 ),
498 99 =>
499 array (
500 'match' => 'E014 E05D',
501 'replace' => 'E092',
502 ),
503 100 =>
504 array (
505 'match' => 'E015 E05D',
506 'replace' => 'E093',
507 ),
508 101 =>
509 array (
510 'match' => 'E016 E05D',
511 'replace' => 'E094',
512 ),
513 102 =>
514 array (
515 'match' => 'E017 E05D',
516 'replace' => 'E095',
517 ),
518 103 =>
519 array (
520 'match' => 'E018 E05D',
521 'replace' => 'E096',
522 ),
523 104 =>
524 array (
525 'match' => 'E019 E05D',
526 'replace' => 'E097',
527 ),
528 105 =>
529 array (
530 'match' => 'E01A E05D',
531 'replace' => 'E098',
532 ),
533 106 =>
534 array (
535 'match' => 'E01B E05D',
536 'replace' => 'E099',
537 ),
538 107 =>
539 array (
540 'match' => 'E01C E05D',
541 'replace' => 'E09A',
542 ),
543 108 =>
544 array (
545 'match' => 'E01D E05D',
546 'replace' => 'E09B',
547 ),
548 109 =>
549 array (
550 'match' => 'E01E E05D',
551 'replace' => 'E09C',
552 ),
553 110 =>
554 array (
555 'match' => 'E01F E05D',
556 'replace' => 'E09D',
557 ),
558 111 =>
559 array (
560 'match' => 'E020 E05D',
561 'replace' => 'E09E',
562 ),
563 112 =>
564 array (
565 'match' => 'E021 E05D',
566 'replace' => 'E09F',
567 ),
568 113 =>
569 array (
570 'match' => 'E022 E05D',
571 'replace' => 'E0A0',
572 ),
573 114 =>
574 array (
575 'match' => 'E023 E05D',
576 'replace' => 'E0A1',
577 ),
578 115 =>
579 array (
580 'match' => 'E024 E05D',
581 'replace' => 'E0A2',
582 ),
583 116 =>
584 array (
585 'match' => 'E025 E05D',
586 'replace' => 'E0A3',
587 ),
588 117 =>
589 array (
590 'match' => 'E026 E05D',
591 'replace' => 'E0A4',
592 ),
593 118 =>
594 array (
595 'match' => 'E027 E05D',
596 'replace' => 'E0A5',
597 ),
598 119 =>
599 array (
600 '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))',
601 'replace' => 'E0A6 \\1',
602 ),
603 120 =>
604 array (
605 '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))',
606 'replace' => 'E0A7 \\1',
607 ),
608 121 =>
609 array (
610 '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))',
611 'replace' => 'E0A8 \\1',
612 ),
613 122 =>
614 array (
615 '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))',
616 'replace' => 'E0A9 \\1',
617 ),
618 123 =>
619 array (
620 '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))',
621 'replace' => 'E0AA \\1',
622 ),
623 124 =>
624 array (
625 '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))',
626 'replace' => 'E0AB \\1',
627 ),
628 125 =>
629 array (
630 '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))',
631 'replace' => 'E0AC \\1',
632 ),
633 126 =>
634 array (
635 '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))',
636 'replace' => 'E0AD \\1',
637 ),
638 127 =>
639 array (
640 '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))',
641 'replace' => 'E0AE \\1',
642 ),
643 128 =>
644 array (
645 '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))',
646 'replace' => 'E0AF \\1',
647 ),
648 129 =>
649 array (
650 '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))',
651 'replace' => 'E0B0 \\1',
652 ),
653 130 =>
654 array (
655 '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))',
656 'replace' => 'E0B1 \\1',
657 ),
658 131 =>
659 array (
660 '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))',
661 'replace' => 'E0B2 \\1',
662 ),
663 132 =>
664 array (
665 '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))',
666 'replace' => 'E0B3 \\1',
667 ),
668 133 =>
669 array (
670 '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))',
671 'replace' => 'E0B4 \\1',
672 ),
673 134 =>
674 array (
675 '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))',
676 'replace' => 'E0B5 \\1',
677 ),
678 135 =>
679 array (
680 '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))',
681 'replace' => 'E0B6 \\1',
682 ),
683 136 =>
684 array (
685 '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))',
686 'replace' => 'E0B7 \\1',
687 ),
688 137 =>
689 array (
690 '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))',
691 'replace' => 'E0B8 \\1',
692 ),
693 138 =>
694 array (
695 '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))',
696 'replace' => 'E0B9 \\1',
697 ),
698 139 =>
699 array (
700 '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))',
701 'replace' => 'E0BA \\1',
702 ),
703 140 =>
704 array (
705 '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))',
706 'replace' => 'E0BB \\1',
707 ),
708 141 =>
709 array (
710 '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))',
711 'replace' => 'E0BC \\1',
712 ),
713 142 =>
714 array (
715 '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))',
716 'replace' => 'E0BD \\1',
717 ),
718 143 =>
719 array (
720 '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))',
721 'replace' => 'E0BE \\1',
722 ),
723 144 =>
724 array (
725 '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))',
726 'replace' => 'E0BF \\1',
727 ),
728 145 =>
729 array (
730 '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))',
731 'replace' => 'E0C0 \\1',
732 ),
733 146 =>
734 array (
735 '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))',
736 'replace' => 'E0C1 \\1',
737 ),
738 147 =>
739 array (
740 '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))',
741 'replace' => 'E0C2 \\1',
742 ),
743 148 =>
744 array (
745 '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))',
746 'replace' => 'E0C3 \\1',
747 ),
748 149 =>
749 array (
750 '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))',
751 'replace' => 'E0C4 \\1',
752 ),
753 150 =>
754 array (
755 '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))',
756 'replace' => 'E0C5 \\1',
757 ),
758 151 =>
759 array (
760 '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))',
761 'replace' => 'E0C6 \\1',
762 ),
763 152 =>
764 array (
765 '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))',
766 'replace' => 'E0C7 \\1',
767 ),
768 153 =>
769 array (
770 '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))',
771 'replace' => 'E0C8 \\1',
772 ),
773 154 =>
774 array (
775 '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))',
776 'replace' => 'E0C9 \\1',
777 ),
778 155 =>
779 array (
780 '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))',
781 'replace' => 'E0CA \\1',
782 ),
783 156 =>
784 array (
785 '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))',
786 'replace' => 'E0CB \\1',
787 ),
788 157 =>
789 array (
790 '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))',
791 'replace' => 'E0CC \\1',
792 ),
793 158 =>
794 array (
795 '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))',
796 'replace' => 'E0CD \\1',
797 ),
798 159 =>
799 array (
800 '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))',
801 'replace' => 'E0CE \\1',
802 ),
803 160 =>
804 array (
805 '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))',
806 'replace' => 'E0CF \\1',
807 ),
808 161 =>
809 array (
810 '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))',
811 'replace' => 'E0D0 \\1',
812 ),
813 162 =>
814 array (
815 '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))',
816 'replace' => 'E0D1 \\1',
817 ),
818 163 =>
819 array (
820 '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))',
821 'replace' => 'E0D2 \\1',
822 ),
823 164 =>
824 array (
825 '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))',
826 'replace' => 'E0D3 \\1',
827 ),
828 165 =>
829 array (
830 '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))',
831 'replace' => 'E0D4 \\1',
832 ),
833 166 =>
834 array (
835 '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))',
836 'replace' => 'E0D5 \\1',
837 ),
838 167 =>
839 array (
840 '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))',
841 'replace' => 'E0D6 \\1',
842 ),
843 168 =>
844 array (
845 '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))',
846 'replace' => 'E0D7 \\1',
847 ),
848 169 =>
849 array (
850 '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))',
851 'replace' => 'E0D8 \\1',
852 ),
853 170 =>
854 array (
855 '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))',
856 'replace' => 'E0D9 \\1',
857 ),
858 171 =>
859 array (
860 '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))',
861 'replace' => 'E0DA \\1',
862 ),
863 172 =>
864 array (
865 '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))',
866 'replace' => 'E0DB \\1',
867 ),
868 173 =>
869 array (
870 '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))',
871 'replace' => 'E0DC \\1',
872 ),
873 174 =>
874 array (
875 '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))',
876 'replace' => 'E0DD \\1',
877 ),
878 175 =>
879 array (
880 '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))',
881 'replace' => 'E0DE \\1',
882 ),
883 176 =>
884 array (
885 '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))',
886 'replace' => 'E0DF \\1',
887 ),
888 177 =>
889 array (
890 '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))',
891 'replace' => 'E0E0 \\1',
892 ),
893 178 =>
894 array (
895 '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))',
896 'replace' => 'E0E1 \\1',
897 ),
898 179 =>
899 array (
900 '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))',
901 'replace' => 'E0E2 \\1',
902 ),
903 180 =>
904 array (
905 '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))',
906 'replace' => 'E0E3 \\1',
907 ),
908 181 =>
909 array (
910 '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))',
911 'replace' => 'E0E4 \\1',
912 ),
913 182 =>
914 array (
915 '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))',
916 'replace' => 'E0E5 \\1',
917 ),
918 183 =>
919 array (
920 '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))',
921 'replace' => 'E0E6 \\1',
922 ),
923 184 =>
924 array (
925 '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))',
926 'replace' => 'E0E7 \\1',
927 ),
928 185 =>
929 array (
930 '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))',
931 'replace' => 'E0E8 \\1',
932 ),
933 186 =>
934 array (
935 '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))',
936 'replace' => 'E0E9 \\1',
937 ),
938 187 =>
939 array (
940 '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))',
941 'replace' => 'E0EA \\1',
942 ),
943 188 =>
944 array (
945 '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))',
946 'replace' => 'E0EB \\1',
947 ),
948 189 =>
949 array (
950 '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))',
951 'replace' => 'E0EC \\1',
952 ),
953 190 =>
954 array (
955 '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))',
956 'replace' => 'E0ED \\1',
957 ),
958 191 =>
959 array (
960 '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))',
961 'replace' => 'E0EE \\1',
962 ),
963 192 =>
964 array (
965 '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))',
966 'replace' => 'E0EF \\1',
967 ),
968 193 =>
969 array (
970 '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))',
971 'replace' => 'E0F0 \\1',
972 ),
973 194 =>
974 array (
975 '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))',
976 'replace' => 'E0F1 \\1',
977 ),
978 195 =>
979 array (
980 '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))',
981 'replace' => 'E0F2 \\1',
982 ),
983 196 =>
984 array (
985 '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))',
986 'replace' => 'E0F3 \\1',
987 ),
988 197 =>
989 array (
990 '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))',
991 'replace' => 'E0F4 \\1',
992 ),
993 198 =>
994 array (
995 '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))',
996 'replace' => 'E0F5 \\1',
997 ),
998 199 =>
999 array (
1000 '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))',
1001 'replace' => 'E0F6 \\1',
1002 ),
1003 200 =>
1004 array (
1005 '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))',
1006 'replace' => 'E0F7 \\1',
1007 ),
1008 201 =>
1009 array (
1010 '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))',
1011 'replace' => 'E0F8 \\1',
1012 ),
1013 202 =>
1014 array (
1015 '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))',
1016 'replace' => 'E0F9 \\1',
1017 ),
1018 203 =>
1019 array (
1020 '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))',
1021 'replace' => 'E0FA \\1',
1022 ),
1023 204 =>
1024 array (
1025 '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))',
1026 'replace' => 'E0FB \\1',
1027 ),
1028 205 =>
1029 array (
1030 '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))',
1031 'replace' => 'E0FC \\1',
1032 ),
1033 206 =>
1034 array (
1035 '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))',
1036 'replace' => 'E0FD \\1',
1037 ),
1038 207 =>
1039 array (
1040 '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))',
1041 'replace' => 'E0FE \\1',
1042 ),
1043 208 =>
1044 array (
1045 '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))',
1046 'replace' => 'E0FF \\1',
1047 ),
1048 209 =>
1049 array (
1050 '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))',
1051 'replace' => 'E100 \\1',
1052 ),
1053 210 =>
1054 array (
1055 '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))',
1056 'replace' => 'E101 \\1',
1057 ),
1058 211 =>
1059 array (
1060 '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))',
1061 'replace' => 'E102 \\1',
1062 ),
1063 212 =>
1064 array (
1065 '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))',
1066 'replace' => 'E103 \\1',
1067 ),
1068 213 =>
1069 array (
1070 '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))',
1071 'replace' => 'E104 \\1',
1072 ),
1073 214 =>
1074 array (
1075 '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))',
1076 'replace' => 'E105 \\1',
1077 ),
1078 215 =>
1079 array (
1080 '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))',
1081 'replace' => 'E106 \\1',
1082 ),
1083 216 =>
1084 array (
1085 '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))',
1086 'replace' => 'E107 \\1',
1087 ),
1088 217 =>
1089 array (
1090 '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))',
1091 'replace' => 'E108 \\1',
1092 ),
1093 218 =>
1094 array (
1095 '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))',
1096 'replace' => 'E109 \\1',
1097 ),
1098 219 =>
1099 array (
1100 '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))',
1101 'replace' => 'E10A \\1',
1102 ),
1103 220 =>
1104 array (
1105 '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))',
1106 'replace' => 'E10B \\1',
1107 ),
1108 221 =>
1109 array (
1110 '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))',
1111 'replace' => 'E10C \\1',
1112 ),
1113 222 =>
1114 array (
1115 '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))',
1116 'replace' => 'E10D \\1',
1117 ),
1118 223 =>
1119 array (
1120 '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))',
1121 'replace' => 'E10E \\1',
1122 ),
1123 224 =>
1124 array (
1125 '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))',
1126 'replace' => 'E10F \\1',
1127 ),
1128 225 =>
1129 array (
1130 '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))',
1131 'replace' => 'E110 \\1',
1132 ),
1133 226 =>
1134 array (
1135 '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))',
1136 'replace' => 'E111 \\1',
1137 ),
1138 227 =>
1139 array (
1140 '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))',
1141 'replace' => 'E112 \\1',
1142 ),
1143 228 =>
1144 array (
1145 '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))',
1146 'replace' => 'E113 \\1',
1147 ),
1148 229 =>
1149 array (
1150 '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))',
1151 'replace' => 'E114 \\1',
1152 ),
1153 230 =>
1154 array (
1155 '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))',
1156 'replace' => 'E115 \\1',
1157 ),
1158 231 =>
1159 array (
1160 '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))',
1161 'replace' => 'E116 \\1',
1162 ),
1163 232 =>
1164 array (
1165 '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))',
1166 'replace' => 'E117 \\1',
1167 ),
1168 233 =>
1169 array (
1170 '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))',
1171 'replace' => 'E118 \\1',
1172 ),
1173 234 =>
1174 array (
1175 '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))',
1176 'replace' => 'E119 \\1',
1177 ),
1178 235 =>
1179 array (
1180 '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))',
1181 'replace' => 'E11A \\1',
1182 ),
1183 236 =>
1184 array (
1185 '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))',
1186 'replace' => 'E11B \\1',
1187 ),
1188 237 =>
1189 array (
1190 '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))',
1191 'replace' => 'E11C \\1',
1192 ),
1193 238 =>
1194 array (
1195 '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))',
1196 'replace' => 'E11D \\1',
1197 ),
1198 239 =>
1199 array (
1200 '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))',
1201 'replace' => 'E11E \\1',
1202 ),
1203 240 =>
1204 array (
1205 '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))',
1206 'replace' => 'E11F \\1',
1207 ),
1208 241 =>
1209 array (
1210 '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))',
1211 'replace' => 'E120 \\1',
1212 ),
1213 242 =>
1214 array (
1215 '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))',
1216 'replace' => 'E121 \\1',
1217 ),
1218 243 =>
1219 array (
1220 '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))',
1221 'replace' => 'E122 \\1',
1222 ),
1223 244 =>
1224 array (
1225 '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))',
1226 'replace' => 'E123 \\1',
1227 ),
1228 245 =>
1229 array (
1230 '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))',
1231 'replace' => 'E124 \\1',
1232 ),
1233 246 =>
1234 array (
1235 '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))',
1236 'replace' => 'E125 \\1',
1237 ),
1238 247 =>
1239 array (
1240 '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))',
1241 'replace' => 'E126 \\1',
1242 ),
1243 248 =>
1244 array (
1245 '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))',
1246 'replace' => 'E127 \\1',
1247 ),
1248 249 =>
1249 array (
1250 '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))',
1251 'replace' => 'E128 \\1',
1252 ),
1253 250 =>
1254 array (
1255 '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))',
1256 'replace' => 'E129 \\1',
1257 ),
1258 251 =>
1259 array (
1260 '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))',
1261 'replace' => 'E12A \\1',
1262 ),
1263 252 =>
1264 array (
1265 '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))',
1266 'replace' => 'E12B \\1',
1267 ),
1268 253 =>
1269 array (
1270 '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))',
1271 'replace' => 'E12C \\1',
1272 ),
1273 254 =>
1274 array (
1275 '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))',
1276 'replace' => 'E12D \\1',
1277 ),
1278 255 =>
1279 array (
1280 '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))',
1281 'replace' => 'E12E \\1',
1282 ),
1283 256 =>
1284 array (
1285 '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))',
1286 'replace' => 'E12F \\1',
1287 ),
1288 257 =>
1289 array (
1290 '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))',
1291 'replace' => 'E130 \\1',
1292 ),
1293 258 =>
1294 array (
1295 '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))',
1296 'replace' => 'E131 \\1',
1297 ),
1298 259 =>
1299 array (
1300 '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))',
1301 'replace' => 'E132 \\1',
1302 ),
1303 260 =>
1304 array (
1305 '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))',
1306 'replace' => 'E133 \\1',
1307 ),
1308 261 =>
1309 array (
1310 '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))',
1311 'replace' => 'E134 \\1',
1312 ),
1313 262 =>
1314 array (
1315 '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))',
1316 'replace' => 'E135 \\1',
1317 ),
1318 263 =>
1319 array (
1320 'match' => '0A95 0ACD (200D)',
1321 'replace' => 'E0A6 \\1',
1322 ),
1323 264 =>
1324 array (
1325 'match' => '0A96 0ACD (200D)',
1326 'replace' => 'E0A7 \\1',
1327 ),
1328 265 =>
1329 array (
1330 'match' => '0A97 0ACD (200D)',
1331 'replace' => 'E0A8 \\1',
1332 ),
1333 266 =>
1334 array (
1335 'match' => '0A98 0ACD (200D)',
1336 'replace' => 'E0A9 \\1',
1337 ),
1338 267 =>
1339 array (
1340 'match' => '0A99 0ACD (200D)',
1341 'replace' => 'E0AA \\1',
1342 ),
1343 268 =>
1344 array (
1345 'match' => '0A9A 0ACD (200D)',
1346 'replace' => 'E0AB \\1',
1347 ),
1348 269 =>
1349 array (
1350 'match' => '0A9B 0ACD (200D)',
1351 'replace' => 'E0AC \\1',
1352 ),
1353 270 =>
1354 array (
1355 'match' => '0A9C 0ACD (200D)',
1356 'replace' => 'E0AD \\1',
1357 ),
1358 271 =>
1359 array (
1360 'match' => '0A9D 0ACD (200D)',
1361 'replace' => 'E0AE \\1',
1362 ),
1363 272 =>
1364 array (
1365 'match' => '0A9E 0ACD (200D)',
1366 'replace' => 'E0AF \\1',
1367 ),
1368 273 =>
1369 array (
1370 'match' => '0A9F 0ACD (200D)',
1371 'replace' => 'E0B0 \\1',
1372 ),
1373 274 =>
1374 array (
1375 'match' => '0AA0 0ACD (200D)',
1376 'replace' => 'E0B1 \\1',
1377 ),
1378 275 =>
1379 array (
1380 'match' => '0AA1 0ACD (200D)',
1381 'replace' => 'E0B2 \\1',
1382 ),
1383 276 =>
1384 array (
1385 'match' => '0AA2 0ACD (200D)',
1386 'replace' => 'E0B3 \\1',
1387 ),
1388 277 =>
1389 array (
1390 'match' => '0AA3 0ACD (200D)',
1391 'replace' => 'E0B4 \\1',
1392 ),
1393 278 =>
1394 array (
1395 'match' => '0AA4 0ACD (200D)',
1396 'replace' => 'E0B5 \\1',
1397 ),
1398 279 =>
1399 array (
1400 'match' => '0AA5 0ACD (200D)',
1401 'replace' => 'E0B6 \\1',
1402 ),
1403 280 =>
1404 array (
1405 'match' => '0AA6 0ACD (200D)',
1406 'replace' => 'E0B7 \\1',
1407 ),
1408 281 =>
1409 array (
1410 'match' => '0AA7 0ACD (200D)',
1411 'replace' => 'E0B8 \\1',
1412 ),
1413 282 =>
1414 array (
1415 'match' => '0AA8 0ACD (200D)',
1416 'replace' => 'E0B9 \\1',
1417 ),
1418 283 =>
1419 array (
1420 'match' => '0AAA 0ACD (200D)',
1421 'replace' => 'E0BA \\1',
1422 ),
1423 284 =>
1424 array (
1425 'match' => '0AAB 0ACD (200D)',
1426 'replace' => 'E0BB \\1',
1427 ),
1428 285 =>
1429 array (
1430 'match' => '0AAC 0ACD (200D)',
1431 'replace' => 'E0BC \\1',
1432 ),
1433 286 =>
1434 array (
1435 'match' => '0AAD 0ACD (200D)',
1436 'replace' => 'E0BD \\1',
1437 ),
1438 287 =>
1439 array (
1440 'match' => '0AAE 0ACD (200D)',
1441 'replace' => 'E0BE \\1',
1442 ),
1443 288 =>
1444 array (
1445 'match' => '0AAF 0ACD (200D)',
1446 'replace' => 'E0BF \\1',
1447 ),
1448 289 =>
1449 array (
1450 'match' => '0AB0 0ACD (200D)',
1451 'replace' => 'E0C0 \\1',
1452 ),
1453 290 =>
1454 array (
1455 'match' => '0AB2 0ACD (200D)',
1456 'replace' => 'E0C1 \\1',
1457 ),
1458 291 =>
1459 array (
1460 'match' => '0AB3 0ACD (200D)',
1461 'replace' => 'E0C2 \\1',
1462 ),
1463 292 =>
1464 array (
1465 'match' => '0AB5 0ACD (200D)',
1466 'replace' => 'E0C3 \\1',
1467 ),
1468 293 =>
1469 array (
1470 'match' => '0AB6 0ACD (200D)',
1471 'replace' => 'E0C4 \\1',
1472 ),
1473 294 =>
1474 array (
1475 'match' => '0AB7 0ACD (200D)',
1476 'replace' => 'E0C5 \\1',
1477 ),
1478 295 =>
1479 array (
1480 'match' => '0AB8 0ACD (200D)',
1481 'replace' => 'E0C6 \\1',
1482 ),
1483 296 =>
1484 array (
1485 'match' => '0AB9 0ACD (200D)',
1486 'replace' => 'E0C7 \\1',
1487 ),
1488 297 =>
1489 array (
1490 'match' => 'E002 0ACD (200D)',
1491 'replace' => 'E0C8 \\1',
1492 ),
1493 298 =>
1494 array (
1495 'match' => 'E003 0ACD (200D)',
1496 'replace' => 'E0C9 \\1',
1497 ),
1498 299 =>
1499 array (
1500 'match' => 'E004 0ACD (200D)',
1501 'replace' => 'E0CA \\1',
1502 ),
1503 300 =>
1504 array (
1505 'match' => 'E005 0ACD (200D)',
1506 'replace' => 'E0CB \\1',
1507 ),
1508 301 =>
1509 array (
1510 'match' => 'E006 0ACD (200D)',
1511 'replace' => 'E0CC \\1',
1512 ),
1513 302 =>
1514 array (
1515 'match' => 'E007 0ACD (200D)',
1516 'replace' => 'E0CD \\1',
1517 ),
1518 303 =>
1519 array (
1520 'match' => 'E008 0ACD (200D)',
1521 'replace' => 'E0CE \\1',
1522 ),
1523 304 =>
1524 array (
1525 'match' => 'E009 0ACD (200D)',
1526 'replace' => 'E0CF \\1',
1527 ),
1528 305 =>
1529 array (
1530 'match' => 'E00A 0ACD (200D)',
1531 'replace' => 'E0D0 \\1',
1532 ),
1533 306 =>
1534 array (
1535 'match' => 'E00B 0ACD (200D)',
1536 'replace' => 'E0D1 \\1',
1537 ),
1538 307 =>
1539 array (
1540 'match' => 'E00C 0ACD (200D)',
1541 'replace' => 'E0D2 \\1',
1542 ),
1543 308 =>
1544 array (
1545 'match' => 'E00D 0ACD (200D)',
1546 'replace' => 'E0D3 \\1',
1547 ),
1548 309 =>
1549 array (
1550 'match' => 'E00E 0ACD (200D)',
1551 'replace' => 'E0D4 \\1',
1552 ),
1553 310 =>
1554 array (
1555 'match' => 'E00F 0ACD (200D)',
1556 'replace' => 'E0D5 \\1',
1557 ),
1558 311 =>
1559 array (
1560 'match' => 'E010 0ACD (200D)',
1561 'replace' => 'E0D6 \\1',
1562 ),
1563 312 =>
1564 array (
1565 'match' => 'E011 0ACD (200D)',
1566 'replace' => 'E0D7 \\1',
1567 ),
1568 313 =>
1569 array (
1570 'match' => 'E012 0ACD (200D)',
1571 'replace' => 'E0D8 \\1',
1572 ),
1573 314 =>
1574 array (
1575 'match' => 'E013 0ACD (200D)',
1576 'replace' => 'E0D9 \\1',
1577 ),
1578 315 =>
1579 array (
1580 'match' => 'E014 0ACD (200D)',
1581 'replace' => 'E0DA \\1',
1582 ),
1583 316 =>
1584 array (
1585 'match' => 'E015 0ACD (200D)',
1586 'replace' => 'E0DB \\1',
1587 ),
1588 317 =>
1589 array (
1590 'match' => 'E016 0ACD (200D)',
1591 'replace' => 'E0DC \\1',
1592 ),
1593 318 =>
1594 array (
1595 'match' => 'E017 0ACD (200D)',
1596 'replace' => 'E0DD \\1',
1597 ),
1598 319 =>
1599 array (
1600 'match' => 'E018 0ACD (200D)',
1601 'replace' => 'E0DE \\1',
1602 ),
1603 320 =>
1604 array (
1605 'match' => 'E019 0ACD (200D)',
1606 'replace' => 'E0DF \\1',
1607 ),
1608 321 =>
1609 array (
1610 'match' => 'E01A 0ACD (200D)',
1611 'replace' => 'E0E0 \\1',
1612 ),
1613 322 =>
1614 array (
1615 'match' => 'E01B 0ACD (200D)',
1616 'replace' => 'E0E1 \\1',
1617 ),
1618 323 =>
1619 array (
1620 'match' => 'E01C 0ACD (200D)',
1621 'replace' => 'E0E2 \\1',
1622 ),
1623 324 =>
1624 array (
1625 'match' => 'E01D 0ACD (200D)',
1626 'replace' => 'E0E3 \\1',
1627 ),
1628 325 =>
1629 array (
1630 'match' => 'E01E 0ACD (200D)',
1631 'replace' => 'E0E4 \\1',
1632 ),
1633 326 =>
1634 array (
1635 'match' => 'E01F 0ACD (200D)',
1636 'replace' => 'E0E5 \\1',
1637 ),
1638 327 =>
1639 array (
1640 'match' => 'E020 0ACD (200D)',
1641 'replace' => 'E0E6 \\1',
1642 ),
1643 328 =>
1644 array (
1645 'match' => 'E021 0ACD (200D)',
1646 'replace' => 'E0E7 \\1',
1647 ),
1648 329 =>
1649 array (
1650 'match' => 'E022 0ACD (200D)',
1651 'replace' => 'E0E8 \\1',
1652 ),
1653 330 =>
1654 array (
1655 'match' => 'E023 0ACD (200D)',
1656 'replace' => 'E0E9 \\1',
1657 ),
1658 331 =>
1659 array (
1660 'match' => 'E024 0ACD (200D)',
1661 'replace' => 'E0EA \\1',
1662 ),
1663 332 =>
1664 array (
1665 'match' => 'E025 0ACD (200D)',
1666 'replace' => 'E0EB \\1',
1667 ),
1668 333 =>
1669 array (
1670 'match' => 'E026 0ACD (200D)',
1671 'replace' => 'E0EC \\1',
1672 ),
1673 334 =>
1674 array (
1675 'match' => 'E027 0ACD (200D)',
1676 'replace' => 'E0ED \\1',
1677 ),
1678 335 =>
1679 array (
1680 'match' => 'E05E 0ACD (200D)',
1681 'replace' => 'E0EE \\1',
1682 ),
1683 336 =>
1684 array (
1685 'match' => 'E05F 0ACD (200D)',
1686 'replace' => 'E0EF \\1',
1687 ),
1688 337 =>
1689 array (
1690 'match' => 'E060 0ACD (200D)',
1691 'replace' => 'E0F0 \\1',
1692 ),
1693 338 =>
1694 array (
1695 'match' => 'E061 0ACD (200D)',
1696 'replace' => 'E0F1 \\1',
1697 ),
1698 339 =>
1699 array (
1700 'match' => 'E062 0ACD (200D)',
1701 'replace' => 'E0F2 \\1',
1702 ),
1703 340 =>
1704 array (
1705 'match' => 'E063 0ACD (200D)',
1706 'replace' => 'E0F3 \\1',
1707 ),
1708 341 =>
1709 array (
1710 'match' => 'E064 0ACD (200D)',
1711 'replace' => 'E0F4 \\1',
1712 ),
1713 342 =>
1714 array (
1715 'match' => 'E065 0ACD (200D)',
1716 'replace' => 'E0F5 \\1',
1717 ),
1718 343 =>
1719 array (
1720 'match' => 'E066 0ACD (200D)',
1721 'replace' => 'E0F6 \\1',
1722 ),
1723 344 =>
1724 array (
1725 'match' => 'E067 0ACD (200D)',
1726 'replace' => 'E0F7 \\1',
1727 ),
1728 345 =>
1729 array (
1730 'match' => 'E068 0ACD (200D)',
1731 'replace' => 'E0F8 \\1',
1732 ),
1733 346 =>
1734 array (
1735 'match' => 'E069 0ACD (200D)',
1736 'replace' => 'E0F9 \\1',
1737 ),
1738 347 =>
1739 array (
1740 'match' => 'E06A 0ACD (200D)',
1741 'replace' => 'E0FA \\1',
1742 ),
1743 348 =>
1744 array (
1745 'match' => 'E06B 0ACD (200D)',
1746 'replace' => 'E0FB \\1',
1747 ),
1748 349 =>
1749 array (
1750 'match' => 'E06C 0ACD (200D)',
1751 'replace' => 'E0FC \\1',
1752 ),
1753 350 =>
1754 array (
1755 'match' => 'E06D 0ACD (200D)',
1756 'replace' => 'E0FD \\1',
1757 ),
1758 351 =>
1759 array (
1760 'match' => 'E06E 0ACD (200D)',
1761 'replace' => 'E0FE \\1',
1762 ),
1763 352 =>
1764 array (
1765 'match' => 'E06F 0ACD (200D)',
1766 'replace' => 'E0FF \\1',
1767 ),
1768 353 =>
1769 array (
1770 'match' => 'E070 0ACD (200D)',
1771 'replace' => 'E100 \\1',
1772 ),
1773 354 =>
1774 array (
1775 'match' => 'E071 0ACD (200D)',
1776 'replace' => 'E101 \\1',
1777 ),
1778 355 =>
1779 array (
1780 'match' => 'E072 0ACD (200D)',
1781 'replace' => 'E102 \\1',
1782 ),
1783 356 =>
1784 array (
1785 'match' => 'E073 0ACD (200D)',
1786 'replace' => 'E103 \\1',
1787 ),
1788 357 =>
1789 array (
1790 'match' => 'E074 0ACD (200D)',
1791 'replace' => 'E104 \\1',
1792 ),
1793 358 =>
1794 array (
1795 'match' => 'E075 0ACD (200D)',
1796 'replace' => 'E105 \\1',
1797 ),
1798 359 =>
1799 array (
1800 'match' => 'E076 0ACD (200D)',
1801 'replace' => 'E106 \\1',
1802 ),
1803 360 =>
1804 array (
1805 'match' => 'E077 0ACD (200D)',
1806 'replace' => 'E107 \\1',
1807 ),
1808 361 =>
1809 array (
1810 'match' => 'E078 0ACD (200D)',
1811 'replace' => 'E108 \\1',
1812 ),
1813 362 =>
1814 array (
1815 'match' => 'E079 0ACD (200D)',
1816 'replace' => 'E109 \\1',
1817 ),
1818 363 =>
1819 array (
1820 'match' => 'E07A 0ACD (200D)',
1821 'replace' => 'E10A \\1',
1822 ),
1823 364 =>
1824 array (
1825 'match' => 'E07B 0ACD (200D)',
1826 'replace' => 'E10B \\1',
1827 ),
1828 365 =>
1829 array (
1830 'match' => 'E07C 0ACD (200D)',
1831 'replace' => 'E10C \\1',
1832 ),
1833 366 =>
1834 array (
1835 'match' => 'E07D 0ACD (200D)',
1836 'replace' => 'E10D \\1',
1837 ),
1838 367 =>
1839 array (
1840 'match' => 'E07E 0ACD (200D)',
1841 'replace' => 'E10E \\1',
1842 ),
1843 368 =>
1844 array (
1845 'match' => 'E07F 0ACD (200D)',
1846 'replace' => 'E10F \\1',
1847 ),
1848 369 =>
1849 array (
1850 'match' => 'E080 0ACD (200D)',
1851 'replace' => 'E110 \\1',
1852 ),
1853 370 =>
1854 array (
1855 'match' => 'E081 0ACD (200D)',
1856 'replace' => 'E111 \\1',
1857 ),
1858 371 =>
1859 array (
1860 'match' => 'E082 0ACD (200D)',
1861 'replace' => 'E112 \\1',
1862 ),
1863 372 =>
1864 array (
1865 'match' => 'E083 0ACD (200D)',
1866 'replace' => 'E113 \\1',
1867 ),
1868 373 =>
1869 array (
1870 'match' => 'E084 0ACD (200D)',
1871 'replace' => 'E114 \\1',
1872 ),
1873 374 =>
1874 array (
1875 'match' => 'E085 0ACD (200D)',
1876 'replace' => 'E115 \\1',
1877 ),
1878 375 =>
1879 array (
1880 'match' => 'E086 0ACD (200D)',
1881 'replace' => 'E116 \\1',
1882 ),
1883 376 =>
1884 array (
1885 'match' => 'E087 0ACD (200D)',
1886 'replace' => 'E117 \\1',
1887 ),
1888 377 =>
1889 array (
1890 'match' => 'E088 0ACD (200D)',
1891 'replace' => 'E118 \\1',
1892 ),
1893 378 =>
1894 array (
1895 'match' => 'E089 0ACD (200D)',
1896 'replace' => 'E119 \\1',
1897 ),
1898 379 =>
1899 array (
1900 'match' => 'E08A 0ACD (200D)',
1901 'replace' => 'E11A \\1',
1902 ),
1903 380 =>
1904 array (
1905 'match' => 'E08B 0ACD (200D)',
1906 'replace' => 'E11B \\1',
1907 ),
1908 381 =>
1909 array (
1910 'match' => 'E08C 0ACD (200D)',
1911 'replace' => 'E11C \\1',
1912 ),
1913 382 =>
1914 array (
1915 'match' => 'E08D 0ACD (200D)',
1916 'replace' => 'E11D \\1',
1917 ),
1918 383 =>
1919 array (
1920 'match' => 'E08E 0ACD (200D)',
1921 'replace' => 'E11E \\1',
1922 ),
1923 384 =>
1924 array (
1925 'match' => 'E08F 0ACD (200D)',
1926 'replace' => 'E11F \\1',
1927 ),
1928 385 =>
1929 array (
1930 'match' => 'E090 0ACD (200D)',
1931 'replace' => 'E120 \\1',
1932 ),
1933 386 =>
1934 array (
1935 'match' => 'E091 0ACD (200D)',
1936 'replace' => 'E121 \\1',
1937 ),
1938 387 =>
1939 array (
1940 'match' => 'E092 0ACD (200D)',
1941 'replace' => 'E122 \\1',
1942 ),
1943 388 =>
1944 array (
1945 'match' => 'E093 0ACD (200D)',
1946 'replace' => 'E123 \\1',
1947 ),
1948 389 =>
1949 array (
1950 'match' => 'E094 0ACD (200D)',
1951 'replace' => 'E124 \\1',
1952 ),
1953 390 =>
1954 array (
1955 'match' => 'E095 0ACD (200D)',
1956 'replace' => 'E125 \\1',
1957 ),
1958 391 =>
1959 array (
1960 'match' => 'E096 0ACD (200D)',
1961 'replace' => 'E126 \\1',
1962 ),
1963 392 =>
1964 array (
1965 'match' => 'E097 0ACD (200D)',
1966 'replace' => 'E127 \\1',
1967 ),
1968 393 =>
1969 array (
1970 'match' => 'E098 0ACD (200D)',
1971 'replace' => 'E128 \\1',
1972 ),
1973 394 =>
1974 array (
1975 'match' => 'E099 0ACD (200D)',
1976 'replace' => 'E129 \\1',
1977 ),
1978 395 =>
1979 array (
1980 'match' => 'E09A 0ACD (200D)',
1981 'replace' => 'E12A \\1',
1982 ),
1983 396 =>
1984 array (
1985 'match' => 'E09B 0ACD (200D)',
1986 'replace' => 'E12B \\1',
1987 ),
1988 397 =>
1989 array (
1990 'match' => 'E09C 0ACD (200D)',
1991 'replace' => 'E12C \\1',
1992 ),
1993 398 =>
1994 array (
1995 'match' => 'E09D 0ACD (200D)',
1996 'replace' => 'E12D \\1',
1997 ),
1998 399 =>
1999 array (
2000 'match' => 'E09E 0ACD (200D)',
2001 'replace' => 'E12E \\1',
2002 ),
2003 400 =>
2004 array (
2005 'match' => 'E09F 0ACD (200D)',
2006 'replace' => 'E12F \\1',
2007 ),
2008 401 =>
2009 array (
2010 'match' => 'E0A0 0ACD (200D)',
2011 'replace' => 'E130 \\1',
2012 ),
2013 402 =>
2014 array (
2015 'match' => 'E0A1 0ACD (200D)',
2016 'replace' => 'E131 \\1',
2017 ),
2018 403 =>
2019 array (
2020 'match' => 'E0A2 0ACD (200D)',
2021 'replace' => 'E132 \\1',
2022 ),
2023 404 =>
2024 array (
2025 'match' => 'E0A3 0ACD (200D)',
2026 'replace' => 'E133 \\1',
2027 ),
2028 405 =>
2029 array (
2030 'match' => 'E0A4 0ACD (200D)',
2031 'replace' => 'E134 \\1',
2032 ),
2033 406 =>
2034 array (
2035 'match' => 'E0A5 0ACD (200D)',
2036 'replace' => 'E135 \\1',
2037 ),
2038 407 =>
2039 array (
2040 'match' => 'E0A6 E0A6',
2041 'replace' => 'E221',
2042 ),
2043 408 =>
2044 array (
2045 'match' => 'E0B7 E0A8',
2046 'replace' => 'E223',
2047 ),
2048 409 =>
2049 array (
2050 'match' => 'E0C6 E0B5',
2051 'replace' => 'E222',
2052 ),
2053 410 =>
2054 array (
2055 'match' => 'E0AA 0A95',
2056 'replace' => 'E136',
2057 ),
2058 411 =>
2059 array (
2060 'match' => 'E0AA 0A96',
2061 'replace' => 'E137',
2062 ),
2063 412 =>
2064 array (
2065 'match' => 'E0AA 0A97',
2066 'replace' => 'E138',
2067 ),
2068 413 =>
2069 array (
2070 'match' => 'E0AA 0A98',
2071 'replace' => 'E139',
2072 ),
2073 414 =>
2074 array (
2075 'match' => 'E0AA 0AAE',
2076 'replace' => 'E13A',
2077 ),
2078 415 =>
2079 array (
2080 'match' => 'E0AA 0AB5',
2081 'replace' => 'E13B',
2082 ),
2083 416 =>
2084 array (
2085 'match' => 'E0AA E002',
2086 'replace' => 'E13C',
2087 ),
2088 417 =>
2089 array (
2090 'match' => 'E0AC 0AB5',
2091 'replace' => 'E13D',
2092 ),
2093 418 =>
2094 array (
2095 'match' => 'E0B0 0A9F',
2096 'replace' => 'E13E',
2097 ),
2098 419 =>
2099 array (
2100 'match' => 'E0B0 0AA0',
2101 'replace' => 'E13F',
2102 ),
2103 420 =>
2104 array (
2105 'match' => 'E0B1 0AA0',
2106 'replace' => 'E140',
2107 ),
2108 421 =>
2109 array (
2110 'match' => 'E0B2 0AA1',
2111 'replace' => 'E141',
2112 ),
2113 422 =>
2114 array (
2115 'match' => 'E0B2 0AA2',
2116 'replace' => 'E142',
2117 ),
2118 423 =>
2119 array (
2120 'match' => 'E0B3 0AA2',
2121 'replace' => 'E143',
2122 ),
2123 424 =>
2124 array (
2125 'match' => 'E0B7 0A97',
2126 'replace' => 'E145',
2127 ),
2128 425 =>
2129 array (
2130 'match' => 'E0B7 E060',
2131 'replace' => 'E146',
2132 ),
2133 426 =>
2134 array (
2135 'match' => 'E0B7 0A98',
2136 'replace' => 'E147',
2137 ),
2138 427 =>
2139 array (
2140 'match' => 'E0B7 0AA8',
2141 'replace' => 'E148',
2142 ),
2143 428 =>
2144 array (
2145 'match' => 'E0B7 0AA7',
2146 'replace' => 'E149',
2147 ),
2148 429 =>
2149 array (
2150 'match' => 'E0B7 0AB5',
2151 'replace' => 'E14A',
2152 ),
2153 430 =>
2154 array (
2155 'match' => 'E0B7 0AAC',
2156 'replace' => 'E14B',
2157 ),
2158 431 =>
2159 array (
2160 'match' => 'E0B7 0AAE',
2161 'replace' => 'E14C',
2162 ),
2163 432 =>
2164 array (
2165 'match' => 'E0B7 0AB2',
2166 'replace' => 'E14D',
2167 ),
2168 433 =>
2169 array (
2170 'match' => 'E0B7 0AA6',
2171 'replace' => 'E14E',
2172 ),
2173 434 =>
2174 array (
2175 'match' => 'E0C7 0AA8',
2176 'replace' => 'E14F',
2177 ),
2178 435 =>
2179 array (
2180 'match' => 'E0C7 0AA3',
2181 'replace' => 'E150',
2182 ),
2183 436 =>
2184 array (
2185 'match' => 'E0C7 0AAF',
2186 'replace' => 'E151',
2187 ),
2188 437 =>
2189 array (
2190 'match' => 'E0C7 0AB2',
2191 'replace' => 'E152',
2192 ),
2193 438 =>
2194 array (
2195 'match' => 'E0C7 0AB5',
2196 'replace' => 'E153',
2197 ),
2198 439 =>
2199 array (
2200 'match' => 'E0C7 0AAE',
2201 'replace' => 'E154',
2202 ),
2203 440 =>
2204 array (
2205 'match' => 'E0AF 0A9A',
2206 'replace' => 'E155',
2207 ),
2208 441 =>
2209 array (
2210 'match' => 'E0AF 0A9C',
2211 'replace' => 'E156',
2212 ),
2213 442 =>
2214 array (
2215 'match' => 'E0B9 0AA8',
2216 'replace' => 'E157',
2217 ),
2218 443 =>
2219 array (
2220 'match' => 'E0C4 0AA8',
2221 'replace' => 'E158',
2222 ),
2223 444 =>
2224 array (
2225 'match' => 'E0C4 0AB5',
2226 'replace' => 'E159',
2227 ),
2228 445 =>
2229 array (
2230 'match' => 'E0C4 0A9A',
2231 'replace' => 'E15A',
2232 ),
2233 446 =>
2234 array (
2235 'match' => 'E0B5 0AA4',
2236 'replace' => 'E15B',
2237 ),
2238 447 =>
2239 array (
2240 'match' => 'E0C6 E06D',
2241 'replace' => 'E15C',
2242 ),
2243 448 =>
2244 array (
2245 'match' => 'E0B7 0AAF',
2246 'replace' => 'E15D',
2247 ),
2248 449 =>
2249 array (
2250 'match' => 'E0FF 0AAF',
2251 'replace' => 'E15E',
2252 ),
2253 450 =>
2254 array (
2255 'match' => 'E0A6 0A95',
2256 'replace' => 'E21F',
2257 ),
2258 451 =>
2259 array (
2260 'match' => 'E0A6 E05E',
2261 'replace' => 'E220',
2262 ),
2263 452 =>
2264 array (
2265 'match' => 'E163',
2266 'replace' => '0ACD',
2267 ),
2268 453 =>
2269 array (
2270 'match' => 'E0A6 200D',
2271 'replace' => 'E0A6',
2272 ),
2273 454 =>
2274 array (
2275 'match' => 'E0A7 200D',
2276 'replace' => 'E0A7',
2277 ),
2278 455 =>
2279 array (
2280 'match' => 'E0A8 200D',
2281 'replace' => 'E0A8',
2282 ),
2283 456 =>
2284 array (
2285 'match' => 'E0A9 200D',
2286 'replace' => 'E0A9',
2287 ),
2288 457 =>
2289 array (
2290 'match' => 'E0AA 200D',
2291 'replace' => 'E0AA',
2292 ),
2293 458 =>
2294 array (
2295 'match' => 'E0AB 200D',
2296 'replace' => 'E0AB',
2297 ),
2298 459 =>
2299 array (
2300 'match' => 'E0AC 200D',
2301 'replace' => 'E0AC',
2302 ),
2303 460 =>
2304 array (
2305 'match' => 'E0AD 200D',
2306 'replace' => 'E0AD',
2307 ),
2308 461 =>
2309 array (
2310 'match' => 'E0AE 200D',
2311 'replace' => 'E0AE',
2312 ),
2313 462 =>
2314 array (
2315 'match' => 'E0AF 200D',
2316 'replace' => 'E0AF',
2317 ),
2318 463 =>
2319 array (
2320 'match' => 'E0B0 200D',
2321 'replace' => 'E0B0',
2322 ),
2323 464 =>
2324 array (
2325 'match' => 'E0B1 200D',
2326 'replace' => 'E0B1',
2327 ),
2328 465 =>
2329 array (
2330 'match' => 'E0B2 200D',
2331 'replace' => 'E0B2',
2332 ),
2333 466 =>
2334 array (
2335 'match' => 'E0B3 200D',
2336 'replace' => 'E0B3',
2337 ),
2338 467 =>
2339 array (
2340 'match' => 'E0B4 200D',
2341 'replace' => 'E0B4',
2342 ),
2343 468 =>
2344 array (
2345 'match' => 'E0B5 200D',
2346 'replace' => 'E0B5',
2347 ),
2348 469 =>
2349 array (
2350 'match' => 'E0B6 200D',
2351 'replace' => 'E0B6',
2352 ),
2353 470 =>
2354 array (
2355 'match' => 'E0B7 200D',
2356 'replace' => 'E0B7',
2357 ),
2358 471 =>
2359 array (
2360 'match' => 'E0B8 200D',
2361 'replace' => 'E0B8',
2362 ),
2363 472 =>
2364 array (
2365 'match' => 'E0B9 200D',
2366 'replace' => 'E0B9',
2367 ),
2368 473 =>
2369 array (
2370 'match' => 'E0BA 200D',
2371 'replace' => 'E0BA',
2372 ),
2373 474 =>
2374 array (
2375 'match' => 'E0BB 200D',
2376 'replace' => 'E0BB',
2377 ),
2378 475 =>
2379 array (
2380 'match' => 'E0BC 200D',
2381 'replace' => 'E0BC',
2382 ),
2383 476 =>
2384 array (
2385 'match' => 'E0BD 200D',
2386 'replace' => 'E0BD',
2387 ),
2388 477 =>
2389 array (
2390 'match' => 'E0BE 200D',
2391 'replace' => 'E0BE',
2392 ),
2393 478 =>
2394 array (
2395 'match' => 'E0BF 200D',
2396 'replace' => 'E0BF',
2397 ),
2398 479 =>
2399 array (
2400 'match' => 'E0C0 200D',
2401 'replace' => 'E0C0',
2402 ),
2403 480 =>
2404 array (
2405 'match' => 'E0C1 200D',
2406 'replace' => 'E0C1',
2407 ),
2408 481 =>
2409 array (
2410 'match' => 'E0C2 200D',
2411 'replace' => 'E0C2',
2412 ),
2413 482 =>
2414 array (
2415 'match' => 'E0C3 200D',
2416 'replace' => 'E0C3',
2417 ),
2418 483 =>
2419 array (
2420 'match' => 'E0C4 200D',
2421 'replace' => 'E0C4',
2422 ),
2423 484 =>
2424 array (
2425 'match' => 'E0C5 200D',
2426 'replace' => 'E0C5',
2427 ),
2428 485 =>
2429 array (
2430 'match' => 'E0C6 200D',
2431 'replace' => 'E0C6',
2432 ),
2433 486 =>
2434 array (
2435 'match' => 'E0C7 200D',
2436 'replace' => 'E0C7',
2437 ),
2438 487 =>
2439 array (
2440 'match' => 'E0C8 200D',
2441 'replace' => 'E0C8',
2442 ),
2443 488 =>
2444 array (
2445 'match' => 'E0C9 200D',
2446 'replace' => 'E0C9',
2447 ),
2448 489 =>
2449 array (
2450 'match' => 'E0CA 200D',
2451 'replace' => 'E0CA',
2452 ),
2453 490 =>
2454 array (
2455 'match' => 'E0CB 200D',
2456 'replace' => 'E0CB',
2457 ),
2458 491 =>
2459 array (
2460 'match' => 'E0CC 200D',
2461 'replace' => 'E0CC',
2462 ),
2463 492 =>
2464 array (
2465 'match' => 'E0CD 200D',
2466 'replace' => 'E0CD',
2467 ),
2468 493 =>
2469 array (
2470 'match' => 'E0CE 200D',
2471 'replace' => 'E0CE',
2472 ),
2473 494 =>
2474 array (
2475 'match' => 'E0CF 200D',
2476 'replace' => 'E0CF',
2477 ),
2478 495 =>
2479 array (
2480 'match' => 'E0D0 200D',
2481 'replace' => 'E0D0',
2482 ),
2483 496 =>
2484 array (
2485 'match' => 'E0D1 200D',
2486 'replace' => 'E0D1',
2487 ),
2488 497 =>
2489 array (
2490 'match' => 'E0D2 200D',
2491 'replace' => 'E0D2',
2492 ),
2493 498 =>
2494 array (
2495 'match' => 'E0D3 200D',
2496 'replace' => 'E0D3',
2497 ),
2498 499 =>
2499 array (
2500 'match' => 'E0D4 200D',
2501 'replace' => 'E0D4',
2502 ),
2503 500 =>
2504 array (
2505 'match' => 'E0D5 200D',
2506 'replace' => 'E0D5',
2507 ),
2508 501 =>
2509 array (
2510 'match' => 'E0D6 200D',
2511 'replace' => 'E0D6',
2512 ),
2513 502 =>
2514 array (
2515 'match' => 'E0D7 200D',
2516 'replace' => 'E0D7',
2517 ),
2518 503 =>
2519 array (
2520 'match' => 'E0D8 200D',
2521 'replace' => 'E0D8',
2522 ),
2523 504 =>
2524 array (
2525 'match' => 'E0D9 200D',
2526 'replace' => 'E0D9',
2527 ),
2528 505 =>
2529 array (
2530 'match' => 'E0DA 200D',
2531 'replace' => 'E0DA',
2532 ),
2533 506 =>
2534 array (
2535 'match' => 'E0DB 200D',
2536 'replace' => 'E0DB',
2537 ),
2538 507 =>
2539 array (
2540 'match' => 'E0DC 200D',
2541 'replace' => 'E0DC',
2542 ),
2543 508 =>
2544 array (
2545 'match' => 'E0DD 200D',
2546 'replace' => 'E0DD',
2547 ),
2548 509 =>
2549 array (
2550 'match' => 'E0DE 200D',
2551 'replace' => 'E0DE',
2552 ),
2553 510 =>
2554 array (
2555 'match' => 'E0DF 200D',
2556 'replace' => 'E0DF',
2557 ),
2558 511 =>
2559 array (
2560 'match' => 'E0E0 200D',
2561 'replace' => 'E0E0',
2562 ),
2563 512 =>
2564 array (
2565 'match' => 'E0E1 200D',
2566 'replace' => 'E0E1',
2567 ),
2568 513 =>
2569 array (
2570 'match' => 'E0E2 200D',
2571 'replace' => 'E0E2',
2572 ),
2573 514 =>
2574 array (
2575 'match' => 'E0E3 200D',
2576 'replace' => 'E0E3',
2577 ),
2578 515 =>
2579 array (
2580 'match' => 'E0E4 200D',
2581 'replace' => 'E0E4',
2582 ),
2583 516 =>
2584 array (
2585 'match' => 'E0E5 200D',
2586 'replace' => 'E0E5',
2587 ),
2588 517 =>
2589 array (
2590 'match' => 'E0E6 200D',
2591 'replace' => 'E0E6',
2592 ),
2593 518 =>
2594 array (
2595 'match' => 'E0E7 200D',
2596 'replace' => 'E0E7',
2597 ),
2598 519 =>
2599 array (
2600 'match' => 'E0E8 200D',
2601 'replace' => 'E0E8',
2602 ),
2603 520 =>
2604 array (
2605 'match' => 'E0E9 200D',
2606 'replace' => 'E0E9',
2607 ),
2608 521 =>
2609 array (
2610 'match' => 'E0EA 200D',
2611 'replace' => 'E0EA',
2612 ),
2613 522 =>
2614 array (
2615 'match' => 'E0EB 200D',
2616 'replace' => 'E0EB',
2617 ),
2618 523 =>
2619 array (
2620 'match' => 'E0EC 200D',
2621 'replace' => 'E0EC',
2622 ),
2623 524 =>
2624 array (
2625 'match' => 'E0ED 200D',
2626 'replace' => 'E0ED',
2627 ),
2628 525 =>
2629 array (
2630 'match' => 'E0EE 200D',
2631 'replace' => 'E0EE',
2632 ),
2633 526 =>
2634 array (
2635 'match' => 'E0EF 200D',
2636 'replace' => 'E0EF',
2637 ),
2638 527 =>
2639 array (
2640 'match' => 'E0F0 200D',
2641 'replace' => 'E0F0',
2642 ),
2643 528 =>
2644 array (
2645 'match' => 'E0F1 200D',
2646 'replace' => 'E0F1',
2647 ),
2648 529 =>
2649 array (
2650 'match' => 'E0F2 200D',
2651 'replace' => 'E0F2',
2652 ),
2653 530 =>
2654 array (
2655 'match' => 'E0F3 200D',
2656 'replace' => 'E0F3',
2657 ),
2658 531 =>
2659 array (
2660 'match' => 'E0F4 200D',
2661 'replace' => 'E0F4',
2662 ),
2663 532 =>
2664 array (
2665 'match' => 'E0F5 200D',
2666 'replace' => 'E0F5',
2667 ),
2668 533 =>
2669 array (
2670 'match' => 'E0F6 200D',
2671 'replace' => 'E0F6',
2672 ),
2673 534 =>
2674 array (
2675 'match' => 'E0F7 200D',
2676 'replace' => 'E0F7',
2677 ),
2678 535 =>
2679 array (
2680 'match' => 'E0F8 200D',
2681 'replace' => 'E0F8',
2682 ),
2683 536 =>
2684 array (
2685 'match' => 'E0F9 200D',
2686 'replace' => 'E0F9',
2687 ),
2688 537 =>
2689 array (
2690 'match' => 'E0FA 200D',
2691 'replace' => 'E0FA',
2692 ),
2693 538 =>
2694 array (
2695 'match' => 'E0FB 200D',
2696 'replace' => 'E0FB',
2697 ),
2698 539 =>
2699 array (
2700 'match' => 'E0FC 200D',
2701 'replace' => 'E0FC',
2702 ),
2703 540 =>
2704 array (
2705 'match' => 'E0FD 200D',
2706 'replace' => 'E0FD',
2707 ),
2708 541 =>
2709 array (
2710 'match' => 'E0FE 200D',
2711 'replace' => 'E0FE',
2712 ),
2713 542 =>
2714 array (
2715 'match' => 'E0FF 200D',
2716 'replace' => 'E0FF',
2717 ),
2718 543 =>
2719 array (
2720 'match' => 'E100 200D',
2721 'replace' => 'E100',
2722 ),
2723 544 =>
2724 array (
2725 'match' => 'E101 200D',
2726 'replace' => 'E101',
2727 ),
2728 545 =>
2729 array (
2730 'match' => 'E102 200D',
2731 'replace' => 'E102',
2732 ),
2733 546 =>
2734 array (
2735 'match' => 'E103 200D',
2736 'replace' => 'E103',
2737 ),
2738 547 =>
2739 array (
2740 'match' => 'E104 200D',
2741 'replace' => 'E104',
2742 ),
2743 548 =>
2744 array (
2745 'match' => 'E105 200D',
2746 'replace' => 'E105',
2747 ),
2748 549 =>
2749 array (
2750 'match' => 'E106 200D',
2751 'replace' => 'E106',
2752 ),
2753 550 =>
2754 array (
2755 'match' => 'E107 200D',
2756 'replace' => 'E107',
2757 ),
2758 551 =>
2759 array (
2760 'match' => 'E108 200D',
2761 'replace' => 'E108',
2762 ),
2763 552 =>
2764 array (
2765 'match' => 'E109 200D',
2766 'replace' => 'E109',
2767 ),
2768 553 =>
2769 array (
2770 'match' => 'E10A 200D',
2771 'replace' => 'E10A',
2772 ),
2773 554 =>
2774 array (
2775 'match' => 'E10B 200D',
2776 'replace' => 'E10B',
2777 ),
2778 555 =>
2779 array (
2780 'match' => 'E10C 200D',
2781 'replace' => 'E10C',
2782 ),
2783 556 =>
2784 array (
2785 'match' => 'E10D 200D',
2786 'replace' => 'E10D',
2787 ),
2788 557 =>
2789 array (
2790 'match' => 'E10E 200D',
2791 'replace' => 'E10E',
2792 ),
2793 558 =>
2794 array (
2795 'match' => 'E10F 200D',
2796 'replace' => 'E10F',
2797 ),
2798 559 =>
2799 array (
2800 'match' => 'E110 200D',
2801 'replace' => 'E110',
2802 ),
2803 560 =>
2804 array (
2805 'match' => 'E111 200D',
2806 'replace' => 'E111',
2807 ),
2808 561 =>
2809 array (
2810 'match' => 'E112 200D',
2811 'replace' => 'E112',
2812 ),
2813 562 =>
2814 array (
2815 'match' => 'E113 200D',
2816 'replace' => 'E113',
2817 ),
2818 563 =>
2819 array (
2820 'match' => 'E114 200D',
2821 'replace' => 'E114',
2822 ),
2823 564 =>
2824 array (
2825 'match' => 'E115 200D',
2826 'replace' => 'E115',
2827 ),
2828 565 =>
2829 array (
2830 'match' => 'E116 200D',
2831 'replace' => 'E116',
2832 ),
2833 566 =>
2834 array (
2835 'match' => 'E117 200D',
2836 'replace' => 'E117',
2837 ),
2838 567 =>
2839 array (
2840 'match' => 'E118 200D',
2841 'replace' => 'E118',
2842 ),
2843 568 =>
2844 array (
2845 'match' => 'E119 200D',
2846 'replace' => 'E119',
2847 ),
2848 569 =>
2849 array (
2850 'match' => 'E11A 200D',
2851 'replace' => 'E11A',
2852 ),
2853 570 =>
2854 array (
2855 'match' => 'E11B 200D',
2856 'replace' => 'E11B',
2857 ),
2858 571 =>
2859 array (
2860 'match' => 'E11C 200D',
2861 'replace' => 'E11C',
2862 ),
2863 572 =>
2864 array (
2865 'match' => 'E11D 200D',
2866 'replace' => 'E11D',
2867 ),
2868 573 =>
2869 array (
2870 'match' => 'E11E 200D',
2871 'replace' => 'E11E',
2872 ),
2873 574 =>
2874 array (
2875 'match' => 'E11F 200D',
2876 'replace' => 'E11F',
2877 ),
2878 575 =>
2879 array (
2880 'match' => 'E120 200D',
2881 'replace' => 'E120',
2882 ),
2883 576 =>
2884 array (
2885 'match' => 'E121 200D',
2886 'replace' => 'E121',
2887 ),
2888 577 =>
2889 array (
2890 'match' => 'E122 200D',
2891 'replace' => 'E122',
2892 ),
2893 578 =>
2894 array (
2895 'match' => 'E123 200D',
2896 'replace' => 'E123',
2897 ),
2898 579 =>
2899 array (
2900 'match' => 'E124 200D',
2901 'replace' => 'E124',
2902 ),
2903 580 =>
2904 array (
2905 'match' => 'E125 200D',
2906 'replace' => 'E125',
2907 ),
2908 581 =>
2909 array (
2910 'match' => 'E126 200D',
2911 'replace' => 'E126',
2912 ),
2913 582 =>
2914 array (
2915 'match' => 'E127 200D',
2916 'replace' => 'E127',
2917 ),
2918 583 =>
2919 array (
2920 'match' => 'E128 200D',
2921 'replace' => 'E128',
2922 ),
2923 584 =>
2924 array (
2925 'match' => 'E129 200D',
2926 'replace' => 'E129',
2927 ),
2928 585 =>
2929 array (
2930 'match' => 'E12A 200D',
2931 'replace' => 'E12A',
2932 ),
2933 586 =>
2934 array (
2935 'match' => 'E12B 200D',
2936 'replace' => 'E12B',
2937 ),
2938 587 =>
2939 array (
2940 'match' => 'E12C 200D',
2941 'replace' => 'E12C',
2942 ),
2943 588 =>
2944 array (
2945 'match' => 'E12D 200D',
2946 'replace' => 'E12D',
2947 ),
2948 589 =>
2949 array (
2950 'match' => 'E12E 200D',
2951 'replace' => 'E12E',
2952 ),
2953 590 =>
2954 array (
2955 'match' => 'E12F 200D',
2956 'replace' => 'E12F',
2957 ),
2958 591 =>
2959 array (
2960 'match' => 'E130 200D',
2961 'replace' => 'E130',
2962 ),
2963 592 =>
2964 array (
2965 'match' => 'E131 200D',
2966 'replace' => 'E131',
2967 ),
2968 593 =>
2969 array (
2970 'match' => 'E132 200D',
2971 'replace' => 'E132',
2972 ),
2973 594 =>
2974 array (
2975 'match' => 'E133 200D',
2976 'replace' => 'E133',
2977 ),
2978 595 =>
2979 array (
2980 'match' => 'E134 200D',
2981 'replace' => 'E134',
2982 ),
2983 596 =>
2984 array (
2985 'match' => 'E135 200D',
2986 'replace' => 'E135',
2987 ),
2988 597 =>
2989 array (
2990 'match' => '200D 0ACD',
2991 'replace' => '0ACD',
2992 ),
2993 598 =>
2994 array (
2995 'match' => '200D E05D',
2996 'replace' => 'E05D',
2997 ),
2998 599 =>
2999 array (
3000 'match' => '0A9C 0ABE',
3001 'replace' => 'E21B',
3002 ),
3003 600 =>
3004 array (
3005 'match' => '0A9C 0AC9',
3006 'replace' => 'E21C',
3007 ),
3008 601 =>
3009 array (
3010 'match' => '0A9C 0ACB',
3011 'replace' => 'E21D',
3012 ),
3013 602 =>
3014 array (
3015 'match' => '0A9C 0ACC',
3016 'replace' => 'E21E',
3017 ),
3018 603 =>
3019 array (
3020 '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))',
3021 'replace' => 'E038 \\1',
3022 ),
3023 604 =>
3024 array (
3025 'match' => '0ABF ((0A9F|0AA0|0AA2|0A9C|E00E|E00F|E011|E00B|E068|E069|E06B|E065|E08C|E08D|E08F|E089|E14F|E150|E151|E152|E153|E154))',
3026 'replace' => 'E03A \\1',
3027 ),
3028 605 =>
3029 array (
3030 '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))',
3031 'replace' => 'E039 \\1',
3032 ),
3033 606 =>
3034 array (
3035 'match' => '0ABF ((E13D))',
3036 'replace' => 'E03B \\1',
3037 ),
3038 607 =>
3039 array (
3040 'match' => '0ABF ((E13E|E13F|E140|E143))',
3041 'replace' => 'E03C \\1',
3042 ),
3043 608 =>
3044 array (
3045 'match' => '0ABF ((E15C))',
3046 'replace' => 'E03D \\1',
3047 ),
3048 609 =>
3049 array (
3050 '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))',
3051 'replace' => 'E25C \\1',
3052 ),
3053 610 =>
3054 array (
3055 'match' => '0ABF ((E0A7|E0BC|E0BD|E0C8|E0C9|E0C2) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
3056 'replace' => 'E25C \\1',
3057 ),
3058 611 =>
3059 array (
3060 'match' => '0ABF ((E0AB|E0B6|E0BA|E0BE|E0BF|E0C1|E0C3|E0C5|E0C6|E0A9|E0B8|E0AD|E0AF|E0B0|E0B3) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
3061 'replace' => 'E25C \\1',
3062 ),
3063 612 =>
3064 array (
3065 'match' => '0ABF ((E0AC|E0AE) (0A97|0A98|0AAF|0A9B|0A9D|0A9E|0AA4|0AA5|0AA7|0AA8|0AAA|0AAE|0AAF|0AB2|0AB5|0AB6|0AB7|0AB8))',
3066 'replace' => 'E25C \\1',
3067 ),
3068 613 =>
3069 array (
3070 'match' => '0ABF ((E0AC|E0AE) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
3071 'replace' => 'E25C \\1',
3072 ),
3073 614 =>
3074 array (
3075 'match' => '0ABF ((E0B4|E0B5|E0B9) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
3076 'replace' => 'E25C \\1',
3077 ),
3078 615 =>
3079 array (
3080 'match' => '0ABF ((E0B1) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
3081 'replace' => 'E25C \\1',
3082 ),
3083 616 =>
3084 array (
3085 'match' => '0ABF ((E0A6|E0A8|E0AA|E0B2|E0B7|E0BB|E0C4|E0C7) (0A9C|0A9F|0AA0|0AA2))',
3086 'replace' => 'E25D \\1',
3087 ),
3088 617 =>
3089 array (
3090 'match' => '0ABF ((E0AB|E0B6|E0BA|E0BE|E0BF|E0C1|E0C3|E0C5|E0C6|E0A9|E0B8|E0AD|E0AF|E0B0|E0B3) (0A95|0A99|0AA1|0AA6|0AAB|0AB9))',
3091 'replace' => 'E25D \\1',
3092 ),
3093 618 =>
3094 array (
3095 'match' => '0ABF ((E0AB|E0B6|E0BA|E0BE|E0BF|E0C1|E0C3|E0C5|E0C6|E0A9|E0B8|E0AD|E0AF|E0B0|E0B3) (0A9C|0A9F|0AA0|0AA2))',
3096 'replace' => 'E25D \\1',
3097 ),
3098 619 =>
3099 array (
3100 'match' => '0ABF ((E0B4|E0B5|E0B9) (0A95|0A99|0AA1|0AA6|0AAB|0AB9))',
3101 'replace' => 'E25D \\1',
3102 ),
3103 620 =>
3104 array (
3105 'match' => '0ABF ((E0B1) (0A95|0A99|0AA1|0AA6|0AAB|0AB9))',
3106 'replace' => 'E25D \\1',
3107 ),
3108 621 =>
3109 array (
3110 'match' => '0AB9 0AC3',
3111 'replace' => 'E02F',
3112 ),
3113 622 =>
3114 array (
3115 'match' => '0AB0 0AC1',
3116 'replace' => 'E15F',
3117 ),
3118 623 =>
3119 array (
3120 'match' => '0AC0 E032',
3121 'replace' => 'E043',
3122 ),
3123 624 =>
3124 array (
3125 'match' => '0AC7 E032',
3126 'replace' => 'E04D',
3127 ),
3128 625 =>
3129 array (
3130 'match' => '0AC8 E032',
3131 'replace' => 'E051',
3132 ),
3133 626 =>
3134 array (
3135 'match' => '0ACB E032',
3136 'replace' => 'E055',
3137 ),
3138 627 =>
3139 array (
3140 'match' => '0ACC E032',
3141 'replace' => 'E059',
3142 ),
3143 628 =>
3144 array (
3145 'match' => '0A87 0A82',
3146 'replace' => 'E160',
3147 ),
3148 629 =>
3149 array (
3150 'match' => '0A89 0A82',
3151 'replace' => 'E161',
3152 ),
3153 630 =>
3154 array (
3155 'match' => '0A8A 0A82',
3156 'replace' => 'E162',
3157 ),
3158 631 =>
3159 array (
3160 'match' => 'E032 0A81',
3161 'replace' => 'E034',
3162 ),
3163 632 =>
3164 array (
3165 'match' => 'E032 0A82',
3166 'replace' => 'E033',
3167 ),
3168 633 =>
3169 array (
3170 'match' => '0AC7 0A82',
3171 'replace' => 'E04C',
3172 ),
3173 634 =>
3174 array (
3175 'match' => '0AC8 0A82',
3176 'replace' => 'E050',
3177 ),
3178 635 =>
3179 array (
3180 'match' => '0AC0 0A82',
3181 'replace' => 'E040',
3182 ),
3183 636 =>
3184 array (
3185 'match' => '0ACB 0A82',
3186 'replace' => 'E054',
3187 ),
3188 637 =>
3189 array (
3190 'match' => '0ACC 0A82',
3191 'replace' => 'E058',
3192 ),
3193 638 =>
3194 array (
3195 'match' => 'E04D 0A82',
3196 'replace' => 'E04E',
3197 ),
3198 639 =>
3199 array (
3200 'match' => 'E051 0A82',
3201 'replace' => 'E052',
3202 ),
3203 640 =>
3204 array (
3205 'match' => 'E043 0A82',
3206 'replace' => 'E046',
3207 ),
3208 641 =>
3209 array (
3210 'match' => 'E055 0A82',
3211 'replace' => 'E056',
3212 ),
3213 642 =>
3214 array (
3215 'match' => 'E059 0A82',
3216 'replace' => 'E05A',
3217 ),
3218 643 =>
3219 array (
3220 'match' => 'E04D 0A81',
3221 'replace' => 'E04F',
3222 ),
3223 644 =>
3224 array (
3225 'match' => 'E051 0A81',
3226 'replace' => 'E053',
3227 ),
3228 645 =>
3229 array (
3230 'match' => 'E043 0A81',
3231 'replace' => 'E049',
3232 ),
3233 646 =>
3234 array (
3235 'match' => 'E055 0A81',
3236 'replace' => 'E057',
3237 ),
3238 647 =>
3239 array (
3240 'match' => 'E059 0A81',
3241 'replace' => 'E05B',
3242 ),
3243 648 =>
3244 array (
3245 'match' => '((0A8D|0A8F|0A90|0A91|0A93|0A94|0AC0|E03E|E03F|0AC5|0AC7|0AC8|0AC9|0ACB|0ACC)) 0A81',
3246 'replace' => '\\1 E031',
3247 ),
3248 649 =>
3249 array (
3250 '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',
3251 'replace' => '\\1 E03E',
3252 ),
3253 650 =>
3254 array (
3255 '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',
3256 'replace' => '\\1 E041',
3257 ),
3258 651 =>
3259 array (
3260 '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',
3261 'replace' => '\\1 E047',
3262 ),
3263 652 =>
3264 array (
3265 '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',
3266 'replace' => '\\1 E04A',
3267 ),
3268 653 =>
3269 array (
3270 'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) 0AC0',
3271 'replace' => '\\1 E03F',
3272 ),
3273 654 =>
3274 array (
3275 'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) E040',
3276 'replace' => '\\1 E042',
3277 ),
3278 655 =>
3279 array (
3280 'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) E046',
3281 'replace' => '\\1 E048',
3282 ),
3283 656 =>
3284 array (
3285 'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) E049',
3286 'replace' => '\\1 E04B',
3287 ),
3288 657 =>
3289 array (
3290 'match' => '0A9C 0AC0',
3291 'replace' => 'E028',
3292 ),
3293 658 =>
3294 array (
3295 'match' => '0AB3 0AC0',
3296 'replace' => 'E02A',
3297 ),
3298 659 =>
3299 array (
3300 'match' => '0AB3 E043',
3301 'replace' => 'E02B',
3302 ),
3303 660 =>
3304 array (
3305 'match' => '0AB3 E046',
3306 'replace' => 'E02C',
3307 ),
3308 661 =>
3309 array (
3310 'match' => '0AB3 E049',
3311 'replace' => 'E02D',
3312 ),
3313);
3314?> \ 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
index 637d70f8..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/ind_hi_1_001.volt.php
+++ /dev/null
@@ -1,4169 +0,0 @@
1<?php
2 $volt = array (
3 0 =>
4 array (
5 'match' => '0915 094D 0937',
6 'replace' => 'E028',
7 ),
8 1 =>
9 array (
10 'match' => '091C 094D 091E',
11 'replace' => 'E029',
12 ),
13 2 =>
14 array (
15 'match' => '0926 094D 092F',
16 'replace' => 'E128',
17 ),
18 3 =>
19 array (
20 'match' => '094D (200D)',
21 'replace' => 'E00E \\1',
22 ),
23 4 =>
24 array (
25 '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))',
26 'replace' => 'E00E \\1',
27 ),
28 5 =>
29 array (
30 'match' => '094D (25CC)',
31 'replace' => 'E00E \\1',
32 ),
33 6 =>
34 array (
35 'match' => '094D 200C',
36 'replace' => 'E00C',
37 ),
38 7 =>
39 array (
40 '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',
41 'replace' => '\\1 E013',
42 ),
43 8 =>
44 array (
45 'match' => '(093C) E00E 0930',
46 'replace' => '\\1 E013',
47 ),
48 9 =>
49 array (
50 'match' => '(200D) E00E 0930',
51 'replace' => '\\1 E013',
52 ),
53 10 =>
54 array (
55 'match' => '(25CC) E00E 0930',
56 'replace' => '\\1 E013',
57 ),
58 11 =>
59 array (
60 'match' => '(0020) E00E 0930',
61 'replace' => '\\1 E013',
62 ),
63 12 =>
64 array (
65 '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',
66 'replace' => '\\1 E015',
67 ),
68 13 =>
69 array (
70 'match' => '((E013|E015|0941|0942|0943|0962|093E|0940|0949|094A|094B|094C|0945|0946|0947|0948|0901)) 0930 094D',
71 'replace' => '\\1 E015',
72 ),
73 14 =>
74 array (
75 'match' => '(093C) 0930 094D',
76 'replace' => '\\1 E015',
77 ),
78 15 =>
79 array (
80 'match' => '(25CC) 0930 094D',
81 'replace' => '\\1 E015',
82 ),
83 16 =>
84 array (
85 'match' => '(E128) 0930 094D',
86 'replace' => '\\1 E015',
87 ),
88 17 =>
89 array (
90 'match' => '0915 093C',
91 'replace' => '0958',
92 ),
93 18 =>
94 array (
95 'match' => '0916 093C',
96 'replace' => '0959',
97 ),
98 19 =>
99 array (
100 'match' => '0917 093C',
101 'replace' => '095A',
102 ),
103 20 =>
104 array (
105 'match' => '0918 093C',
106 'replace' => 'E02A',
107 ),
108 21 =>
109 array (
110 'match' => '0919 093C',
111 'replace' => 'E02B',
112 ),
113 22 =>
114 array (
115 'match' => '091A 093C',
116 'replace' => 'E02C',
117 ),
118 23 =>
119 array (
120 'match' => '091B 093C',
121 'replace' => 'E02D',
122 ),
123 24 =>
124 array (
125 'match' => '091C 093C',
126 'replace' => '095B',
127 ),
128 25 =>
129 array (
130 'match' => '091D 093C',
131 'replace' => 'E02E',
132 ),
133 26 =>
134 array (
135 'match' => '091E 093C',
136 'replace' => 'E02F',
137 ),
138 27 =>
139 array (
140 'match' => '091F 093C',
141 'replace' => 'E030',
142 ),
143 28 =>
144 array (
145 'match' => '0920 093C',
146 'replace' => 'E031',
147 ),
148 29 =>
149 array (
150 'match' => '0921 093C',
151 'replace' => '095C',
152 ),
153 30 =>
154 array (
155 'match' => '0922 093C',
156 'replace' => '095D',
157 ),
158 31 =>
159 array (
160 'match' => '0923 093C',
161 'replace' => 'E032',
162 ),
163 32 =>
164 array (
165 'match' => '0924 093C',
166 'replace' => 'E033',
167 ),
168 33 =>
169 array (
170 'match' => '0925 093C',
171 'replace' => 'E034',
172 ),
173 34 =>
174 array (
175 'match' => '0926 093C',
176 'replace' => 'E035',
177 ),
178 35 =>
179 array (
180 'match' => '0927 093C',
181 'replace' => 'E036',
182 ),
183 36 =>
184 array (
185 'match' => '0928 093C',
186 'replace' => '0929',
187 ),
188 37 =>
189 array (
190 'match' => '092A 093C',
191 'replace' => 'E037',
192 ),
193 38 =>
194 array (
195 'match' => '092B 093C',
196 'replace' => '095E',
197 ),
198 39 =>
199 array (
200 'match' => '092C 093C',
201 'replace' => 'E038',
202 ),
203 40 =>
204 array (
205 'match' => '092D 093C',
206 'replace' => 'E039',
207 ),
208 41 =>
209 array (
210 'match' => '092E 093C',
211 'replace' => 'E03A',
212 ),
213 42 =>
214 array (
215 'match' => '092F 093C',
216 'replace' => '095F',
217 ),
218 43 =>
219 array (
220 'match' => '0930 093C',
221 'replace' => '0931',
222 ),
223 44 =>
224 array (
225 'match' => '0932 093C',
226 'replace' => 'E03B',
227 ),
228 45 =>
229 array (
230 'match' => '0933 093C',
231 'replace' => '0934',
232 ),
233 46 =>
234 array (
235 'match' => '0935 093C',
236 'replace' => 'E03C',
237 ),
238 47 =>
239 array (
240 'match' => '0936 093C',
241 'replace' => 'E03D',
242 ),
243 48 =>
244 array (
245 'match' => '0937 093C',
246 'replace' => 'E03E',
247 ),
248 49 =>
249 array (
250 'match' => '0938 093C',
251 'replace' => 'E03F',
252 ),
253 50 =>
254 array (
255 'match' => '0939 093C',
256 'replace' => 'E040',
257 ),
258 51 =>
259 array (
260 'match' => 'E028 093C',
261 'replace' => 'E041',
262 ),
263 52 =>
264 array (
265 'match' => 'E029 093C',
266 'replace' => 'E042',
267 ),
268 53 =>
269 array (
270 'match' => '0915 E013',
271 'replace' => 'E08B',
272 ),
273 54 =>
274 array (
275 'match' => '0916 E013',
276 'replace' => 'E08C',
277 ),
278 55 =>
279 array (
280 'match' => '0917 E013',
281 'replace' => 'E08D',
282 ),
283 56 =>
284 array (
285 'match' => '0918 E013',
286 'replace' => 'E08E',
287 ),
288 57 =>
289 array (
290 'match' => '0919 E013',
291 'replace' => 'E08F',
292 ),
293 58 =>
294 array (
295 'match' => '091A E013',
296 'replace' => 'E090',
297 ),
298 59 =>
299 array (
300 'match' => '091B E013',
301 'replace' => 'E091',
302 ),
303 60 =>
304 array (
305 'match' => '091C E013',
306 'replace' => 'E092',
307 ),
308 61 =>
309 array (
310 'match' => '091D E013',
311 'replace' => 'E093',
312 ),
313 62 =>
314 array (
315 'match' => '091E E013',
316 'replace' => 'E094',
317 ),
318 63 =>
319 array (
320 'match' => '091F E013',
321 'replace' => 'E095',
322 ),
323 64 =>
324 array (
325 'match' => '0920 E013',
326 'replace' => 'E096',
327 ),
328 65 =>
329 array (
330 'match' => '0921 E013',
331 'replace' => 'E097',
332 ),
333 66 =>
334 array (
335 'match' => '0922 E013',
336 'replace' => 'E098',
337 ),
338 67 =>
339 array (
340 'match' => '0923 E013',
341 'replace' => 'E099',
342 ),
343 68 =>
344 array (
345 'match' => '0924 E013',
346 'replace' => 'E09A',
347 ),
348 69 =>
349 array (
350 'match' => '0925 E013',
351 'replace' => 'E09B',
352 ),
353 70 =>
354 array (
355 'match' => '0926 E013',
356 'replace' => 'E09C',
357 ),
358 71 =>
359 array (
360 'match' => '0927 E013',
361 'replace' => 'E09D',
362 ),
363 72 =>
364 array (
365 'match' => '0928 E013',
366 'replace' => 'E09E',
367 ),
368 73 =>
369 array (
370 'match' => '092A E013',
371 'replace' => 'E09F',
372 ),
373 74 =>
374 array (
375 'match' => '092B E013',
376 'replace' => 'E0A0',
377 ),
378 75 =>
379 array (
380 'match' => '092C E013',
381 'replace' => 'E0A1',
382 ),
383 76 =>
384 array (
385 'match' => '092D E013',
386 'replace' => 'E0A2',
387 ),
388 77 =>
389 array (
390 'match' => '092E E013',
391 'replace' => 'E0A3',
392 ),
393 78 =>
394 array (
395 'match' => '092F E013',
396 'replace' => 'E0A4',
397 ),
398 79 =>
399 array (
400 'match' => '0930 E013',
401 'replace' => 'E0A5',
402 ),
403 80 =>
404 array (
405 'match' => '0932 E013',
406 'replace' => 'E0A6',
407 ),
408 81 =>
409 array (
410 'match' => '0933 E013',
411 'replace' => 'E0A7',
412 ),
413 82 =>
414 array (
415 'match' => '0935 E013',
416 'replace' => 'E0A8',
417 ),
418 83 =>
419 array (
420 'match' => '0936 E013',
421 'replace' => 'E0A9',
422 ),
423 84 =>
424 array (
425 'match' => '0937 E013',
426 'replace' => 'E0AA',
427 ),
428 85 =>
429 array (
430 'match' => '0938 E013',
431 'replace' => 'E0AB',
432 ),
433 86 =>
434 array (
435 'match' => '0939 E013',
436 'replace' => 'E0AC',
437 ),
438 87 =>
439 array (
440 'match' => 'E028 E013',
441 'replace' => 'E0AD',
442 ),
443 88 =>
444 array (
445 'match' => 'E029 E013',
446 'replace' => 'E0AE',
447 ),
448 89 =>
449 array (
450 'match' => '0958 E013',
451 'replace' => 'E0AF',
452 ),
453 90 =>
454 array (
455 'match' => '0959 E013',
456 'replace' => 'E0B0',
457 ),
458 91 =>
459 array (
460 'match' => '095A E013',
461 'replace' => 'E0B1',
462 ),
463 92 =>
464 array (
465 'match' => 'E02A E013',
466 'replace' => 'E0B2',
467 ),
468 93 =>
469 array (
470 'match' => 'E02B E013',
471 'replace' => 'E0B3',
472 ),
473 94 =>
474 array (
475 'match' => 'E02C E013',
476 'replace' => 'E0B4',
477 ),
478 95 =>
479 array (
480 'match' => 'E02D E013',
481 'replace' => 'E0B5',
482 ),
483 96 =>
484 array (
485 'match' => '095B E013',
486 'replace' => 'E0B6',
487 ),
488 97 =>
489 array (
490 'match' => 'E02E E013',
491 'replace' => 'E0B7',
492 ),
493 98 =>
494 array (
495 'match' => 'E02F E013',
496 'replace' => 'E0B8',
497 ),
498 99 =>
499 array (
500 'match' => 'E030 E013',
501 'replace' => 'E0B9',
502 ),
503 100 =>
504 array (
505 'match' => 'E031 E013',
506 'replace' => 'E0BA',
507 ),
508 101 =>
509 array (
510 'match' => '095C E013',
511 'replace' => 'E0BB',
512 ),
513 102 =>
514 array (
515 'match' => '095D E013',
516 'replace' => 'E0BC',
517 ),
518 103 =>
519 array (
520 'match' => 'E032 E013',
521 'replace' => 'E0BD',
522 ),
523 104 =>
524 array (
525 'match' => 'E033 E013',
526 'replace' => 'E0BE',
527 ),
528 105 =>
529 array (
530 'match' => 'E034 E013',
531 'replace' => 'E0BF',
532 ),
533 106 =>
534 array (
535 'match' => 'E035 E013',
536 'replace' => 'E0C0',
537 ),
538 107 =>
539 array (
540 'match' => 'E036 E013',
541 'replace' => 'E0C1',
542 ),
543 108 =>
544 array (
545 'match' => '0929 E013',
546 'replace' => 'E0C2',
547 ),
548 109 =>
549 array (
550 'match' => 'E037 E013',
551 'replace' => 'E0C3',
552 ),
553 110 =>
554 array (
555 'match' => '095E E013',
556 'replace' => 'E0C4',
557 ),
558 111 =>
559 array (
560 'match' => 'E038 E013',
561 'replace' => 'E0C5',
562 ),
563 112 =>
564 array (
565 'match' => 'E039 E013',
566 'replace' => 'E0C6',
567 ),
568 113 =>
569 array (
570 'match' => 'E03A E013',
571 'replace' => 'E0C7',
572 ),
573 114 =>
574 array (
575 'match' => '095F E013',
576 'replace' => 'E0C8',
577 ),
578 115 =>
579 array (
580 'match' => '0931 E013',
581 'replace' => 'E0C9',
582 ),
583 116 =>
584 array (
585 'match' => 'E03B E013',
586 'replace' => 'E0CA',
587 ),
588 117 =>
589 array (
590 'match' => '0934 E013',
591 'replace' => 'E0CB',
592 ),
593 118 =>
594 array (
595 'match' => 'E03C E013',
596 'replace' => 'E0CC',
597 ),
598 119 =>
599 array (
600 'match' => 'E03D E013',
601 'replace' => 'E0CD',
602 ),
603 120 =>
604 array (
605 'match' => 'E03E E013',
606 'replace' => 'E0CE',
607 ),
608 121 =>
609 array (
610 'match' => 'E03F E013',
611 'replace' => 'E0CF',
612 ),
613 122 =>
614 array (
615 'match' => 'E040 E013',
616 'replace' => 'E0D0',
617 ),
618 123 =>
619 array (
620 'match' => 'E041 E013',
621 'replace' => 'E0D1',
622 ),
623 124 =>
624 array (
625 'match' => 'E042 E013',
626 'replace' => 'E0D2',
627 ),
628 125 =>
629 array (
630 'match' => 'E028 E013',
631 'replace' => 'E0AD',
632 ),
633 126 =>
634 array (
635 'match' => 'E029 E013',
636 'replace' => 'E0AE',
637 ),
638 127 =>
639 array (
640 'match' => '0915 E00E',
641 'replace' => 'E043',
642 ),
643 128 =>
644 array (
645 'match' => '0916 E00E',
646 'replace' => 'E044',
647 ),
648 129 =>
649 array (
650 'match' => '0917 E00E',
651 'replace' => 'E045',
652 ),
653 130 =>
654 array (
655 'match' => '0918 E00E',
656 'replace' => 'E046',
657 ),
658 131 =>
659 array (
660 'match' => '0919 E00E',
661 'replace' => 'E047',
662 ),
663 132 =>
664 array (
665 'match' => '091A E00E',
666 'replace' => 'E048',
667 ),
668 133 =>
669 array (
670 'match' => '091B E00E',
671 'replace' => 'E049',
672 ),
673 134 =>
674 array (
675 'match' => '091C E00E',
676 'replace' => 'E04A',
677 ),
678 135 =>
679 array (
680 'match' => '091D E00E',
681 'replace' => 'E04B',
682 ),
683 136 =>
684 array (
685 'match' => '091E E00E',
686 'replace' => 'E04C',
687 ),
688 137 =>
689 array (
690 'match' => '091F E00E',
691 'replace' => 'E04D',
692 ),
693 138 =>
694 array (
695 'match' => '0920 E00E',
696 'replace' => 'E04E',
697 ),
698 139 =>
699 array (
700 'match' => '0921 E00E',
701 'replace' => 'E04F',
702 ),
703 140 =>
704 array (
705 'match' => '0922 E00E',
706 'replace' => 'E050',
707 ),
708 141 =>
709 array (
710 'match' => '0923 E00E',
711 'replace' => 'E051',
712 ),
713 142 =>
714 array (
715 'match' => '0924 E00E',
716 'replace' => 'E052',
717 ),
718 143 =>
719 array (
720 'match' => '0925 E00E',
721 'replace' => 'E053',
722 ),
723 144 =>
724 array (
725 'match' => '0926 E00E',
726 'replace' => 'E054',
727 ),
728 145 =>
729 array (
730 'match' => '0927 E00E',
731 'replace' => 'E055',
732 ),
733 146 =>
734 array (
735 'match' => '0928 E00E',
736 'replace' => 'E056',
737 ),
738 147 =>
739 array (
740 'match' => '092A E00E',
741 'replace' => 'E057',
742 ),
743 148 =>
744 array (
745 'match' => '092B E00E',
746 'replace' => 'E058',
747 ),
748 149 =>
749 array (
750 'match' => '092C E00E',
751 'replace' => 'E059',
752 ),
753 150 =>
754 array (
755 'match' => '092D E00E',
756 'replace' => 'E05A',
757 ),
758 151 =>
759 array (
760 'match' => '092E E00E',
761 'replace' => 'E05B',
762 ),
763 152 =>
764 array (
765 'match' => '092F E00E',
766 'replace' => 'E05C',
767 ),
768 153 =>
769 array (
770 'match' => '0930 E00E',
771 'replace' => 'E05D',
772 ),
773 154 =>
774 array (
775 'match' => '0932 E00E',
776 'replace' => 'E05E',
777 ),
778 155 =>
779 array (
780 'match' => '0933 E00E',
781 'replace' => 'E05F',
782 ),
783 156 =>
784 array (
785 'match' => '0935 E00E',
786 'replace' => 'E060',
787 ),
788 157 =>
789 array (
790 'match' => '0936 E00E',
791 'replace' => 'E061',
792 ),
793 158 =>
794 array (
795 'match' => '0937 E00E',
796 'replace' => 'E062',
797 ),
798 159 =>
799 array (
800 'match' => '0938 E00E',
801 'replace' => 'E063',
802 ),
803 160 =>
804 array (
805 'match' => '0939 E00E',
806 'replace' => 'E064',
807 ),
808 161 =>
809 array (
810 'match' => 'E028 E00E',
811 'replace' => 'E065',
812 ),
813 162 =>
814 array (
815 'match' => 'E029 E00E',
816 'replace' => 'E066',
817 ),
818 163 =>
819 array (
820 'match' => 'E08B E00E',
821 'replace' => 'E0D3',
822 ),
823 164 =>
824 array (
825 'match' => 'E08C E00E',
826 'replace' => 'E0D4',
827 ),
828 165 =>
829 array (
830 'match' => 'E08D E00E',
831 'replace' => 'E0D5',
832 ),
833 166 =>
834 array (
835 'match' => 'E08E E00E',
836 'replace' => 'E0D6',
837 ),
838 167 =>
839 array (
840 'match' => 'E08F E00E',
841 'replace' => 'E0D7',
842 ),
843 168 =>
844 array (
845 'match' => 'E090 E00E',
846 'replace' => 'E0D8',
847 ),
848 169 =>
849 array (
850 'match' => 'E091 E00E',
851 'replace' => 'E0D9',
852 ),
853 170 =>
854 array (
855 'match' => 'E092 E00E',
856 'replace' => 'E0DA',
857 ),
858 171 =>
859 array (
860 'match' => 'E093 E00E',
861 'replace' => 'E0DB',
862 ),
863 172 =>
864 array (
865 'match' => 'E094 E00E',
866 'replace' => 'E0DC',
867 ),
868 173 =>
869 array (
870 'match' => 'E095 E00E',
871 'replace' => 'E0DD',
872 ),
873 174 =>
874 array (
875 'match' => 'E096 E00E',
876 'replace' => 'E0DE',
877 ),
878 175 =>
879 array (
880 'match' => 'E097 E00E',
881 'replace' => 'E0DF',
882 ),
883 176 =>
884 array (
885 'match' => 'E098 E00E',
886 'replace' => 'E0E0',
887 ),
888 177 =>
889 array (
890 'match' => 'E099 E00E',
891 'replace' => 'E0E1',
892 ),
893 178 =>
894 array (
895 'match' => 'E09A E00E',
896 'replace' => 'E0E2',
897 ),
898 179 =>
899 array (
900 'match' => 'E09B E00E',
901 'replace' => 'E0E3',
902 ),
903 180 =>
904 array (
905 'match' => 'E09C E00E',
906 'replace' => 'E0E4',
907 ),
908 181 =>
909 array (
910 'match' => 'E09D E00E',
911 'replace' => 'E0E5',
912 ),
913 182 =>
914 array (
915 'match' => 'E09E E00E',
916 'replace' => 'E0E6',
917 ),
918 183 =>
919 array (
920 'match' => 'E09F E00E',
921 'replace' => 'E0E7',
922 ),
923 184 =>
924 array (
925 'match' => 'E0A0 E00E',
926 'replace' => 'E0E8',
927 ),
928 185 =>
929 array (
930 'match' => 'E0A1 E00E',
931 'replace' => 'E0E9',
932 ),
933 186 =>
934 array (
935 'match' => 'E0A2 E00E',
936 'replace' => 'E0EA',
937 ),
938 187 =>
939 array (
940 'match' => 'E0A3 E00E',
941 'replace' => 'E0EB',
942 ),
943 188 =>
944 array (
945 'match' => 'E0A4 E00E',
946 'replace' => 'E0EC',
947 ),
948 189 =>
949 array (
950 'match' => 'E0A5 E00E',
951 'replace' => 'E0ED',
952 ),
953 190 =>
954 array (
955 'match' => 'E0A6 E00E',
956 'replace' => 'E0EE',
957 ),
958 191 =>
959 array (
960 'match' => 'E0A7 E00E',
961 'replace' => 'E0EF',
962 ),
963 192 =>
964 array (
965 'match' => 'E0A8 E00E',
966 'replace' => 'E0F0',
967 ),
968 193 =>
969 array (
970 'match' => 'E0A9 E00E',
971 'replace' => 'E0F1',
972 ),
973 194 =>
974 array (
975 'match' => 'E0AA E00E',
976 'replace' => 'E0F2',
977 ),
978 195 =>
979 array (
980 'match' => 'E0AB E00E',
981 'replace' => 'E0F3',
982 ),
983 196 =>
984 array (
985 'match' => 'E0AC E00E',
986 'replace' => 'E0F4',
987 ),
988 197 =>
989 array (
990 'match' => 'E0AD E00E',
991 'replace' => 'E0F5',
992 ),
993 198 =>
994 array (
995 'match' => 'E0AE E00E',
996 'replace' => 'E0F6',
997 ),
998 199 =>
999 array (
1000 'match' => 'E0AF E00E',
1001 'replace' => 'E0F7',
1002 ),
1003 200 =>
1004 array (
1005 'match' => 'E0B0 E00E',
1006 'replace' => 'E0F8',
1007 ),
1008 201 =>
1009 array (
1010 'match' => 'E0B1 E00E',
1011 'replace' => 'E0F9',
1012 ),
1013 202 =>
1014 array (
1015 'match' => 'E0B2 E00E',
1016 'replace' => 'E0FA',
1017 ),
1018 203 =>
1019 array (
1020 'match' => 'E0B3 E00E',
1021 'replace' => 'E0FB',
1022 ),
1023 204 =>
1024 array (
1025 'match' => 'E0B4 E00E',
1026 'replace' => 'E0FC',
1027 ),
1028 205 =>
1029 array (
1030 'match' => 'E0B5 E00E',
1031 'replace' => 'E0FD',
1032 ),
1033 206 =>
1034 array (
1035 'match' => 'E0B6 E00E',
1036 'replace' => 'E0FE',
1037 ),
1038 207 =>
1039 array (
1040 'match' => 'E0B7 E00E',
1041 'replace' => 'E0FF',
1042 ),
1043 208 =>
1044 array (
1045 'match' => 'E0B8 E00E',
1046 'replace' => 'E100',
1047 ),
1048 209 =>
1049 array (
1050 'match' => 'E0B9 E00E',
1051 'replace' => 'E101',
1052 ),
1053 210 =>
1054 array (
1055 'match' => 'E0BA E00E',
1056 'replace' => 'E102',
1057 ),
1058 211 =>
1059 array (
1060 'match' => 'E0BB E00E',
1061 'replace' => 'E103',
1062 ),
1063 212 =>
1064 array (
1065 'match' => 'E0BC E00E',
1066 'replace' => 'E104',
1067 ),
1068 213 =>
1069 array (
1070 'match' => 'E0BD E00E',
1071 'replace' => 'E105',
1072 ),
1073 214 =>
1074 array (
1075 'match' => 'E0BE E00E',
1076 'replace' => 'E106',
1077 ),
1078 215 =>
1079 array (
1080 'match' => 'E0BF E00E',
1081 'replace' => 'E107',
1082 ),
1083 216 =>
1084 array (
1085 'match' => 'E0C0 E00E',
1086 'replace' => 'E108',
1087 ),
1088 217 =>
1089 array (
1090 'match' => 'E0C1 E00E',
1091 'replace' => 'E109',
1092 ),
1093 218 =>
1094 array (
1095 'match' => 'E0C2 E00E',
1096 'replace' => 'E10A',
1097 ),
1098 219 =>
1099 array (
1100 'match' => 'E0C3 E00E',
1101 'replace' => 'E10B',
1102 ),
1103 220 =>
1104 array (
1105 'match' => 'E0C4 E00E',
1106 'replace' => 'E10C',
1107 ),
1108 221 =>
1109 array (
1110 'match' => 'E0C5 E00E',
1111 'replace' => 'E10D',
1112 ),
1113 222 =>
1114 array (
1115 'match' => 'E0C6 E00E',
1116 'replace' => 'E10E',
1117 ),
1118 223 =>
1119 array (
1120 'match' => 'E0C7 E00E',
1121 'replace' => 'E10F',
1122 ),
1123 224 =>
1124 array (
1125 'match' => 'E0C8 E00E',
1126 'replace' => 'E110',
1127 ),
1128 225 =>
1129 array (
1130 'match' => 'E0C9 E00E',
1131 'replace' => 'E111',
1132 ),
1133 226 =>
1134 array (
1135 'match' => 'E0CA E00E',
1136 'replace' => 'E112',
1137 ),
1138 227 =>
1139 array (
1140 'match' => 'E0CB E00E',
1141 'replace' => 'E113',
1142 ),
1143 228 =>
1144 array (
1145 'match' => 'E0CC E00E',
1146 'replace' => 'E114',
1147 ),
1148 229 =>
1149 array (
1150 'match' => 'E0CD E00E',
1151 'replace' => 'E115',
1152 ),
1153 230 =>
1154 array (
1155 'match' => 'E0CE E00E',
1156 'replace' => 'E116',
1157 ),
1158 231 =>
1159 array (
1160 'match' => 'E0CF E00E',
1161 'replace' => 'E117',
1162 ),
1163 232 =>
1164 array (
1165 'match' => 'E0D0 E00E',
1166 'replace' => 'E118',
1167 ),
1168 233 =>
1169 array (
1170 'match' => 'E0D1 E00E',
1171 'replace' => 'E119',
1172 ),
1173 234 =>
1174 array (
1175 'match' => 'E0D2 E00E',
1176 'replace' => 'E11A',
1177 ),
1178 235 =>
1179 array (
1180 'match' => '0958 E00E',
1181 'replace' => 'E067',
1182 ),
1183 236 =>
1184 array (
1185 'match' => '0959 E00E',
1186 'replace' => 'E068',
1187 ),
1188 237 =>
1189 array (
1190 'match' => '095A E00E',
1191 'replace' => 'E069',
1192 ),
1193 238 =>
1194 array (
1195 'match' => 'E02A E00E',
1196 'replace' => 'E06A',
1197 ),
1198 239 =>
1199 array (
1200 'match' => 'E02B E00E',
1201 'replace' => 'E06B',
1202 ),
1203 240 =>
1204 array (
1205 'match' => 'E02C E00E',
1206 'replace' => 'E06C',
1207 ),
1208 241 =>
1209 array (
1210 'match' => 'E02D E00E',
1211 'replace' => 'E06D',
1212 ),
1213 242 =>
1214 array (
1215 'match' => '095B E00E',
1216 'replace' => 'E06E',
1217 ),
1218 243 =>
1219 array (
1220 'match' => 'E02E E00E',
1221 'replace' => 'E06F',
1222 ),
1223 244 =>
1224 array (
1225 'match' => 'E02F E00E',
1226 'replace' => 'E070',
1227 ),
1228 245 =>
1229 array (
1230 'match' => 'E030 E00E',
1231 'replace' => 'E071',
1232 ),
1233 246 =>
1234 array (
1235 'match' => 'E031 E00E',
1236 'replace' => 'E072',
1237 ),
1238 247 =>
1239 array (
1240 'match' => '095C E00E',
1241 'replace' => 'E073',
1242 ),
1243 248 =>
1244 array (
1245 'match' => '095D E00E',
1246 'replace' => 'E074',
1247 ),
1248 249 =>
1249 array (
1250 'match' => 'E032 E00E',
1251 'replace' => 'E075',
1252 ),
1253 250 =>
1254 array (
1255 'match' => 'E033 E00E',
1256 'replace' => 'E076',
1257 ),
1258 251 =>
1259 array (
1260 'match' => 'E034 E00E',
1261 'replace' => 'E077',
1262 ),
1263 252 =>
1264 array (
1265 'match' => 'E035 E00E',
1266 'replace' => 'E078',
1267 ),
1268 253 =>
1269 array (
1270 'match' => 'E036 E00E',
1271 'replace' => 'E079',
1272 ),
1273 254 =>
1274 array (
1275 'match' => '0929 E00E',
1276 'replace' => 'E07A',
1277 ),
1278 255 =>
1279 array (
1280 'match' => 'E037 E00E',
1281 'replace' => 'E07B',
1282 ),
1283 256 =>
1284 array (
1285 'match' => '095E E00E',
1286 'replace' => 'E07C',
1287 ),
1288 257 =>
1289 array (
1290 'match' => 'E038 E00E',
1291 'replace' => 'E07D',
1292 ),
1293 258 =>
1294 array (
1295 'match' => 'E039 E00E',
1296 'replace' => 'E07E',
1297 ),
1298 259 =>
1299 array (
1300 'match' => 'E03A E00E',
1301 'replace' => 'E07F',
1302 ),
1303 260 =>
1304 array (
1305 'match' => '095F E00E',
1306 'replace' => 'E080',
1307 ),
1308 261 =>
1309 array (
1310 'match' => '0931 E00E',
1311 'replace' => 'E081',
1312 ),
1313 262 =>
1314 array (
1315 'match' => 'E03B E00E',
1316 'replace' => 'E082',
1317 ),
1318 263 =>
1319 array (
1320 'match' => '0934 E00E',
1321 'replace' => 'E083',
1322 ),
1323 264 =>
1324 array (
1325 'match' => 'E03C E00E',
1326 'replace' => 'E084',
1327 ),
1328 265 =>
1329 array (
1330 'match' => 'E03D E00E',
1331 'replace' => 'E085',
1332 ),
1333 266 =>
1334 array (
1335 'match' => 'E03E E00E',
1336 'replace' => 'E086',
1337 ),
1338 267 =>
1339 array (
1340 'match' => 'E03F E00E',
1341 'replace' => 'E087',
1342 ),
1343 268 =>
1344 array (
1345 'match' => 'E040 E00E',
1346 'replace' => 'E088',
1347 ),
1348 269 =>
1349 array (
1350 'match' => 'E041 E00E',
1351 'replace' => 'E089',
1352 ),
1353 270 =>
1354 array (
1355 'match' => 'E042 E00E',
1356 'replace' => 'E08A',
1357 ),
1358 271 =>
1359 array (
1360 'match' => 'E043 0924',
1361 'replace' => 'E11B',
1362 ),
1363 272 =>
1364 array (
1365 'match' => 'E044 0928',
1366 'replace' => 'E11C',
1367 ),
1368 273 =>
1369 array (
1370 'match' => 'E047 092E',
1371 'replace' => 'E11D',
1372 ),
1373 274 =>
1374 array (
1375 'match' => 'E052 0924',
1376 'replace' => 'E11E',
1377 ),
1378 275 =>
1379 array (
1380 'match' => 'E052 0928',
1381 'replace' => 'E11F',
1382 ),
1383 276 =>
1384 array (
1385 'match' => 'E054 0917',
1386 'replace' => 'E120',
1387 ),
1388 277 =>
1389 array (
1390 'match' => 'E054 0918',
1391 'replace' => 'E121',
1392 ),
1393 278 =>
1394 array (
1395 'match' => 'E054 0926',
1396 'replace' => 'E122',
1397 ),
1398 279 =>
1399 array (
1400 'match' => 'E054 0927',
1401 'replace' => 'E123',
1402 ),
1403 280 =>
1404 array (
1405 'match' => 'E054 0928',
1406 'replace' => 'E124',
1407 ),
1408 281 =>
1409 array (
1410 'match' => 'E054 092C',
1411 'replace' => 'E125',
1412 ),
1413 282 =>
1414 array (
1415 'match' => 'E054 092D',
1416 'replace' => 'E126',
1417 ),
1418 283 =>
1419 array (
1420 'match' => 'E054 E05C 092D',
1421 'replace' => 'E127',
1422 ),
1423 284 =>
1424 array (
1425 'match' => 'E054 092F',
1426 'replace' => 'E128',
1427 ),
1428 285 =>
1429 array (
1430 'match' => 'E054 0935',
1431 'replace' => 'E129',
1432 ),
1433 286 =>
1434 array (
1435 'match' => 'E057 0924',
1436 'replace' => 'E12A',
1437 ),
1438 287 =>
1439 array (
1440 'match' => 'E061 0928',
1441 'replace' => 'E12B',
1442 ),
1443 288 =>
1444 array (
1445 'match' => 'E061 091A',
1446 'replace' => 'E12C',
1447 ),
1448 289 =>
1449 array (
1450 'match' => 'E061 0932',
1451 'replace' => 'E12D',
1452 ),
1453 290 =>
1454 array (
1455 'match' => 'E061 0935',
1456 'replace' => 'E12E',
1457 ),
1458 291 =>
1459 array (
1460 'match' => 'E062 091F',
1461 'replace' => 'E12F',
1462 ),
1463 292 =>
1464 array (
1465 'match' => 'E062 0920',
1466 'replace' => 'E130',
1467 ),
1468 293 =>
1469 array (
1470 'match' => 'E062 E095',
1471 'replace' => 'E131',
1472 ),
1473 294 =>
1474 array (
1475 'match' => 'E062 E096',
1476 'replace' => 'E132',
1477 ),
1478 295 =>
1479 array (
1480 'match' => 'E063 E09A',
1481 'replace' => 'E133',
1482 ),
1483 296 =>
1484 array (
1485 'match' => 'E064 0928',
1486 'replace' => 'E134',
1487 ),
1488 297 =>
1489 array (
1490 'match' => 'E064 092E',
1491 'replace' => 'E135',
1492 ),
1493 298 =>
1494 array (
1495 'match' => 'E064 092F',
1496 'replace' => 'E136',
1497 ),
1498 299 =>
1499 array (
1500 'match' => 'E064 0923',
1501 'replace' => 'E137',
1502 ),
1503 300 =>
1504 array (
1505 'match' => 'E064 0932',
1506 'replace' => 'E138',
1507 ),
1508 301 =>
1509 array (
1510 'match' => 'E064 0935',
1511 'replace' => 'E139',
1512 ),
1513 302 =>
1514 array (
1515 'match' => 'E044 E056',
1516 'replace' => 'E13B',
1517 ),
1518 303 =>
1519 array (
1520 'match' => 'E052 E052',
1521 'replace' => 'E13D',
1522 ),
1523 304 =>
1524 array (
1525 'match' => 'E052 E056',
1526 'replace' => 'E13E',
1527 ),
1528 305 =>
1529 array (
1530 'match' => 'E054 E05B',
1531 'replace' => 'E13F',
1532 ),
1533 306 =>
1534 array (
1535 'match' => 'E057 E052',
1536 'replace' => 'E140',
1537 ),
1538 307 =>
1539 array (
1540 'match' => 'E061 E056',
1541 'replace' => 'E141',
1542 ),
1543 308 =>
1544 array (
1545 'match' => 'E061 E048',
1546 'replace' => 'E142',
1547 ),
1548 309 =>
1549 array (
1550 'match' => 'E061 E05E',
1551 'replace' => 'E143',
1552 ),
1553 310 =>
1554 array (
1555 'match' => 'E061 E060',
1556 'replace' => 'E144',
1557 ),
1558 311 =>
1559 array (
1560 'match' => 'E063 E0E2',
1561 'replace' => 'E145',
1562 ),
1563 312 =>
1564 array (
1565 '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)',
1566 'replace' => 'E047 E015 \\1',
1567 ),
1568 313 =>
1569 array (
1570 '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)',
1571 'replace' => 'E04D E015 \\1',
1572 ),
1573 314 =>
1574 array (
1575 '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)',
1576 'replace' => 'E04E E015 \\1',
1577 ),
1578 315 =>
1579 array (
1580 '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)',
1581 'replace' => 'E04F E015 \\1',
1582 ),
1583 316 =>
1584 array (
1585 '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)',
1586 'replace' => 'E050 E015 \\1',
1587 ),
1588 317 =>
1589 array (
1590 '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)',
1591 'replace' => 'E054 E015 \\1',
1592 ),
1593 318 =>
1594 array (
1595 '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)',
1596 'replace' => 'E06B E015 \\1',
1597 ),
1598 319 =>
1599 array (
1600 '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)',
1601 'replace' => 'E071 E015 \\1',
1602 ),
1603 320 =>
1604 array (
1605 '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)',
1606 'replace' => 'E072 E015 \\1',
1607 ),
1608 321 =>
1609 array (
1610 '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)',
1611 'replace' => 'E073 E015 \\1',
1612 ),
1613 322 =>
1614 array (
1615 '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)',
1616 'replace' => 'E074 E015 \\1',
1617 ),
1618 323 =>
1619 array (
1620 '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)',
1621 'replace' => 'E078 E015 \\1',
1622 ),
1623 324 =>
1624 array (
1625 '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)',
1626 'replace' => 'E0FB E015 \\1',
1627 ),
1628 325 =>
1629 array (
1630 '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)',
1631 'replace' => 'E101 E015 \\1',
1632 ),
1633 326 =>
1634 array (
1635 '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)',
1636 'replace' => 'E102 E015 \\1',
1637 ),
1638 327 =>
1639 array (
1640 '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)',
1641 'replace' => 'E103 E015 \\1',
1642 ),
1643 328 =>
1644 array (
1645 '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)',
1646 'replace' => 'E104 E015 \\1',
1647 ),
1648 329 =>
1649 array (
1650 '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)',
1651 'replace' => 'E108 E015 \\1',
1652 ),
1653 330 =>
1654 array (
1655 '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)',
1656 'replace' => 'E047 E015 \\1',
1657 ),
1658 331 =>
1659 array (
1660 '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)',
1661 'replace' => 'E04D E015 \\1',
1662 ),
1663 332 =>
1664 array (
1665 '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)',
1666 'replace' => 'E04E E015 \\1',
1667 ),
1668 333 =>
1669 array (
1670 '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)',
1671 'replace' => 'E04F E015 \\1',
1672 ),
1673 334 =>
1674 array (
1675 '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)',
1676 'replace' => 'E050 E015 \\1',
1677 ),
1678 335 =>
1679 array (
1680 '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)',
1681 'replace' => 'E054 E015 \\1',
1682 ),
1683 336 =>
1684 array (
1685 '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)',
1686 'replace' => 'E06B E015 \\1',
1687 ),
1688 337 =>
1689 array (
1690 '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)',
1691 'replace' => 'E071 E015 \\1',
1692 ),
1693 338 =>
1694 array (
1695 '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)',
1696 'replace' => 'E072 E015 \\1',
1697 ),
1698 339 =>
1699 array (
1700 '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)',
1701 'replace' => 'E073 E015 \\1',
1702 ),
1703 340 =>
1704 array (
1705 '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)',
1706 'replace' => 'E074 E015 \\1',
1707 ),
1708 341 =>
1709 array (
1710 '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)',
1711 'replace' => 'E078 E015 \\1',
1712 ),
1713 342 =>
1714 array (
1715 '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)',
1716 'replace' => 'E0FB E015 \\1',
1717 ),
1718 343 =>
1719 array (
1720 '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)',
1721 'replace' => 'E101 E015 \\1',
1722 ),
1723 344 =>
1724 array (
1725 '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)',
1726 'replace' => 'E102 E015 \\1',
1727 ),
1728 345 =>
1729 array (
1730 '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)',
1731 'replace' => 'E103 E015 \\1',
1732 ),
1733 346 =>
1734 array (
1735 '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)',
1736 'replace' => 'E104 E015 \\1',
1737 ),
1738 347 =>
1739 array (
1740 '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)',
1741 'replace' => 'E108 E015 \\1',
1742 ),
1743 348 =>
1744 array (
1745 '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)',
1746 'replace' => 'E047 E015 \\1',
1747 ),
1748 349 =>
1749 array (
1750 '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)',
1751 'replace' => 'E04D E015 \\1',
1752 ),
1753 350 =>
1754 array (
1755 '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)',
1756 'replace' => 'E04E E015 \\1',
1757 ),
1758 351 =>
1759 array (
1760 '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)',
1761 'replace' => 'E04F E015 \\1',
1762 ),
1763 352 =>
1764 array (
1765 '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)',
1766 'replace' => 'E050 E015 \\1',
1767 ),
1768 353 =>
1769 array (
1770 '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)',
1771 'replace' => 'E054 E015 \\1',
1772 ),
1773 354 =>
1774 array (
1775 '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)',
1776 'replace' => 'E06B E015 \\1',
1777 ),
1778 355 =>
1779 array (
1780 '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)',
1781 'replace' => 'E071 E015 \\1',
1782 ),
1783 356 =>
1784 array (
1785 '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)',
1786 'replace' => 'E072 E015 \\1',
1787 ),
1788 357 =>
1789 array (
1790 '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)',
1791 'replace' => 'E073 E015 \\1',
1792 ),
1793 358 =>
1794 array (
1795 '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)',
1796 'replace' => 'E074 E015 \\1',
1797 ),
1798 359 =>
1799 array (
1800 '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)',
1801 'replace' => 'E078 E015 \\1',
1802 ),
1803 360 =>
1804 array (
1805 '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)',
1806 'replace' => 'E0FB E015 \\1',
1807 ),
1808 361 =>
1809 array (
1810 '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)',
1811 'replace' => 'E101 E015 \\1',
1812 ),
1813 362 =>
1814 array (
1815 '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)',
1816 'replace' => 'E102 E015 \\1',
1817 ),
1818 363 =>
1819 array (
1820 '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)',
1821 'replace' => 'E103 E015 \\1',
1822 ),
1823 364 =>
1824 array (
1825 '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)',
1826 'replace' => 'E104 E015 \\1',
1827 ),
1828 365 =>
1829 array (
1830 '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)',
1831 'replace' => 'E108 E015 \\1',
1832 ),
1833 366 =>
1834 array (
1835 'match' => '200D E00E',
1836 'replace' => '094D',
1837 ),
1838 367 =>
1839 array (
1840 'match' => 'E00C',
1841 'replace' => '094D',
1842 ),
1843 368 =>
1844 array (
1845 'match' => 'E00E',
1846 'replace' => '094D',
1847 ),
1848 369 =>
1849 array (
1850 'match' => 'E043 200D',
1851 'replace' => 'E043',
1852 ),
1853 370 =>
1854 array (
1855 'match' => 'E044 200D',
1856 'replace' => 'E044',
1857 ),
1858 371 =>
1859 array (
1860 'match' => 'E045 200D',
1861 'replace' => 'E045',
1862 ),
1863 372 =>
1864 array (
1865 'match' => 'E046 200D',
1866 'replace' => 'E046',
1867 ),
1868 373 =>
1869 array (
1870 'match' => 'E047 200D',
1871 'replace' => 'E047',
1872 ),
1873 374 =>
1874 array (
1875 'match' => 'E048 200D',
1876 'replace' => 'E048',
1877 ),
1878 375 =>
1879 array (
1880 'match' => 'E049 200D',
1881 'replace' => 'E049',
1882 ),
1883 376 =>
1884 array (
1885 'match' => 'E04A 200D',
1886 'replace' => 'E04A',
1887 ),
1888 377 =>
1889 array (
1890 'match' => 'E04B 200D',
1891 'replace' => 'E04B',
1892 ),
1893 378 =>
1894 array (
1895 'match' => 'E04C 200D',
1896 'replace' => 'E04C',
1897 ),
1898 379 =>
1899 array (
1900 'match' => 'E04D 200D',
1901 'replace' => 'E04D',
1902 ),
1903 380 =>
1904 array (
1905 'match' => 'E04E 200D',
1906 'replace' => 'E04E',
1907 ),
1908 381 =>
1909 array (
1910 'match' => 'E04F 200D',
1911 'replace' => 'E04F',
1912 ),
1913 382 =>
1914 array (
1915 'match' => 'E050 200D',
1916 'replace' => 'E050',
1917 ),
1918 383 =>
1919 array (
1920 'match' => 'E051 200D',
1921 'replace' => 'E051',
1922 ),
1923 384 =>
1924 array (
1925 'match' => 'E052 200D',
1926 'replace' => 'E052',
1927 ),
1928 385 =>
1929 array (
1930 'match' => 'E053 200D',
1931 'replace' => 'E053',
1932 ),
1933 386 =>
1934 array (
1935 'match' => 'E054 200D',
1936 'replace' => 'E054',
1937 ),
1938 387 =>
1939 array (
1940 'match' => 'E055 200D',
1941 'replace' => 'E055',
1942 ),
1943 388 =>
1944 array (
1945 'match' => 'E056 200D',
1946 'replace' => 'E056',
1947 ),
1948 389 =>
1949 array (
1950 'match' => 'E057 200D',
1951 'replace' => 'E057',
1952 ),
1953 390 =>
1954 array (
1955 'match' => 'E058 200D',
1956 'replace' => 'E058',
1957 ),
1958 391 =>
1959 array (
1960 'match' => 'E059 200D',
1961 'replace' => 'E059',
1962 ),
1963 392 =>
1964 array (
1965 'match' => 'E05A 200D',
1966 'replace' => 'E05A',
1967 ),
1968 393 =>
1969 array (
1970 'match' => 'E05B 200D',
1971 'replace' => 'E05B',
1972 ),
1973 394 =>
1974 array (
1975 'match' => 'E05C 200D',
1976 'replace' => 'E05C',
1977 ),
1978 395 =>
1979 array (
1980 'match' => 'E05D 200D',
1981 'replace' => 'E05D',
1982 ),
1983 396 =>
1984 array (
1985 'match' => 'E05E 200D',
1986 'replace' => 'E05E',
1987 ),
1988 397 =>
1989 array (
1990 'match' => 'E05F 200D',
1991 'replace' => 'E05F',
1992 ),
1993 398 =>
1994 array (
1995 'match' => 'E060 200D',
1996 'replace' => 'E060',
1997 ),
1998 399 =>
1999 array (
2000 'match' => 'E061 200D',
2001 'replace' => 'E061',
2002 ),
2003 400 =>
2004 array (
2005 'match' => 'E062 200D',
2006 'replace' => 'E062',
2007 ),
2008 401 =>
2009 array (
2010 'match' => 'E063 200D',
2011 'replace' => 'E063',
2012 ),
2013 402 =>
2014 array (
2015 'match' => 'E064 200D',
2016 'replace' => 'E064',
2017 ),
2018 403 =>
2019 array (
2020 'match' => 'E065 200D',
2021 'replace' => 'E065',
2022 ),
2023 404 =>
2024 array (
2025 'match' => 'E066 200D',
2026 'replace' => 'E066',
2027 ),
2028 405 =>
2029 array (
2030 'match' => 'E067 200D',
2031 'replace' => 'E067',
2032 ),
2033 406 =>
2034 array (
2035 'match' => 'E068 200D',
2036 'replace' => 'E068',
2037 ),
2038 407 =>
2039 array (
2040 'match' => 'E069 200D',
2041 'replace' => 'E069',
2042 ),
2043 408 =>
2044 array (
2045 'match' => 'E06A 200D',
2046 'replace' => 'E06A',
2047 ),
2048 409 =>
2049 array (
2050 'match' => 'E06B 200D',
2051 'replace' => 'E06B',
2052 ),
2053 410 =>
2054 array (
2055 'match' => 'E06C 200D',
2056 'replace' => 'E06C',
2057 ),
2058 411 =>
2059 array (
2060 'match' => 'E06D 200D',
2061 'replace' => 'E06D',
2062 ),
2063 412 =>
2064 array (
2065 'match' => 'E06E 200D',
2066 'replace' => 'E06E',
2067 ),
2068 413 =>
2069 array (
2070 'match' => 'E06F 200D',
2071 'replace' => 'E06F',
2072 ),
2073 414 =>
2074 array (
2075 'match' => 'E070 200D',
2076 'replace' => 'E070',
2077 ),
2078 415 =>
2079 array (
2080 'match' => 'E071 200D',
2081 'replace' => 'E071',
2082 ),
2083 416 =>
2084 array (
2085 'match' => 'E072 200D',
2086 'replace' => 'E072',
2087 ),
2088 417 =>
2089 array (
2090 'match' => 'E073 200D',
2091 'replace' => 'E073',
2092 ),
2093 418 =>
2094 array (
2095 'match' => 'E074 200D',
2096 'replace' => 'E074',
2097 ),
2098 419 =>
2099 array (
2100 'match' => 'E075 200D',
2101 'replace' => 'E075',
2102 ),
2103 420 =>
2104 array (
2105 'match' => 'E076 200D',
2106 'replace' => 'E076',
2107 ),
2108 421 =>
2109 array (
2110 'match' => 'E077 200D',
2111 'replace' => 'E077',
2112 ),
2113 422 =>
2114 array (
2115 'match' => 'E078 200D',
2116 'replace' => 'E078',
2117 ),
2118 423 =>
2119 array (
2120 'match' => 'E079 200D',
2121 'replace' => 'E079',
2122 ),
2123 424 =>
2124 array (
2125 'match' => 'E07A 200D',
2126 'replace' => 'E07A',
2127 ),
2128 425 =>
2129 array (
2130 'match' => 'E07B 200D',
2131 'replace' => 'E07B',
2132 ),
2133 426 =>
2134 array (
2135 'match' => 'E07C 200D',
2136 'replace' => 'E07C',
2137 ),
2138 427 =>
2139 array (
2140 'match' => 'E07D 200D',
2141 'replace' => 'E07D',
2142 ),
2143 428 =>
2144 array (
2145 'match' => 'E07E 200D',
2146 'replace' => 'E07E',
2147 ),
2148 429 =>
2149 array (
2150 'match' => 'E07F 200D',
2151 'replace' => 'E07F',
2152 ),
2153 430 =>
2154 array (
2155 'match' => 'E080 200D',
2156 'replace' => 'E080',
2157 ),
2158 431 =>
2159 array (
2160 'match' => 'E081 200D',
2161 'replace' => 'E081',
2162 ),
2163 432 =>
2164 array (
2165 'match' => 'E082 200D',
2166 'replace' => 'E082',
2167 ),
2168 433 =>
2169 array (
2170 'match' => 'E083 200D',
2171 'replace' => 'E083',
2172 ),
2173 434 =>
2174 array (
2175 'match' => 'E084 200D',
2176 'replace' => 'E084',
2177 ),
2178 435 =>
2179 array (
2180 'match' => 'E085 200D',
2181 'replace' => 'E085',
2182 ),
2183 436 =>
2184 array (
2185 'match' => 'E086 200D',
2186 'replace' => 'E086',
2187 ),
2188 437 =>
2189 array (
2190 'match' => 'E087 200D',
2191 'replace' => 'E087',
2192 ),
2193 438 =>
2194 array (
2195 'match' => 'E088 200D',
2196 'replace' => 'E088',
2197 ),
2198 439 =>
2199 array (
2200 'match' => 'E089 200D',
2201 'replace' => 'E089',
2202 ),
2203 440 =>
2204 array (
2205 'match' => 'E08A 200D',
2206 'replace' => 'E08A',
2207 ),
2208 441 =>
2209 array (
2210 'match' => 'E0D3 200D',
2211 'replace' => 'E0D3',
2212 ),
2213 442 =>
2214 array (
2215 'match' => 'E0D4 200D',
2216 'replace' => 'E0D4',
2217 ),
2218 443 =>
2219 array (
2220 'match' => 'E0D5 200D',
2221 'replace' => 'E0D5',
2222 ),
2223 444 =>
2224 array (
2225 'match' => 'E0D6 200D',
2226 'replace' => 'E0D6',
2227 ),
2228 445 =>
2229 array (
2230 'match' => 'E0D7 200D',
2231 'replace' => 'E0D7',
2232 ),
2233 446 =>
2234 array (
2235 'match' => 'E0D8 200D',
2236 'replace' => 'E0D8',
2237 ),
2238 447 =>
2239 array (
2240 'match' => 'E0D9 200D',
2241 'replace' => 'E0D9',
2242 ),
2243 448 =>
2244 array (
2245 'match' => 'E0DA 200D',
2246 'replace' => 'E0DA',
2247 ),
2248 449 =>
2249 array (
2250 'match' => 'E0DB 200D',
2251 'replace' => 'E0DB',
2252 ),
2253 450 =>
2254 array (
2255 'match' => 'E0DC 200D',
2256 'replace' => 'E0DC',
2257 ),
2258 451 =>
2259 array (
2260 'match' => 'E0DD 200D',
2261 'replace' => 'E0DD',
2262 ),
2263 452 =>
2264 array (
2265 'match' => 'E0DE 200D',
2266 'replace' => 'E0DE',
2267 ),
2268 453 =>
2269 array (
2270 'match' => 'E0DF 200D',
2271 'replace' => 'E0DF',
2272 ),
2273 454 =>
2274 array (
2275 'match' => 'E0E0 200D',
2276 'replace' => 'E0E0',
2277 ),
2278 455 =>
2279 array (
2280 'match' => 'E0E1 200D',
2281 'replace' => 'E0E1',
2282 ),
2283 456 =>
2284 array (
2285 'match' => 'E0E2 200D',
2286 'replace' => 'E0E2',
2287 ),
2288 457 =>
2289 array (
2290 'match' => 'E0E3 200D',
2291 'replace' => 'E0E3',
2292 ),
2293 458 =>
2294 array (
2295 'match' => 'E0E4 200D',
2296 'replace' => 'E0E4',
2297 ),
2298 459 =>
2299 array (
2300 'match' => 'E0E5 200D',
2301 'replace' => 'E0E5',
2302 ),
2303 460 =>
2304 array (
2305 'match' => 'E0E6 200D',
2306 'replace' => 'E0E6',
2307 ),
2308 461 =>
2309 array (
2310 'match' => 'E0E7 200D',
2311 'replace' => 'E0E7',
2312 ),
2313 462 =>
2314 array (
2315 'match' => 'E0E8 200D',
2316 'replace' => 'E0E8',
2317 ),
2318 463 =>
2319 array (
2320 'match' => 'E0E9 200D',
2321 'replace' => 'E0E9',
2322 ),
2323 464 =>
2324 array (
2325 'match' => 'E0EA 200D',
2326 'replace' => 'E0EA',
2327 ),
2328 465 =>
2329 array (
2330 'match' => 'E0EB 200D',
2331 'replace' => 'E0EB',
2332 ),
2333 466 =>
2334 array (
2335 'match' => 'E0EC 200D',
2336 'replace' => 'E0EC',
2337 ),
2338 467 =>
2339 array (
2340 'match' => 'E0ED 200D',
2341 'replace' => 'E0ED',
2342 ),
2343 468 =>
2344 array (
2345 'match' => 'E0EE 200D',
2346 'replace' => 'E0EE',
2347 ),
2348 469 =>
2349 array (
2350 'match' => 'E0EF 200D',
2351 'replace' => 'E0EF',
2352 ),
2353 470 =>
2354 array (
2355 'match' => 'E0F0 200D',
2356 'replace' => 'E0F0',
2357 ),
2358 471 =>
2359 array (
2360 'match' => 'E0F1 200D',
2361 'replace' => 'E0F1',
2362 ),
2363 472 =>
2364 array (
2365 'match' => 'E0F2 200D',
2366 'replace' => 'E0F2',
2367 ),
2368 473 =>
2369 array (
2370 'match' => 'E0F3 200D',
2371 'replace' => 'E0F3',
2372 ),
2373 474 =>
2374 array (
2375 'match' => 'E0F4 200D',
2376 'replace' => 'E0F4',
2377 ),
2378 475 =>
2379 array (
2380 'match' => 'E0F5 200D',
2381 'replace' => 'E0F5',
2382 ),
2383 476 =>
2384 array (
2385 'match' => 'E0F6 200D',
2386 'replace' => 'E0F6',
2387 ),
2388 477 =>
2389 array (
2390 'match' => 'E0F7 200D',
2391 'replace' => 'E0F7',
2392 ),
2393 478 =>
2394 array (
2395 'match' => 'E0F8 200D',
2396 'replace' => 'E0F8',
2397 ),
2398 479 =>
2399 array (
2400 'match' => 'E0F9 200D',
2401 'replace' => 'E0F9',
2402 ),
2403 480 =>
2404 array (
2405 'match' => 'E0FA 200D',
2406 'replace' => 'E0FA',
2407 ),
2408 481 =>
2409 array (
2410 'match' => 'E0FB 200D',
2411 'replace' => 'E0FB',
2412 ),
2413 482 =>
2414 array (
2415 'match' => 'E0FC 200D',
2416 'replace' => 'E0FC',
2417 ),
2418 483 =>
2419 array (
2420 'match' => 'E0FD 200D',
2421 'replace' => 'E0FD',
2422 ),
2423 484 =>
2424 array (
2425 'match' => 'E0FE 200D',
2426 'replace' => 'E0FE',
2427 ),
2428 485 =>
2429 array (
2430 'match' => 'E0FF 200D',
2431 'replace' => 'E0FF',
2432 ),
2433 486 =>
2434 array (
2435 'match' => 'E100 200D',
2436 'replace' => 'E100',
2437 ),
2438 487 =>
2439 array (
2440 'match' => 'E101 200D',
2441 'replace' => 'E101',
2442 ),
2443 488 =>
2444 array (
2445 'match' => 'E102 200D',
2446 'replace' => 'E102',
2447 ),
2448 489 =>
2449 array (
2450 'match' => 'E103 200D',
2451 'replace' => 'E103',
2452 ),
2453 490 =>
2454 array (
2455 'match' => 'E104 200D',
2456 'replace' => 'E104',
2457 ),
2458 491 =>
2459 array (
2460 'match' => 'E105 200D',
2461 'replace' => 'E105',
2462 ),
2463 492 =>
2464 array (
2465 'match' => 'E106 200D',
2466 'replace' => 'E106',
2467 ),
2468 493 =>
2469 array (
2470 'match' => 'E107 200D',
2471 'replace' => 'E107',
2472 ),
2473 494 =>
2474 array (
2475 'match' => 'E108 200D',
2476 'replace' => 'E108',
2477 ),
2478 495 =>
2479 array (
2480 'match' => 'E109 200D',
2481 'replace' => 'E109',
2482 ),
2483 496 =>
2484 array (
2485 'match' => 'E10A 200D',
2486 'replace' => 'E10A',
2487 ),
2488 497 =>
2489 array (
2490 'match' => 'E10B 200D',
2491 'replace' => 'E10B',
2492 ),
2493 498 =>
2494 array (
2495 'match' => 'E10C 200D',
2496 'replace' => 'E10C',
2497 ),
2498 499 =>
2499 array (
2500 'match' => 'E10D 200D',
2501 'replace' => 'E10D',
2502 ),
2503 500 =>
2504 array (
2505 'match' => 'E10E 200D',
2506 'replace' => 'E10E',
2507 ),
2508 501 =>
2509 array (
2510 'match' => 'E10F 200D',
2511 'replace' => 'E10F',
2512 ),
2513 502 =>
2514 array (
2515 'match' => 'E110 200D',
2516 'replace' => 'E110',
2517 ),
2518 503 =>
2519 array (
2520 'match' => 'E111 200D',
2521 'replace' => 'E111',
2522 ),
2523 504 =>
2524 array (
2525 'match' => 'E112 200D',
2526 'replace' => 'E112',
2527 ),
2528 505 =>
2529 array (
2530 'match' => 'E113 200D',
2531 'replace' => 'E113',
2532 ),
2533 506 =>
2534 array (
2535 'match' => 'E114 200D',
2536 'replace' => 'E114',
2537 ),
2538 507 =>
2539 array (
2540 'match' => 'E115 200D',
2541 'replace' => 'E115',
2542 ),
2543 508 =>
2544 array (
2545 'match' => 'E116 200D',
2546 'replace' => 'E116',
2547 ),
2548 509 =>
2549 array (
2550 'match' => 'E117 200D',
2551 'replace' => 'E117',
2552 ),
2553 510 =>
2554 array (
2555 'match' => 'E118 200D',
2556 'replace' => 'E118',
2557 ),
2558 511 =>
2559 array (
2560 'match' => 'E119 200D',
2561 'replace' => 'E119',
2562 ),
2563 512 =>
2564 array (
2565 'match' => 'E11A 200D',
2566 'replace' => 'E11A',
2567 ),
2568 513 =>
2569 array (
2570 'match' => 'E13D 200D',
2571 'replace' => 'E13D',
2572 ),
2573 514 =>
2574 array (
2575 'match' => 'E13E 200D',
2576 'replace' => 'E13E',
2577 ),
2578 515 =>
2579 array (
2580 'match' => 'E13F 200D',
2581 'replace' => 'E13F',
2582 ),
2583 516 =>
2584 array (
2585 'match' => 'E140 200D',
2586 'replace' => 'E140',
2587 ),
2588 517 =>
2589 array (
2590 'match' => 'E141 200D',
2591 'replace' => 'E141',
2592 ),
2593 518 =>
2594 array (
2595 'match' => 'E142 200D',
2596 'replace' => 'E142',
2597 ),
2598 519 =>
2599 array (
2600 'match' => 'E143 200D',
2601 'replace' => 'E143',
2602 ),
2603 520 =>
2604 array (
2605 'match' => 'E144 200D',
2606 'replace' => 'E144',
2607 ),
2608 521 =>
2609 array (
2610 'match' => 'E145 200D',
2611 'replace' => 'E145',
2612 ),
2613 522 =>
2614 array (
2615 'match' => '200D E013',
2616 'replace' => 'E013',
2617 ),
2618 523 =>
2619 array (
2620 'match' => '200D',
2621 'replace' => '200B',
2622 ),
2623 524 =>
2624 array (
2625 'match' => '200C',
2626 'replace' => '200B',
2627 ),
2628 525 =>
2629 array (
2630 'match' => '(093F) E047',
2631 'replace' => '\\1 E047 093F',
2632 ),
2633 526 =>
2634 array (
2635 'match' => '(093F) E04D',
2636 'replace' => '\\1 E04D 093F',
2637 ),
2638 527 =>
2639 array (
2640 'match' => '(093F) E04E',
2641 'replace' => '\\1 E04E 093F',
2642 ),
2643 528 =>
2644 array (
2645 'match' => '(093F) E04F',
2646 'replace' => '\\1 E04F 093F',
2647 ),
2648 529 =>
2649 array (
2650 'match' => '(093F) E050',
2651 'replace' => '\\1 E050 093F',
2652 ),
2653 530 =>
2654 array (
2655 'match' => '(093F) E054',
2656 'replace' => '\\1 E054 093F',
2657 ),
2658 531 =>
2659 array (
2660 'match' => '(093F) E06B',
2661 'replace' => '\\1 E06B 093F',
2662 ),
2663 532 =>
2664 array (
2665 'match' => '(093F) E071',
2666 'replace' => '\\1 E071 093F',
2667 ),
2668 533 =>
2669 array (
2670 'match' => '(093F) E072',
2671 'replace' => '\\1 E072 093F',
2672 ),
2673 534 =>
2674 array (
2675 'match' => '(093F) E073',
2676 'replace' => '\\1 E073 093F',
2677 ),
2678 535 =>
2679 array (
2680 'match' => '(093F) E074',
2681 'replace' => '\\1 E074 093F',
2682 ),
2683 536 =>
2684 array (
2685 'match' => '(093F) E078',
2686 'replace' => '\\1 E078 093F',
2687 ),
2688 537 =>
2689 array (
2690 'match' => '(093F) E0FB',
2691 'replace' => '\\1 E0FB 093F',
2692 ),
2693 538 =>
2694 array (
2695 'match' => '(093F) E101',
2696 'replace' => '\\1 E101 093F',
2697 ),
2698 539 =>
2699 array (
2700 'match' => '(093F) E102',
2701 'replace' => '\\1 E102 093F',
2702 ),
2703 540 =>
2704 array (
2705 'match' => '(093F) E103',
2706 'replace' => '\\1 E103 093F',
2707 ),
2708 541 =>
2709 array (
2710 'match' => '(093F) E104',
2711 'replace' => '\\1 E104 093F',
2712 ),
2713 542 =>
2714 array (
2715 'match' => '(093F) E108',
2716 'replace' => '\\1 E108 093F',
2717 ),
2718 543 =>
2719 array (
2720 'match' => '093F E047 (093F)',
2721 'replace' => 'E047 \\1',
2722 ),
2723 544 =>
2724 array (
2725 'match' => '093F E04D (093F)',
2726 'replace' => 'E04D \\1',
2727 ),
2728 545 =>
2729 array (
2730 'match' => '093F E04E (093F)',
2731 'replace' => 'E04E \\1',
2732 ),
2733 546 =>
2734 array (
2735 'match' => '093F E04F (093F)',
2736 'replace' => 'E04F \\1',
2737 ),
2738 547 =>
2739 array (
2740 'match' => '093F E050 (093F)',
2741 'replace' => 'E050 \\1',
2742 ),
2743 548 =>
2744 array (
2745 'match' => '093F E054 (093F)',
2746 'replace' => 'E054 \\1',
2747 ),
2748 549 =>
2749 array (
2750 'match' => '093F E06B (093F)',
2751 'replace' => 'E06B \\1',
2752 ),
2753 550 =>
2754 array (
2755 'match' => '093F E071 (093F)',
2756 'replace' => 'E071 \\1',
2757 ),
2758 551 =>
2759 array (
2760 'match' => '093F E072 (093F)',
2761 'replace' => 'E072 \\1',
2762 ),
2763 552 =>
2764 array (
2765 'match' => '093F E073 (093F)',
2766 'replace' => 'E073 \\1',
2767 ),
2768 553 =>
2769 array (
2770 'match' => '093F E074 (093F)',
2771 'replace' => 'E074 \\1',
2772 ),
2773 554 =>
2774 array (
2775 'match' => '093F E078 (093F)',
2776 'replace' => 'E078 \\1',
2777 ),
2778 555 =>
2779 array (
2780 'match' => '093F E0FB (093F)',
2781 'replace' => 'E0FB \\1',
2782 ),
2783 556 =>
2784 array (
2785 'match' => '093F E101 (093F)',
2786 'replace' => 'E101 \\1',
2787 ),
2788 557 =>
2789 array (
2790 'match' => '093F E102 (093F)',
2791 'replace' => 'E102 \\1',
2792 ),
2793 558 =>
2794 array (
2795 'match' => '093F E103 (093F)',
2796 'replace' => 'E103 \\1',
2797 ),
2798 559 =>
2799 array (
2800 'match' => '093F E104 (093F)',
2801 'replace' => 'E104 \\1',
2802 ),
2803 560 =>
2804 array (
2805 'match' => '093F E108 (093F)',
2806 'replace' => 'E108 \\1',
2807 ),
2808 561 =>
2809 array (
2810 'match' => '(E015) 0915 E015',
2811 'replace' => '\\1 0915',
2812 ),
2813 562 =>
2814 array (
2815 'match' => '(E015) 0916 E015',
2816 'replace' => '\\1 0916',
2817 ),
2818 563 =>
2819 array (
2820 'match' => '(E015) 0917 E015',
2821 'replace' => '\\1 0917',
2822 ),
2823 564 =>
2824 array (
2825 'match' => '(E015) 0918 E015',
2826 'replace' => '\\1 0918',
2827 ),
2828 565 =>
2829 array (
2830 'match' => '(E015) 0919 E015',
2831 'replace' => '\\1 0919',
2832 ),
2833 566 =>
2834 array (
2835 'match' => '(E015) 091A E015',
2836 'replace' => '\\1 091A',
2837 ),
2838 567 =>
2839 array (
2840 'match' => '(E015) 091B E015',
2841 'replace' => '\\1 091B',
2842 ),
2843 568 =>
2844 array (
2845 'match' => '(E015) 091C E015',
2846 'replace' => '\\1 091C',
2847 ),
2848 569 =>
2849 array (
2850 'match' => '(E015) 091D E015',
2851 'replace' => '\\1 091D',
2852 ),
2853 570 =>
2854 array (
2855 'match' => '(E015) 091E E015',
2856 'replace' => '\\1 091E',
2857 ),
2858 571 =>
2859 array (
2860 'match' => '(E015) 091F E015',
2861 'replace' => '\\1 091F',
2862 ),
2863 572 =>
2864 array (
2865 'match' => '(E015) 0920 E015',
2866 'replace' => '\\1 0920',
2867 ),
2868 573 =>
2869 array (
2870 'match' => '(E015) 0921 E015',
2871 'replace' => '\\1 0921',
2872 ),
2873 574 =>
2874 array (
2875 'match' => '(E015) 0922 E015',
2876 'replace' => '\\1 0922',
2877 ),
2878 575 =>
2879 array (
2880 'match' => '(E015) 0923 E015',
2881 'replace' => '\\1 0923',
2882 ),
2883 576 =>
2884 array (
2885 'match' => '(E015) 0924 E015',
2886 'replace' => '\\1 0924',
2887 ),
2888 577 =>
2889 array (
2890 'match' => '(E015) 0925 E015',
2891 'replace' => '\\1 0925',
2892 ),
2893 578 =>
2894 array (
2895 'match' => '(E015) 0926 E015',
2896 'replace' => '\\1 0926',
2897 ),
2898 579 =>
2899 array (
2900 'match' => '(E015) 0927 E015',
2901 'replace' => '\\1 0927',
2902 ),
2903 580 =>
2904 array (
2905 'match' => '(E015) 0928 E015',
2906 'replace' => '\\1 0928',
2907 ),
2908 581 =>
2909 array (
2910 'match' => '(E015) 092A E015',
2911 'replace' => '\\1 092A',
2912 ),
2913 582 =>
2914 array (
2915 'match' => '(E015) 092B E015',
2916 'replace' => '\\1 092B',
2917 ),
2918 583 =>
2919 array (
2920 'match' => '(E015) 092C E015',
2921 'replace' => '\\1 092C',
2922 ),
2923 584 =>
2924 array (
2925 'match' => '(E015) 092D E015',
2926 'replace' => '\\1 092D',
2927 ),
2928 585 =>
2929 array (
2930 'match' => '(E015) 092E E015',
2931 'replace' => '\\1 092E',
2932 ),
2933 586 =>
2934 array (
2935 'match' => '(E015) 092F E015',
2936 'replace' => '\\1 092F',
2937 ),
2938 587 =>
2939 array (
2940 'match' => '(E015) 0930 E015',
2941 'replace' => '\\1 0930',
2942 ),
2943 588 =>
2944 array (
2945 'match' => '(E015) 0932 E015',
2946 'replace' => '\\1 0932',
2947 ),
2948 589 =>
2949 array (
2950 'match' => '(E015) 0933 E015',
2951 'replace' => '\\1 0933',
2952 ),
2953 590 =>
2954 array (
2955 'match' => '(E015) 0935 E015',
2956 'replace' => '\\1 0935',
2957 ),
2958 591 =>
2959 array (
2960 'match' => '(E015) 0936 E015',
2961 'replace' => '\\1 0936',
2962 ),
2963 592 =>
2964 array (
2965 'match' => '(E015) 0937 E015',
2966 'replace' => '\\1 0937',
2967 ),
2968 593 =>
2969 array (
2970 'match' => '(E015) 0938 E015',
2971 'replace' => '\\1 0938',
2972 ),
2973 594 =>
2974 array (
2975 'match' => '(E015) 0939 E015',
2976 'replace' => '\\1 0939',
2977 ),
2978 595 =>
2979 array (
2980 'match' => '(E015) E028 E015',
2981 'replace' => '\\1 E028',
2982 ),
2983 596 =>
2984 array (
2985 'match' => '(E015) E029 E015',
2986 'replace' => '\\1 E029',
2987 ),
2988 597 =>
2989 array (
2990 'match' => '(E015) E015 E015',
2991 'replace' => '\\1 E015',
2992 ),
2993 598 =>
2994 array (
2995 'match' => '(E015) 0947 E015',
2996 'replace' => '\\1 0947',
2997 ),
2998 599 =>
2999 array (
3000 'match' => '(E015) E1A8 E015',
3001 'replace' => '\\1 E1A8',
3002 ),
3003 600 =>
3004 array (
3005 'match' => '(E015) E1A7 E015',
3006 'replace' => '\\1 E1A7',
3007 ),
3008 601 =>
3009 array (
3010 'match' => '(E015) E199 E015',
3011 'replace' => '\\1 E199',
3012 ),
3013 602 =>
3014 array (
3015 'match' => '(E015) E1B2 E015',
3016 'replace' => '\\1 E1B2',
3017 ),
3018 603 =>
3019 array (
3020 'match' => '(E015) E1B1 E015',
3021 'replace' => '\\1 E1B1',
3022 ),
3023 604 =>
3024 array (
3025 'match' => '(E015) 0946 E015',
3026 'replace' => '\\1 0946',
3027 ),
3028 605 =>
3029 array (
3030 'match' => '(E015) E202 E015',
3031 'replace' => '\\1 E202',
3032 ),
3033 606 =>
3034 array (
3035 'match' => '(E015) E201 E015',
3036 'replace' => '\\1 E201',
3037 ),
3038 607 =>
3039 array (
3040 'match' => '(E015) E1A3 E015',
3041 'replace' => '\\1 E1A3',
3042 ),
3043 608 =>
3044 array (
3045 'match' => '(E015) E1C6 E015',
3046 'replace' => '\\1 E1C6',
3047 ),
3048 609 =>
3049 array (
3050 'match' => '(E015) E1C5 E015',
3051 'replace' => '\\1 E1C5',
3052 ),
3053 610 =>
3054 array (
3055 'match' => '(E015) 0945 E015',
3056 'replace' => '\\1 0945',
3057 ),
3058 611 =>
3059 array (
3060 'match' => '(E015) E200 E015',
3061 'replace' => '\\1 E200',
3062 ),
3063 612 =>
3064 array (
3065 'match' => '(E015) E1FF E015',
3066 'replace' => '\\1 E1FF',
3067 ),
3068 613 =>
3069 array (
3070 'match' => '(E015) 0948 E015',
3071 'replace' => '\\1 0948',
3072 ),
3073 614 =>
3074 array (
3075 'match' => '(E015) E1AA E015',
3076 'replace' => '\\1 E1AA',
3077 ),
3078 615 =>
3079 array (
3080 'match' => '(E015) E1A9 E015',
3081 'replace' => '\\1 E1A9',
3082 ),
3083 616 =>
3084 array (
3085 'match' => '(E015) E19A E015',
3086 'replace' => '\\1 E19A',
3087 ),
3088 617 =>
3089 array (
3090 'match' => '(E015) E1B4 E015',
3091 'replace' => '\\1 E1B4',
3092 ),
3093 618 =>
3094 array (
3095 'match' => '(E015) E1B3 E015',
3096 'replace' => '\\1 E1B3',
3097 ),
3098 619 =>
3099 array (
3100 'match' => '(E015) 0902 E015',
3101 'replace' => '\\1 0902',
3102 ),
3103 620 =>
3104 array (
3105 'match' => '(E015) E00F E015',
3106 'replace' => '\\1 E00F',
3107 ),
3108 621 =>
3109 array (
3110 'match' => '(E015) 0901 E015',
3111 'replace' => '\\1 0901',
3112 ),
3113 622 =>
3114 array (
3115 'match' => '(E015) 0953 E015',
3116 'replace' => '\\1 0953',
3117 ),
3118 623 =>
3119 array (
3120 'match' => '(E015) 0954 E015',
3121 'replace' => '\\1 0954',
3122 ),
3123 624 =>
3124 array (
3125 'match' => '(E015) 0951 E015',
3126 'replace' => '\\1 0951',
3127 ),
3128 625 =>
3129 array (
3130 'match' => '(E015) 0941 E015',
3131 'replace' => '\\1 0941',
3132 ),
3133 626 =>
3134 array (
3135 'match' => '(E015) 0942 E015',
3136 'replace' => '\\1 0942',
3137 ),
3138 627 =>
3139 array (
3140 'match' => '(E015) 0943 E015',
3141 'replace' => '\\1 0943',
3142 ),
3143 628 =>
3144 array (
3145 'match' => '(E015) 0944 E015',
3146 'replace' => '\\1 0944',
3147 ),
3148 629 =>
3149 array (
3150 'match' => '(E015) 0952 E015',
3151 'replace' => '\\1 0952',
3152 ),
3153 630 =>
3154 array (
3155 'match' => '(E015) E013 E015',
3156 'replace' => '\\1 E013',
3157 ),
3158 631 =>
3159 array (
3160 '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',
3161 'replace' => '\\1 0915',
3162 ),
3163 632 =>
3164 array (
3165 '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',
3166 'replace' => '\\1 0916',
3167 ),
3168 633 =>
3169 array (
3170 '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',
3171 'replace' => '\\1 0917',
3172 ),
3173 634 =>
3174 array (
3175 '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',
3176 'replace' => '\\1 0918',
3177 ),
3178 635 =>
3179 array (
3180 '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',
3181 'replace' => '\\1 0919',
3182 ),
3183 636 =>
3184 array (
3185 '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',
3186 'replace' => '\\1 091A',
3187 ),
3188 637 =>
3189 array (
3190 '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',
3191 'replace' => '\\1 091B',
3192 ),
3193 638 =>
3194 array (
3195 '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',
3196 'replace' => '\\1 091C',
3197 ),
3198 639 =>
3199 array (
3200 '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',
3201 'replace' => '\\1 091D',
3202 ),
3203 640 =>
3204 array (
3205 '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',
3206 'replace' => '\\1 091E',
3207 ),
3208 641 =>
3209 array (
3210 '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',
3211 'replace' => '\\1 091F',
3212 ),
3213 642 =>
3214 array (
3215 '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',
3216 'replace' => '\\1 0920',
3217 ),
3218 643 =>
3219 array (
3220 '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',
3221 'replace' => '\\1 0921',
3222 ),
3223 644 =>
3224 array (
3225 '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',
3226 'replace' => '\\1 0922',
3227 ),
3228 645 =>
3229 array (
3230 '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',
3231 'replace' => '\\1 0923',
3232 ),
3233 646 =>
3234 array (
3235 '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',
3236 'replace' => '\\1 0924',
3237 ),
3238 647 =>
3239 array (
3240 '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',
3241 'replace' => '\\1 0925',
3242 ),
3243 648 =>
3244 array (
3245 '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',
3246 'replace' => '\\1 0926',
3247 ),
3248 649 =>
3249 array (
3250 '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',
3251 'replace' => '\\1 0927',
3252 ),
3253 650 =>
3254 array (
3255 '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',
3256 'replace' => '\\1 0928',
3257 ),
3258 651 =>
3259 array (
3260 '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',
3261 'replace' => '\\1 092A',
3262 ),
3263 652 =>
3264 array (
3265 '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',
3266 'replace' => '\\1 092B',
3267 ),
3268 653 =>
3269 array (
3270 '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',
3271 'replace' => '\\1 092C',
3272 ),
3273 654 =>
3274 array (
3275 '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',
3276 'replace' => '\\1 092D',
3277 ),
3278 655 =>
3279 array (
3280 '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',
3281 'replace' => '\\1 092E',
3282 ),
3283 656 =>
3284 array (
3285 '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',
3286 'replace' => '\\1 092F',
3287 ),
3288 657 =>
3289 array (
3290 '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',
3291 'replace' => '\\1 0930',
3292 ),
3293 658 =>
3294 array (
3295 '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',
3296 'replace' => '\\1 0932',
3297 ),
3298 659 =>
3299 array (
3300 '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',
3301 'replace' => '\\1 0933',
3302 ),
3303 660 =>
3304 array (
3305 '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',
3306 'replace' => '\\1 0935',
3307 ),
3308 661 =>
3309 array (
3310 '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',
3311 'replace' => '\\1 0936',
3312 ),
3313 662 =>
3314 array (
3315 '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',
3316 'replace' => '\\1 0937',
3317 ),
3318 663 =>
3319 array (
3320 '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',
3321 'replace' => '\\1 0938',
3322 ),
3323 664 =>
3324 array (
3325 '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',
3326 'replace' => '\\1 0939',
3327 ),
3328 665 =>
3329 array (
3330 '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',
3331 'replace' => '\\1 E028',
3332 ),
3333 666 =>
3334 array (
3335 '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',
3336 'replace' => '\\1 E029',
3337 ),
3338 667 =>
3339 array (
3340 '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',
3341 'replace' => '\\1 E015',
3342 ),
3343 668 =>
3344 array (
3345 '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',
3346 'replace' => '\\1 0947',
3347 ),
3348 669 =>
3349 array (
3350 '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',
3351 'replace' => '\\1 E1A8',
3352 ),
3353 670 =>
3354 array (
3355 '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',
3356 'replace' => '\\1 E1A7',
3357 ),
3358 671 =>
3359 array (
3360 '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',
3361 'replace' => '\\1 E199',
3362 ),
3363 672 =>
3364 array (
3365 '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',
3366 'replace' => '\\1 E1B2',
3367 ),
3368 673 =>
3369 array (
3370 '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',
3371 'replace' => '\\1 E1B1',
3372 ),
3373 674 =>
3374 array (
3375 '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',
3376 'replace' => '\\1 0946',
3377 ),
3378 675 =>
3379 array (
3380 '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',
3381 'replace' => '\\1 E202',
3382 ),
3383 676 =>
3384 array (
3385 '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',
3386 'replace' => '\\1 E201',
3387 ),
3388 677 =>
3389 array (
3390 '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',
3391 'replace' => '\\1 E1A3',
3392 ),
3393 678 =>
3394 array (
3395 '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',
3396 'replace' => '\\1 E1C6',
3397 ),
3398 679 =>
3399 array (
3400 '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',
3401 'replace' => '\\1 E1C5',
3402 ),
3403 680 =>
3404 array (
3405 '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',
3406 'replace' => '\\1 0945',
3407 ),
3408 681 =>
3409 array (
3410 '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',
3411 'replace' => '\\1 E200',
3412 ),
3413 682 =>
3414 array (
3415 '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',
3416 'replace' => '\\1 E1FF',
3417 ),
3418 683 =>
3419 array (
3420 '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',
3421 'replace' => '\\1 0948',
3422 ),
3423 684 =>
3424 array (
3425 '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',
3426 'replace' => '\\1 E1AA',
3427 ),
3428 685 =>
3429 array (
3430 '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',
3431 'replace' => '\\1 E1A9',
3432 ),
3433 686 =>
3434 array (
3435 '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',
3436 'replace' => '\\1 E19A',
3437 ),
3438 687 =>
3439 array (
3440 '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',
3441 'replace' => '\\1 E1B4',
3442 ),
3443 688 =>
3444 array (
3445 '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',
3446 'replace' => '\\1 E1B3',
3447 ),
3448 689 =>
3449 array (
3450 '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',
3451 'replace' => '\\1 0902',
3452 ),
3453 690 =>
3454 array (
3455 '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',
3456 'replace' => '\\1 E00F',
3457 ),
3458 691 =>
3459 array (
3460 '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',
3461 'replace' => '\\1 0901',
3462 ),
3463 692 =>
3464 array (
3465 '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',
3466 'replace' => '\\1 0953',
3467 ),
3468 693 =>
3469 array (
3470 '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',
3471 'replace' => '\\1 0954',
3472 ),
3473 694 =>
3474 array (
3475 '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',
3476 'replace' => '\\1 0951',
3477 ),
3478 695 =>
3479 array (
3480 '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',
3481 'replace' => '\\1 0941',
3482 ),
3483 696 =>
3484 array (
3485 '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',
3486 'replace' => '\\1 0942',
3487 ),
3488 697 =>
3489 array (
3490 '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',
3491 'replace' => '\\1 0943',
3492 ),
3493 698 =>
3494 array (
3495 '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',
3496 'replace' => '\\1 0944',
3497 ),
3498 699 =>
3499 array (
3500 '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',
3501 'replace' => '\\1 0952',
3502 ),
3503 700 =>
3504 array (
3505 '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',
3506 'replace' => '\\1 E013',
3507 ),
3508 701 =>
3509 array (
3510 'match' => '(093F) E015',
3511 'replace' => '\\1 E015 093F',
3512 ),
3513 702 =>
3514 array (
3515 'match' => '093F E015',
3516 'replace' => 'E015',
3517 ),
3518 703 =>
3519 array (
3520 'match' => '0915 0962',
3521 'replace' => 'E153',
3522 ),
3523 704 =>
3524 array (
3525 'match' => '0915 0963',
3526 'replace' => 'E154',
3527 ),
3528 705 =>
3529 array (
3530 'match' => 'E08F 0941',
3531 'replace' => 'E155',
3532 ),
3533 706 =>
3534 array (
3535 'match' => 'E08F 0942',
3536 'replace' => 'E156',
3537 ),
3538 707 =>
3539 array (
3540 'match' => 'E08F 0943',
3541 'replace' => 'E157',
3542 ),
3543 708 =>
3544 array (
3545 'match' => 'E08F 0944',
3546 'replace' => 'E158',
3547 ),
3548 709 =>
3549 array (
3550 'match' => 'E091 0941',
3551 'replace' => 'E159',
3552 ),
3553 710 =>
3554 array (
3555 'match' => 'E091 0942',
3556 'replace' => 'E15A',
3557 ),
3558 711 =>
3559 array (
3560 'match' => 'E091 0943',
3561 'replace' => 'E15B',
3562 ),
3563 712 =>
3564 array (
3565 'match' => 'E091 0944',
3566 'replace' => 'E15C',
3567 ),
3568 713 =>
3569 array (
3570 'match' => 'E095 0941',
3571 'replace' => 'E15D',
3572 ),
3573 714 =>
3574 array (
3575 'match' => 'E095 0942',
3576 'replace' => 'E15E',
3577 ),
3578 715 =>
3579 array (
3580 'match' => 'E095 0943',
3581 'replace' => 'E15F',
3582 ),
3583 716 =>
3584 array (
3585 'match' => 'E095 0944',
3586 'replace' => 'E160',
3587 ),
3588 717 =>
3589 array (
3590 'match' => 'E096 0941',
3591 'replace' => 'E161',
3592 ),
3593 718 =>
3594 array (
3595 'match' => 'E096 0942',
3596 'replace' => 'E162',
3597 ),
3598 719 =>
3599 array (
3600 'match' => 'E096 0943',
3601 'replace' => 'E163',
3602 ),
3603 720 =>
3604 array (
3605 'match' => 'E096 0944',
3606 'replace' => 'E164',
3607 ),
3608 721 =>
3609 array (
3610 'match' => 'E097 0941',
3611 'replace' => 'E165',
3612 ),
3613 722 =>
3614 array (
3615 'match' => 'E097 0942',
3616 'replace' => 'E166',
3617 ),
3618 723 =>
3619 array (
3620 'match' => 'E097 0943',
3621 'replace' => 'E167',
3622 ),
3623 724 =>
3624 array (
3625 'match' => 'E097 0944',
3626 'replace' => 'E168',
3627 ),
3628 725 =>
3629 array (
3630 'match' => 'E098 0941',
3631 'replace' => 'E169',
3632 ),
3633 726 =>
3634 array (
3635 'match' => 'E098 0942',
3636 'replace' => 'E16A',
3637 ),
3638 727 =>
3639 array (
3640 'match' => 'E098 0943',
3641 'replace' => 'E16B',
3642 ),
3643 728 =>
3644 array (
3645 'match' => 'E098 0944',
3646 'replace' => 'E16C',
3647 ),
3648 729 =>
3649 array (
3650 'match' => '0926 0943',
3651 'replace' => 'E16D',
3652 ),
3653 730 =>
3654 array (
3655 'match' => '092A 0962',
3656 'replace' => 'E16E',
3657 ),
3658 731 =>
3659 array (
3660 'match' => '092A 0963',
3661 'replace' => 'E16F',
3662 ),
3663 732 =>
3664 array (
3665 'match' => '0939 0943',
3666 'replace' => 'E172',
3667 ),
3668 733 =>
3669 array (
3670 'match' => '0939 0944',
3671 'replace' => 'E173',
3672 ),
3673 734 =>
3674 array (
3675 'match' => 'E0B3 0941',
3676 'replace' => 'E174',
3677 ),
3678 735 =>
3679 array (
3680 'match' => 'E0B3 0942',
3681 'replace' => 'E175',
3682 ),
3683 736 =>
3684 array (
3685 'match' => 'E0B3 0943',
3686 'replace' => 'E176',
3687 ),
3688 737 =>
3689 array (
3690 'match' => 'E0B3 0944',
3691 'replace' => 'E177',
3692 ),
3693 738 =>
3694 array (
3695 'match' => 'E0B5 0941',
3696 'replace' => 'E178',
3697 ),
3698 739 =>
3699 array (
3700 'match' => 'E0B5 0942',
3701 'replace' => 'E179',
3702 ),
3703 740 =>
3704 array (
3705 'match' => 'E0B5 0943',
3706 'replace' => 'E17A',
3707 ),
3708 741 =>
3709 array (
3710 'match' => 'E0B5 0944',
3711 'replace' => 'E17B',
3712 ),
3713 742 =>
3714 array (
3715 'match' => 'E0B9 0941',
3716 'replace' => 'E17C',
3717 ),
3718 743 =>
3719 array (
3720 'match' => 'E0B9 0942',
3721 'replace' => 'E17D',
3722 ),
3723 744 =>
3724 array (
3725 'match' => 'E0B9 0943',
3726 'replace' => 'E17E',
3727 ),
3728 745 =>
3729 array (
3730 'match' => 'E0B9 0944',
3731 'replace' => 'E17F',
3732 ),
3733 746 =>
3734 array (
3735 'match' => 'E0BA 0941',
3736 'replace' => 'E180',
3737 ),
3738 747 =>
3739 array (
3740 'match' => 'E0BA 0942',
3741 'replace' => 'E181',
3742 ),
3743 748 =>
3744 array (
3745 'match' => 'E0BA 0943',
3746 'replace' => 'E182',
3747 ),
3748 749 =>
3749 array (
3750 'match' => 'E0BA 0944',
3751 'replace' => 'E183',
3752 ),
3753 750 =>
3754 array (
3755 'match' => 'E0BB 0941',
3756 'replace' => 'E184',
3757 ),
3758 751 =>
3759 array (
3760 'match' => 'E0BB 0942',
3761 'replace' => 'E185',
3762 ),
3763 752 =>
3764 array (
3765 'match' => 'E0BB 0943',
3766 'replace' => 'E186',
3767 ),
3768 753 =>
3769 array (
3770 'match' => 'E0BB 0944',
3771 'replace' => 'E187',
3772 ),
3773 754 =>
3774 array (
3775 'match' => 'E0BC 0941',
3776 'replace' => 'E188',
3777 ),
3778 755 =>
3779 array (
3780 'match' => 'E0BC 0942',
3781 'replace' => 'E189',
3782 ),
3783 756 =>
3784 array (
3785 'match' => 'E0BC 0943',
3786 'replace' => 'E18A',
3787 ),
3788 757 =>
3789 array (
3790 'match' => 'E0BC 0944',
3791 'replace' => 'E18B',
3792 ),
3793 758 =>
3794 array (
3795 'match' => 'E131 0941',
3796 'replace' => 'E18C',
3797 ),
3798 759 =>
3799 array (
3800 'match' => 'E131 0942',
3801 'replace' => 'E18D',
3802 ),
3803 760 =>
3804 array (
3805 'match' => 'E131 0943',
3806 'replace' => 'E18E',
3807 ),
3808 761 =>
3809 array (
3810 'match' => 'E131 0944',
3811 'replace' => 'E18F',
3812 ),
3813 762 =>
3814 array (
3815 'match' => 'E132 0941',
3816 'replace' => 'E190',
3817 ),
3818 763 =>
3819 array (
3820 'match' => 'E132 0942',
3821 'replace' => 'E191',
3822 ),
3823 764 =>
3824 array (
3825 'match' => 'E132 0943',
3826 'replace' => 'E192',
3827 ),
3828 765 =>
3829 array (
3830 'match' => 'E132 0944',
3831 'replace' => 'E193',
3832 ),
3833 766 =>
3834 array (
3835 'match' => '((0930|0931|E0A5|E0C9)) 0941',
3836 'replace' => '\\1 E170',
3837 ),
3838 767 =>
3839 array (
3840 'match' => '((0930|0931|E0A5|E0C9)) 0942',
3841 'replace' => '\\1 E171',
3842 ),
3843 768 =>
3844 array (
3845 'match' => '0947 E015',
3846 'replace' => 'E199',
3847 ),
3848 769 =>
3849 array (
3850 'match' => '0948 E015',
3851 'replace' => 'E19A',
3852 ),
3853 770 =>
3854 array (
3855 'match' => '0940 E015',
3856 'replace' => 'E19B',
3857 ),
3858 771 =>
3859 array (
3860 'match' => 'E194 E015',
3861 'replace' => 'E19C',
3862 ),
3863 772 =>
3864 array (
3865 'match' => 'E195 E015',
3866 'replace' => 'E19D',
3867 ),
3868 773 =>
3869 array (
3870 'match' => 'E196 E015',
3871 'replace' => 'E19E',
3872 ),
3873 774 =>
3874 array (
3875 'match' => 'E197 E015',
3876 'replace' => 'E19F',
3877 ),
3878 775 =>
3879 array (
3880 'match' => 'E198 E015',
3881 'replace' => 'E1A0',
3882 ),
3883 776 =>
3884 array (
3885 'match' => '094B E015',
3886 'replace' => 'E1A1',
3887 ),
3888 777 =>
3889 array (
3890 'match' => '094C E015',
3891 'replace' => 'E1A2',
3892 ),
3893 778 =>
3894 array (
3895 'match' => '0946 E015',
3896 'replace' => 'E1A3',
3897 ),
3898 779 =>
3899 array (
3900 'match' => '094A E015',
3901 'replace' => 'E1A4',
3902 ),
3903 780 =>
3904 array (
3905 'match' => '0908 0901',
3906 'replace' => 'E1A5',
3907 ),
3908 781 =>
3909 array (
3910 'match' => '0908 0902',
3911 'replace' => 'E1A6',
3912 ),
3913 782 =>
3914 array (
3915 'match' => 'E12F 0901',
3916 'replace' => 'E1C9',
3917 ),
3918 783 =>
3919 array (
3920 'match' => 'E130 0901',
3921 'replace' => 'E1CA',
3922 ),
3923 784 =>
3924 array (
3925 'match' => '0945 0901',
3926 'replace' => 'E200',
3927 ),
3928 785 =>
3929 array (
3930 'match' => '0946 0901',
3931 'replace' => 'E202',
3932 ),
3933 786 =>
3934 array (
3935 'match' => '0947 0901',
3936 'replace' => 'E1A7',
3937 ),
3938 787 =>
3939 array (
3940 'match' => '0948 0901',
3941 'replace' => 'E1A9',
3942 ),
3943 788 =>
3944 array (
3945 'match' => '094B 0901',
3946 'replace' => 'E1AB',
3947 ),
3948 789 =>
3949 array (
3950 'match' => '094C 0901',
3951 'replace' => 'E1AD',
3952 ),
3953 790 =>
3954 array (
3955 'match' => '0945 0902',
3956 'replace' => 'E1FF',
3957 ),
3958 791 =>
3959 array (
3960 'match' => '0946 0902',
3961 'replace' => 'E201',
3962 ),
3963 792 =>
3964 array (
3965 'match' => '0947 0902',
3966 'replace' => 'E1A8',
3967 ),
3968 793 =>
3969 array (
3970 'match' => '0948 0902',
3971 'replace' => 'E1AA',
3972 ),
3973 794 =>
3974 array (
3975 'match' => '094B 0902',
3976 'replace' => 'E1AC',
3977 ),
3978 795 =>
3979 array (
3980 'match' => '094C 0902',
3981 'replace' => 'E1AE',
3982 ),
3983 796 =>
3984 array (
3985 'match' => 'E015 0902 0901',
3986 'replace' => 'E1B0 E1AF',
3987 ),
3988 797 =>
3989 array (
3990 'match' => 'E199 0902 0901',
3991 'replace' => 'E1B2 E1B1',
3992 ),
3993 798 =>
3994 array (
3995 'match' => 'E19A 0902 0901',
3996 'replace' => 'E1B4 E1B3',
3997 ),
3998 799 =>
3999 array (
4000 'match' => 'E1A1 0902 0901',
4001 'replace' => 'E1C2 E1C1',
4002 ),
4003 800 =>
4004 array (
4005 'match' => 'E1A3 0902 0901',
4006 'replace' => 'E1C6 E1C5',
4007 ),
4008 801 =>
4009 array (
4010 'match' => 'E1A4 0902 0901',
4011 'replace' => 'E1C8 E1C7',
4012 ),
4013 802 =>
4014 array (
4015 'match' => 'E1A2 0902 0901',
4016 'replace' => 'E1C4 E1C3',
4017 ),
4018 803 =>
4019 array (
4020 'match' => 'E19B 0901',
4021 'replace' => 'E1B5',
4022 ),
4023 804 =>
4024 array (
4025 'match' => 'E19C 0901',
4026 'replace' => 'E1B6',
4027 ),
4028 805 =>
4029 array (
4030 'match' => 'E19D 0901',
4031 'replace' => 'E1B7',
4032 ),
4033 806 =>
4034 array (
4035 'match' => 'E19E 0901',
4036 'replace' => 'E1B8',
4037 ),
4038 807 =>
4039 array (
4040 'match' => 'E19F 0901',
4041 'replace' => 'E1B9',
4042 ),
4043 808 =>
4044 array (
4045 'match' => 'E1A0 0901',
4046 'replace' => 'E1BA',
4047 ),
4048 809 =>
4049 array (
4050 'match' => 'E19B 0902',
4051 'replace' => 'E1BB',
4052 ),
4053 810 =>
4054 array (
4055 'match' => 'E19C 0902',
4056 'replace' => 'E1BC',
4057 ),
4058 811 =>
4059 array (
4060 'match' => 'E19D 0902',
4061 'replace' => 'E1BD',
4062 ),
4063 812 =>
4064 array (
4065 'match' => 'E19E 0902',
4066 'replace' => 'E1BE',
4067 ),
4068 813 =>
4069 array (
4070 'match' => 'E19F 0902',
4071 'replace' => 'E1BF',
4072 ),
4073 814 =>
4074 array (
4075 'match' => 'E1A0 0902',
4076 'replace' => 'E1C0',
4077 ),
4078 815 =>
4079 array (
4080 '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',
4081 'replace' => '\\1 E00F',
4082 ),
4083 816 =>
4084 array (
4085 'match' => '093F ((0930|0931))',
4086 'replace' => 'E14B \\1',
4087 ),
4088 817 =>
4089 array (
4090 '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))',
4091 'replace' => 'E14C \\1',
4092 ),
4093 818 =>
4094 array (
4095 '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))',
4096 'replace' => 'E14D \\1',
4097 ),
4098 819 =>
4099 array (
4100 '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))',
4101 'replace' => 'E14E \\1',
4102 ),
4103 820 =>
4104 array (
4105 'match' => '((0940|094A|094B|094C|0946|0947|0948)) E015',
4106 'replace' => '\\1 E014',
4107 ),
4108 821 =>
4109 array (
4110 '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',
4111 'replace' => '\\1 E194',
4112 ),
4113 822 =>
4114 array (
4115 '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',
4116 'replace' => '\\1 E19C',
4117 ),
4118 823 =>
4119 array (
4120 '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',
4121 'replace' => '\\1 E1B6',
4122 ),
4123 824 =>
4124 array (
4125 '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',
4126 'replace' => '\\1 E1BC',
4127 ),
4128 825 =>
4129 array (
4130 'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) 0940',
4131 'replace' => '\\1 E195',
4132 ),
4133 826 =>
4134 array (
4135 'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) E19B',
4136 'replace' => '\\1 E19D',
4137 ),
4138 827 =>
4139 array (
4140 'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) E1B5',
4141 'replace' => '\\1 E1B7',
4142 ),
4143 828 =>
4144 array (
4145 'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) E1BB',
4146 'replace' => '\\1 E1BD',
4147 ),
4148 829 =>
4149 array (
4150 'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) 0940',
4151 'replace' => '\\1 E198',
4152 ),
4153 830 =>
4154 array (
4155 'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) E19B',
4156 'replace' => '\\1 E1A0',
4157 ),
4158 831 =>
4159 array (
4160 'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) E1B5',
4161 'replace' => '\\1 E1BA',
4162 ),
4163 832 =>
4164 array (
4165 'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) E1BB',
4166 'replace' => '\\1 E1C0',
4167 ),
4168);
4169?> \ 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
index b059f8f0..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/ind_kn_1_001.volt.php
+++ /dev/null
@@ -1,2994 +0,0 @@
1<?php
2 $volt = array (
3 0 =>
4 array (
5 'match' => '0CCD 200C',
6 'replace' => 'E0AD',
7 ),
8 1 =>
9 array (
10 'match' => '200D 0CCD',
11 'replace' => 'E0AC',
12 ),
13 2 =>
14 array (
15 'match' => '0CC6 0CC2',
16 'replace' => '0CCA',
17 ),
18 3 =>
19 array (
20 'match' => '0C95 0CCD 0CB7',
21 'replace' => 'E07D',
22 ),
23 4 =>
24 array (
25 'match' => '0C9C 0CCD 0C9E',
26 'replace' => 'E07E',
27 ),
28 5 =>
29 array (
30 'match' => '0CB0 0CCD',
31 'replace' => 'E00B',
32 ),
33 6 =>
34 array (
35 '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',
36 'replace' => '\\1 E0AC',
37 ),
38 7 =>
39 array (
40 'match' => '((0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) 0CCD',
41 'replace' => '\\1 E0AC',
42 ),
43 8 =>
44 array (
45 'match' => '(0CBC) 0CCD',
46 'replace' => '\\1 E0AC',
47 ),
48 9 =>
49 array (
50 'match' => '(0020) 0CCD',
51 'replace' => '\\1 E0AC',
52 ),
53 10 =>
54 array (
55 'match' => '(25CC) 0CCD',
56 'replace' => '\\1 E0AC',
57 ),
58 11 =>
59 array (
60 'match' => '0C95 0CBC',
61 'replace' => 'E0E6',
62 ),
63 12 =>
64 array (
65 'match' => '0C96 0CBC',
66 'replace' => 'E0E7',
67 ),
68 13 =>
69 array (
70 'match' => '0C97 0CBC',
71 'replace' => 'E172',
72 ),
73 14 =>
74 array (
75 'match' => '0C98 0CBC',
76 'replace' => 'E173',
77 ),
78 15 =>
79 array (
80 'match' => '0C99 0CBC',
81 'replace' => 'E174',
82 ),
83 16 =>
84 array (
85 'match' => '0C9A 0CBC',
86 'replace' => 'E175',
87 ),
88 17 =>
89 array (
90 'match' => '0C9B 0CBC',
91 'replace' => 'E176',
92 ),
93 18 =>
94 array (
95 'match' => '0C9C 0CBC',
96 'replace' => 'E0E8',
97 ),
98 19 =>
99 array (
100 'match' => '0C9D 0CBC',
101 'replace' => 'E0E9',
102 ),
103 20 =>
104 array (
105 'match' => '0C9E 0CBC',
106 'replace' => 'E177',
107 ),
108 21 =>
109 array (
110 'match' => '0C9F 0CBC',
111 'replace' => 'E178',
112 ),
113 22 =>
114 array (
115 'match' => '0CA0 0CBC',
116 'replace' => 'E179',
117 ),
118 23 =>
119 array (
120 'match' => '0CA1 0CBC',
121 'replace' => 'E17A',
122 ),
123 24 =>
124 array (
125 'match' => '0CA2 0CBC',
126 'replace' => 'E17B',
127 ),
128 25 =>
129 array (
130 'match' => '0CA3 0CBC',
131 'replace' => 'E17C',
132 ),
133 26 =>
134 array (
135 'match' => '0CA4 0CBC',
136 'replace' => 'E17D',
137 ),
138 27 =>
139 array (
140 'match' => '0CA5 0CBC',
141 'replace' => 'E17E',
142 ),
143 28 =>
144 array (
145 'match' => '0CA6 0CBC',
146 'replace' => 'E17F',
147 ),
148 29 =>
149 array (
150 'match' => '0CA7 0CBC',
151 'replace' => 'E180',
152 ),
153 30 =>
154 array (
155 'match' => '0CA8 0CBC',
156 'replace' => 'E181',
157 ),
158 31 =>
159 array (
160 'match' => '0CAA 0CBC',
161 'replace' => 'E182',
162 ),
163 32 =>
164 array (
165 'match' => '0CAB 0CBC',
166 'replace' => 'E0EA',
167 ),
168 33 =>
169 array (
170 'match' => '0CAC 0CBC',
171 'replace' => 'E183',
172 ),
173 34 =>
174 array (
175 'match' => '0CAD 0CBC',
176 'replace' => 'E184',
177 ),
178 35 =>
179 array (
180 'match' => '0CAE 0CBC',
181 'replace' => 'E185',
182 ),
183 36 =>
184 array (
185 'match' => '0CAF 0CBC',
186 'replace' => 'E186',
187 ),
188 37 =>
189 array (
190 'match' => '0CB0 0CBC',
191 'replace' => 'E0EB',
192 ),
193 38 =>
194 array (
195 'match' => '0CB1 0CBC',
196 'replace' => 'E187',
197 ),
198 39 =>
199 array (
200 'match' => '0CB2 0CBC',
201 'replace' => 'E188',
202 ),
203 40 =>
204 array (
205 'match' => '0CB3 0CBC',
206 'replace' => 'E189',
207 ),
208 41 =>
209 array (
210 'match' => '0CB5 0CBC',
211 'replace' => 'E18A',
212 ),
213 42 =>
214 array (
215 'match' => '0CB6 0CBC',
216 'replace' => 'E18B',
217 ),
218 43 =>
219 array (
220 'match' => '0CB7 0CBC',
221 'replace' => 'E18C',
222 ),
223 44 =>
224 array (
225 'match' => '0CB8 0CBC',
226 'replace' => 'E18D',
227 ),
228 45 =>
229 array (
230 'match' => '0CB9 0CBC',
231 'replace' => 'E18E',
232 ),
233 46 =>
234 array (
235 'match' => 'E07D 0CBC',
236 'replace' => 'E117',
237 ),
238 47 =>
239 array (
240 'match' => 'E07E 0CBC',
241 'replace' => 'E118',
242 ),
243 48 =>
244 array (
245 'match' => 'E0A3 0CBC',
246 'replace' => 'E136',
247 ),
248 49 =>
249 array (
250 'match' => 'E0AC 0C95',
251 'replace' => 'E02E',
252 ),
253 50 =>
254 array (
255 'match' => 'E0AC 0C96',
256 'replace' => 'E02F',
257 ),
258 51 =>
259 array (
260 'match' => 'E0AC 0C97',
261 'replace' => 'E030',
262 ),
263 52 =>
264 array (
265 'match' => 'E0AC 0C98',
266 'replace' => 'E031',
267 ),
268 53 =>
269 array (
270 'match' => 'E0AC 0C99',
271 'replace' => 'E032',
272 ),
273 54 =>
274 array (
275 'match' => 'E0AC 0C9A',
276 'replace' => 'E033',
277 ),
278 55 =>
279 array (
280 'match' => 'E0AC 0C9B',
281 'replace' => 'E034',
282 ),
283 56 =>
284 array (
285 'match' => 'E0AC 0C9C',
286 'replace' => 'E035',
287 ),
288 57 =>
289 array (
290 'match' => 'E0AC 0C9D',
291 'replace' => 'E036',
292 ),
293 58 =>
294 array (
295 'match' => 'E0AC 0C9E',
296 'replace' => 'E037',
297 ),
298 59 =>
299 array (
300 'match' => 'E0AC 0C9F',
301 'replace' => 'E038',
302 ),
303 60 =>
304 array (
305 'match' => 'E0AC 0CA0',
306 'replace' => 'E039',
307 ),
308 61 =>
309 array (
310 'match' => 'E0AC 0CA1',
311 'replace' => 'E03A',
312 ),
313 62 =>
314 array (
315 'match' => 'E0AC 0CA2',
316 'replace' => 'E03B',
317 ),
318 63 =>
319 array (
320 'match' => 'E0AC 0CA3',
321 'replace' => 'E03C',
322 ),
323 64 =>
324 array (
325 'match' => 'E0AC 0CA4',
326 'replace' => 'E03D',
327 ),
328 65 =>
329 array (
330 'match' => 'E0AC 0CA5',
331 'replace' => 'E03E',
332 ),
333 66 =>
334 array (
335 'match' => 'E0AC 0CA6',
336 'replace' => 'E03F',
337 ),
338 67 =>
339 array (
340 'match' => 'E0AC 0CA7',
341 'replace' => 'E040',
342 ),
343 68 =>
344 array (
345 'match' => 'E0AC 0CA8',
346 'replace' => 'E041',
347 ),
348 69 =>
349 array (
350 'match' => 'E0AC 0CAA',
351 'replace' => 'E042',
352 ),
353 70 =>
354 array (
355 'match' => 'E0AC 0CAB',
356 'replace' => 'E043',
357 ),
358 71 =>
359 array (
360 'match' => 'E0AC 0CAC',
361 'replace' => 'E044',
362 ),
363 72 =>
364 array (
365 'match' => 'E0AC 0CAD',
366 'replace' => 'E045',
367 ),
368 73 =>
369 array (
370 'match' => 'E0AC 0CAE',
371 'replace' => 'E046',
372 ),
373 74 =>
374 array (
375 'match' => 'E0AC 0CAF',
376 'replace' => 'E047',
377 ),
378 75 =>
379 array (
380 'match' => 'E0AC 0CB0',
381 'replace' => 'E048',
382 ),
383 76 =>
384 array (
385 'match' => 'E0AC 0CB1',
386 'replace' => 'E049',
387 ),
388 77 =>
389 array (
390 'match' => 'E0AC 0CB2',
391 'replace' => 'E04A',
392 ),
393 78 =>
394 array (
395 'match' => 'E0AC 0CB3',
396 'replace' => 'E04B',
397 ),
398 79 =>
399 array (
400 'match' => 'E0AC 0CB5',
401 'replace' => 'E04C',
402 ),
403 80 =>
404 array (
405 'match' => 'E0AC 0CB6',
406 'replace' => 'E04D',
407 ),
408 81 =>
409 array (
410 'match' => 'E0AC 0CB7',
411 'replace' => 'E04E',
412 ),
413 82 =>
414 array (
415 'match' => 'E0AC 0CB8',
416 'replace' => 'E04F',
417 ),
418 83 =>
419 array (
420 'match' => 'E0AC 0CB9',
421 'replace' => 'E050',
422 ),
423 84 =>
424 array (
425 'match' => 'E0AC E07D',
426 'replace' => 'E081',
427 ),
428 85 =>
429 array (
430 'match' => 'E07D E03C',
431 'replace' => 'E0A3',
432 ),
433 86 =>
434 array (
435 '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',
436 'replace' => '\\1 E052',
437 ),
438 87 =>
439 array (
440 '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',
441 'replace' => '\\1 E053',
442 ),
443 88 =>
444 array (
445 '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',
446 'replace' => '\\1 E054',
447 ),
448 89 =>
449 array (
450 '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',
451 'replace' => '\\1 E055',
452 ),
453 90 =>
454 array (
455 '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',
456 'replace' => '\\1 E056',
457 ),
458 91 =>
459 array (
460 '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',
461 'replace' => '\\1 E057',
462 ),
463 92 =>
464 array (
465 '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',
466 'replace' => '\\1 E058',
467 ),
468 93 =>
469 array (
470 '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',
471 'replace' => '\\1 E059',
472 ),
473 94 =>
474 array (
475 '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',
476 'replace' => '\\1 E05A',
477 ),
478 95 =>
479 array (
480 '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',
481 'replace' => '\\1 E05B',
482 ),
483 96 =>
484 array (
485 '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',
486 'replace' => '\\1 E05C',
487 ),
488 97 =>
489 array (
490 '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',
491 'replace' => '\\1 E05D',
492 ),
493 98 =>
494 array (
495 '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',
496 'replace' => '\\1 E05E',
497 ),
498 99 =>
499 array (
500 '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',
501 'replace' => '\\1 E05F',
502 ),
503 100 =>
504 array (
505 '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',
506 'replace' => '\\1 E060',
507 ),
508 101 =>
509 array (
510 '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',
511 'replace' => '\\1 E061',
512 ),
513 102 =>
514 array (
515 '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',
516 'replace' => '\\1 E062',
517 ),
518 103 =>
519 array (
520 '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',
521 'replace' => '\\1 E063',
522 ),
523 104 =>
524 array (
525 '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',
526 'replace' => '\\1 E064',
527 ),
528 105 =>
529 array (
530 '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',
531 'replace' => '\\1 E065',
532 ),
533 106 =>
534 array (
535 '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',
536 'replace' => '\\1 E066',
537 ),
538 107 =>
539 array (
540 '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',
541 'replace' => '\\1 E067',
542 ),
543 108 =>
544 array (
545 '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',
546 'replace' => '\\1 E068',
547 ),
548 109 =>
549 array (
550 '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',
551 'replace' => '\\1 E069',
552 ),
553 110 =>
554 array (
555 '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',
556 'replace' => '\\1 E06A',
557 ),
558 111 =>
559 array (
560 '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',
561 'replace' => '\\1 E06B',
562 ),
563 112 =>
564 array (
565 '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',
566 'replace' => '\\1 E06C',
567 ),
568 113 =>
569 array (
570 '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',
571 'replace' => '\\1 E06D',
572 ),
573 114 =>
574 array (
575 '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',
576 'replace' => '\\1 E06E',
577 ),
578 115 =>
579 array (
580 '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',
581 'replace' => '\\1 E06F',
582 ),
583 116 =>
584 array (
585 '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',
586 'replace' => '\\1 E070',
587 ),
588 117 =>
589 array (
590 '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',
591 'replace' => '\\1 E071',
592 ),
593 118 =>
594 array (
595 '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',
596 'replace' => '\\1 E072',
597 ),
598 119 =>
599 array (
600 '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',
601 'replace' => '\\1 E073',
602 ),
603 120 =>
604 array (
605 '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',
606 'replace' => '\\1 E074',
607 ),
608 121 =>
609 array (
610 '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',
611 'replace' => '\\1 E081',
612 ),
613 122 =>
614 array (
615 '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',
616 'replace' => '\\1 E052',
617 ),
618 123 =>
619 array (
620 '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',
621 'replace' => '\\1 E053',
622 ),
623 124 =>
624 array (
625 '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',
626 'replace' => '\\1 E054',
627 ),
628 125 =>
629 array (
630 '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',
631 'replace' => '\\1 E055',
632 ),
633 126 =>
634 array (
635 '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',
636 'replace' => '\\1 E056',
637 ),
638 127 =>
639 array (
640 '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',
641 'replace' => '\\1 E057',
642 ),
643 128 =>
644 array (
645 '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',
646 'replace' => '\\1 E058',
647 ),
648 129 =>
649 array (
650 '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',
651 'replace' => '\\1 E059',
652 ),
653 130 =>
654 array (
655 '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',
656 'replace' => '\\1 E05A',
657 ),
658 131 =>
659 array (
660 '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',
661 'replace' => '\\1 E05B',
662 ),
663 132 =>
664 array (
665 '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',
666 'replace' => '\\1 E05C',
667 ),
668 133 =>
669 array (
670 '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',
671 'replace' => '\\1 E05D',
672 ),
673 134 =>
674 array (
675 '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',
676 'replace' => '\\1 E05E',
677 ),
678 135 =>
679 array (
680 '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',
681 'replace' => '\\1 E05F',
682 ),
683 136 =>
684 array (
685 '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',
686 'replace' => '\\1 E060',
687 ),
688 137 =>
689 array (
690 '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',
691 'replace' => '\\1 E061',
692 ),
693 138 =>
694 array (
695 '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',
696 'replace' => '\\1 E062',
697 ),
698 139 =>
699 array (
700 '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',
701 'replace' => '\\1 E063',
702 ),
703 140 =>
704 array (
705 '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',
706 'replace' => '\\1 E064',
707 ),
708 141 =>
709 array (
710 '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',
711 'replace' => '\\1 E065',
712 ),
713 142 =>
714 array (
715 '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',
716 'replace' => '\\1 E066',
717 ),
718 143 =>
719 array (
720 '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',
721 'replace' => '\\1 E067',
722 ),
723 144 =>
724 array (
725 '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',
726 'replace' => '\\1 E068',
727 ),
728 145 =>
729 array (
730 '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',
731 'replace' => '\\1 E069',
732 ),
733 146 =>
734 array (
735 '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',
736 'replace' => '\\1 E06A',
737 ),
738 147 =>
739 array (
740 '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',
741 'replace' => '\\1 E06B',
742 ),
743 148 =>
744 array (
745 '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',
746 'replace' => '\\1 E06C',
747 ),
748 149 =>
749 array (
750 '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',
751 'replace' => '\\1 E06D',
752 ),
753 150 =>
754 array (
755 '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',
756 'replace' => '\\1 E06E',
757 ),
758 151 =>
759 array (
760 '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',
761 'replace' => '\\1 E06F',
762 ),
763 152 =>
764 array (
765 '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',
766 'replace' => '\\1 E070',
767 ),
768 153 =>
769 array (
770 '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',
771 'replace' => '\\1 E071',
772 ),
773 154 =>
774 array (
775 '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',
776 'replace' => '\\1 E072',
777 ),
778 155 =>
779 array (
780 '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',
781 'replace' => '\\1 E073',
782 ),
783 156 =>
784 array (
785 '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',
786 'replace' => '\\1 E074',
787 ),
788 157 =>
789 array (
790 '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',
791 'replace' => '\\1 E081',
792 ),
793 158 =>
794 array (
795 'match' => '(E07D) E02E',
796 'replace' => '\\1 E052',
797 ),
798 159 =>
799 array (
800 'match' => '(E07D) E02F',
801 'replace' => '\\1 E053',
802 ),
803 160 =>
804 array (
805 'match' => '(E07D) E030',
806 'replace' => '\\1 E054',
807 ),
808 161 =>
809 array (
810 'match' => '(E07D) E031',
811 'replace' => '\\1 E055',
812 ),
813 162 =>
814 array (
815 'match' => '(E07D) E032',
816 'replace' => '\\1 E056',
817 ),
818 163 =>
819 array (
820 'match' => '(E07D) E033',
821 'replace' => '\\1 E057',
822 ),
823 164 =>
824 array (
825 'match' => '(E07D) E034',
826 'replace' => '\\1 E058',
827 ),
828 165 =>
829 array (
830 'match' => '(E07D) E035',
831 'replace' => '\\1 E059',
832 ),
833 166 =>
834 array (
835 'match' => '(E07D) E036',
836 'replace' => '\\1 E05A',
837 ),
838 167 =>
839 array (
840 'match' => '(E07D) E037',
841 'replace' => '\\1 E05B',
842 ),
843 168 =>
844 array (
845 'match' => '(E07D) E038',
846 'replace' => '\\1 E05C',
847 ),
848 169 =>
849 array (
850 'match' => '(E07D) E039',
851 'replace' => '\\1 E05D',
852 ),
853 170 =>
854 array (
855 'match' => '(E07D) E03A',
856 'replace' => '\\1 E05E',
857 ),
858 171 =>
859 array (
860 'match' => '(E07D) E03B',
861 'replace' => '\\1 E05F',
862 ),
863 172 =>
864 array (
865 'match' => '(E07D) E03C',
866 'replace' => '\\1 E060',
867 ),
868 173 =>
869 array (
870 'match' => '(E07D) E03D',
871 'replace' => '\\1 E061',
872 ),
873 174 =>
874 array (
875 'match' => '(E07D) E03E',
876 'replace' => '\\1 E062',
877 ),
878 175 =>
879 array (
880 'match' => '(E07D) E03F',
881 'replace' => '\\1 E063',
882 ),
883 176 =>
884 array (
885 'match' => '(E07D) E040',
886 'replace' => '\\1 E064',
887 ),
888 177 =>
889 array (
890 'match' => '(E07D) E041',
891 'replace' => '\\1 E065',
892 ),
893 178 =>
894 array (
895 'match' => '(E07D) E042',
896 'replace' => '\\1 E066',
897 ),
898 179 =>
899 array (
900 'match' => '(E07D) E043',
901 'replace' => '\\1 E067',
902 ),
903 180 =>
904 array (
905 'match' => '(E07D) E044',
906 'replace' => '\\1 E068',
907 ),
908 181 =>
909 array (
910 'match' => '(E07D) E045',
911 'replace' => '\\1 E069',
912 ),
913 182 =>
914 array (
915 'match' => '(E07D) E046',
916 'replace' => '\\1 E06A',
917 ),
918 183 =>
919 array (
920 'match' => '(E07D) E047',
921 'replace' => '\\1 E06B',
922 ),
923 184 =>
924 array (
925 'match' => '(E07D) E048',
926 'replace' => '\\1 E06C',
927 ),
928 185 =>
929 array (
930 'match' => '(E07D) E049',
931 'replace' => '\\1 E06D',
932 ),
933 186 =>
934 array (
935 'match' => '(E07D) E04A',
936 'replace' => '\\1 E06E',
937 ),
938 187 =>
939 array (
940 'match' => '(E07D) E04B',
941 'replace' => '\\1 E06F',
942 ),
943 188 =>
944 array (
945 'match' => '(E07D) E04C',
946 'replace' => '\\1 E070',
947 ),
948 189 =>
949 array (
950 'match' => '(E07D) E04D',
951 'replace' => '\\1 E071',
952 ),
953 190 =>
954 array (
955 'match' => '(E07D) E04E',
956 'replace' => '\\1 E072',
957 ),
958 191 =>
959 array (
960 'match' => '(E07D) E04F',
961 'replace' => '\\1 E073',
962 ),
963 192 =>
964 array (
965 'match' => '(E07D) E050',
966 'replace' => '\\1 E074',
967 ),
968 193 =>
969 array (
970 'match' => '(E07D) E081',
971 'replace' => '\\1 E081',
972 ),
973 194 =>
974 array (
975 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02E',
976 'replace' => '\\1 E052',
977 ),
978 195 =>
979 array (
980 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02F',
981 'replace' => '\\1 E053',
982 ),
983 196 =>
984 array (
985 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E030',
986 'replace' => '\\1 E054',
987 ),
988 197 =>
989 array (
990 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E031',
991 'replace' => '\\1 E055',
992 ),
993 198 =>
994 array (
995 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E032',
996 'replace' => '\\1 E056',
997 ),
998 199 =>
999 array (
1000 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E033',
1001 'replace' => '\\1 E057',
1002 ),
1003 200 =>
1004 array (
1005 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E034',
1006 'replace' => '\\1 E058',
1007 ),
1008 201 =>
1009 array (
1010 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E035',
1011 'replace' => '\\1 E059',
1012 ),
1013 202 =>
1014 array (
1015 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E036',
1016 'replace' => '\\1 E05A',
1017 ),
1018 203 =>
1019 array (
1020 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E037',
1021 'replace' => '\\1 E05B',
1022 ),
1023 204 =>
1024 array (
1025 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E038',
1026 'replace' => '\\1 E05C',
1027 ),
1028 205 =>
1029 array (
1030 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E039',
1031 'replace' => '\\1 E05D',
1032 ),
1033 206 =>
1034 array (
1035 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03A',
1036 'replace' => '\\1 E05E',
1037 ),
1038 207 =>
1039 array (
1040 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03B',
1041 'replace' => '\\1 E05F',
1042 ),
1043 208 =>
1044 array (
1045 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03C',
1046 'replace' => '\\1 E060',
1047 ),
1048 209 =>
1049 array (
1050 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03D',
1051 'replace' => '\\1 E061',
1052 ),
1053 210 =>
1054 array (
1055 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03E',
1056 'replace' => '\\1 E062',
1057 ),
1058 211 =>
1059 array (
1060 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03F',
1061 'replace' => '\\1 E063',
1062 ),
1063 212 =>
1064 array (
1065 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E040',
1066 'replace' => '\\1 E064',
1067 ),
1068 213 =>
1069 array (
1070 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E041',
1071 'replace' => '\\1 E065',
1072 ),
1073 214 =>
1074 array (
1075 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E042',
1076 'replace' => '\\1 E066',
1077 ),
1078 215 =>
1079 array (
1080 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E043',
1081 'replace' => '\\1 E067',
1082 ),
1083 216 =>
1084 array (
1085 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E044',
1086 'replace' => '\\1 E068',
1087 ),
1088 217 =>
1089 array (
1090 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E045',
1091 'replace' => '\\1 E069',
1092 ),
1093 218 =>
1094 array (
1095 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E046',
1096 'replace' => '\\1 E06A',
1097 ),
1098 219 =>
1099 array (
1100 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E047',
1101 'replace' => '\\1 E06B',
1102 ),
1103 220 =>
1104 array (
1105 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E048',
1106 'replace' => '\\1 E06C',
1107 ),
1108 221 =>
1109 array (
1110 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E049',
1111 'replace' => '\\1 E06D',
1112 ),
1113 222 =>
1114 array (
1115 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04A',
1116 'replace' => '\\1 E06E',
1117 ),
1118 223 =>
1119 array (
1120 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04B',
1121 'replace' => '\\1 E06F',
1122 ),
1123 224 =>
1124 array (
1125 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04C',
1126 'replace' => '\\1 E070',
1127 ),
1128 225 =>
1129 array (
1130 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04D',
1131 'replace' => '\\1 E071',
1132 ),
1133 226 =>
1134 array (
1135 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04E',
1136 'replace' => '\\1 E072',
1137 ),
1138 227 =>
1139 array (
1140 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04F',
1141 'replace' => '\\1 E073',
1142 ),
1143 228 =>
1144 array (
1145 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E050',
1146 'replace' => '\\1 E074',
1147 ),
1148 229 =>
1149 array (
1150 'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E081',
1151 'replace' => '\\1 E081',
1152 ),
1153 230 =>
1154 array (
1155 'match' => '(E07E) E02E',
1156 'replace' => '\\1 E052',
1157 ),
1158 231 =>
1159 array (
1160 'match' => '(E07E) E02F',
1161 'replace' => '\\1 E053',
1162 ),
1163 232 =>
1164 array (
1165 'match' => '(E07E) E030',
1166 'replace' => '\\1 E054',
1167 ),
1168 233 =>
1169 array (
1170 'match' => '(E07E) E031',
1171 'replace' => '\\1 E055',
1172 ),
1173 234 =>
1174 array (
1175 'match' => '(E07E) E032',
1176 'replace' => '\\1 E056',
1177 ),
1178 235 =>
1179 array (
1180 'match' => '(E07E) E033',
1181 'replace' => '\\1 E057',
1182 ),
1183 236 =>
1184 array (
1185 'match' => '(E07E) E034',
1186 'replace' => '\\1 E058',
1187 ),
1188 237 =>
1189 array (
1190 'match' => '(E07E) E035',
1191 'replace' => '\\1 E059',
1192 ),
1193 238 =>
1194 array (
1195 'match' => '(E07E) E036',
1196 'replace' => '\\1 E05A',
1197 ),
1198 239 =>
1199 array (
1200 'match' => '(E07E) E037',
1201 'replace' => '\\1 E05B',
1202 ),
1203 240 =>
1204 array (
1205 'match' => '(E07E) E038',
1206 'replace' => '\\1 E05C',
1207 ),
1208 241 =>
1209 array (
1210 'match' => '(E07E) E039',
1211 'replace' => '\\1 E05D',
1212 ),
1213 242 =>
1214 array (
1215 'match' => '(E07E) E03A',
1216 'replace' => '\\1 E05E',
1217 ),
1218 243 =>
1219 array (
1220 'match' => '(E07E) E03B',
1221 'replace' => '\\1 E05F',
1222 ),
1223 244 =>
1224 array (
1225 'match' => '(E07E) E03C',
1226 'replace' => '\\1 E060',
1227 ),
1228 245 =>
1229 array (
1230 'match' => '(E07E) E03D',
1231 'replace' => '\\1 E061',
1232 ),
1233 246 =>
1234 array (
1235 'match' => '(E07E) E03E',
1236 'replace' => '\\1 E062',
1237 ),
1238 247 =>
1239 array (
1240 'match' => '(E07E) E03F',
1241 'replace' => '\\1 E063',
1242 ),
1243 248 =>
1244 array (
1245 'match' => '(E07E) E040',
1246 'replace' => '\\1 E064',
1247 ),
1248 249 =>
1249 array (
1250 'match' => '(E07E) E041',
1251 'replace' => '\\1 E065',
1252 ),
1253 250 =>
1254 array (
1255 'match' => '(E07E) E042',
1256 'replace' => '\\1 E066',
1257 ),
1258 251 =>
1259 array (
1260 'match' => '(E07E) E043',
1261 'replace' => '\\1 E067',
1262 ),
1263 252 =>
1264 array (
1265 'match' => '(E07E) E044',
1266 'replace' => '\\1 E068',
1267 ),
1268 253 =>
1269 array (
1270 'match' => '(E07E) E045',
1271 'replace' => '\\1 E069',
1272 ),
1273 254 =>
1274 array (
1275 'match' => '(E07E) E046',
1276 'replace' => '\\1 E06A',
1277 ),
1278 255 =>
1279 array (
1280 'match' => '(E07E) E047',
1281 'replace' => '\\1 E06B',
1282 ),
1283 256 =>
1284 array (
1285 'match' => '(E07E) E048',
1286 'replace' => '\\1 E06C',
1287 ),
1288 257 =>
1289 array (
1290 'match' => '(E07E) E049',
1291 'replace' => '\\1 E06D',
1292 ),
1293 258 =>
1294 array (
1295 'match' => '(E07E) E04A',
1296 'replace' => '\\1 E06E',
1297 ),
1298 259 =>
1299 array (
1300 'match' => '(E07E) E04B',
1301 'replace' => '\\1 E06F',
1302 ),
1303 260 =>
1304 array (
1305 'match' => '(E07E) E04C',
1306 'replace' => '\\1 E070',
1307 ),
1308 261 =>
1309 array (
1310 'match' => '(E07E) E04D',
1311 'replace' => '\\1 E071',
1312 ),
1313 262 =>
1314 array (
1315 'match' => '(E07E) E04E',
1316 'replace' => '\\1 E072',
1317 ),
1318 263 =>
1319 array (
1320 'match' => '(E07E) E04F',
1321 'replace' => '\\1 E073',
1322 ),
1323 264 =>
1324 array (
1325 'match' => '(E07E) E050',
1326 'replace' => '\\1 E074',
1327 ),
1328 265 =>
1329 array (
1330 'match' => '(E07E) E081',
1331 'replace' => '\\1 E081',
1332 ),
1333 266 =>
1334 array (
1335 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02E',
1336 'replace' => '\\1 E052',
1337 ),
1338 267 =>
1339 array (
1340 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02F',
1341 'replace' => '\\1 E053',
1342 ),
1343 268 =>
1344 array (
1345 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E030',
1346 'replace' => '\\1 E054',
1347 ),
1348 269 =>
1349 array (
1350 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E031',
1351 'replace' => '\\1 E055',
1352 ),
1353 270 =>
1354 array (
1355 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E032',
1356 'replace' => '\\1 E056',
1357 ),
1358 271 =>
1359 array (
1360 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E033',
1361 'replace' => '\\1 E057',
1362 ),
1363 272 =>
1364 array (
1365 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E034',
1366 'replace' => '\\1 E058',
1367 ),
1368 273 =>
1369 array (
1370 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E035',
1371 'replace' => '\\1 E059',
1372 ),
1373 274 =>
1374 array (
1375 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E036',
1376 'replace' => '\\1 E05A',
1377 ),
1378 275 =>
1379 array (
1380 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E037',
1381 'replace' => '\\1 E05B',
1382 ),
1383 276 =>
1384 array (
1385 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E038',
1386 'replace' => '\\1 E05C',
1387 ),
1388 277 =>
1389 array (
1390 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E039',
1391 'replace' => '\\1 E05D',
1392 ),
1393 278 =>
1394 array (
1395 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03A',
1396 'replace' => '\\1 E05E',
1397 ),
1398 279 =>
1399 array (
1400 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03B',
1401 'replace' => '\\1 E05F',
1402 ),
1403 280 =>
1404 array (
1405 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03C',
1406 'replace' => '\\1 E060',
1407 ),
1408 281 =>
1409 array (
1410 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03D',
1411 'replace' => '\\1 E061',
1412 ),
1413 282 =>
1414 array (
1415 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03E',
1416 'replace' => '\\1 E062',
1417 ),
1418 283 =>
1419 array (
1420 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03F',
1421 'replace' => '\\1 E063',
1422 ),
1423 284 =>
1424 array (
1425 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E040',
1426 'replace' => '\\1 E064',
1427 ),
1428 285 =>
1429 array (
1430 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E041',
1431 'replace' => '\\1 E065',
1432 ),
1433 286 =>
1434 array (
1435 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E042',
1436 'replace' => '\\1 E066',
1437 ),
1438 287 =>
1439 array (
1440 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E043',
1441 'replace' => '\\1 E067',
1442 ),
1443 288 =>
1444 array (
1445 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E044',
1446 'replace' => '\\1 E068',
1447 ),
1448 289 =>
1449 array (
1450 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E045',
1451 'replace' => '\\1 E069',
1452 ),
1453 290 =>
1454 array (
1455 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E046',
1456 'replace' => '\\1 E06A',
1457 ),
1458 291 =>
1459 array (
1460 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E047',
1461 'replace' => '\\1 E06B',
1462 ),
1463 292 =>
1464 array (
1465 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E048',
1466 'replace' => '\\1 E06C',
1467 ),
1468 293 =>
1469 array (
1470 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E049',
1471 'replace' => '\\1 E06D',
1472 ),
1473 294 =>
1474 array (
1475 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04A',
1476 'replace' => '\\1 E06E',
1477 ),
1478 295 =>
1479 array (
1480 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04B',
1481 'replace' => '\\1 E06F',
1482 ),
1483 296 =>
1484 array (
1485 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04C',
1486 'replace' => '\\1 E070',
1487 ),
1488 297 =>
1489 array (
1490 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04D',
1491 'replace' => '\\1 E071',
1492 ),
1493 298 =>
1494 array (
1495 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04E',
1496 'replace' => '\\1 E072',
1497 ),
1498 299 =>
1499 array (
1500 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04F',
1501 'replace' => '\\1 E073',
1502 ),
1503 300 =>
1504 array (
1505 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E050',
1506 'replace' => '\\1 E074',
1507 ),
1508 301 =>
1509 array (
1510 'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E081',
1511 'replace' => '\\1 E081',
1512 ),
1513 302 =>
1514 array (
1515 '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',
1516 'replace' => '\\1 E076',
1517 ),
1518 303 =>
1519 array (
1520 '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',
1521 'replace' => '\\1 E077',
1522 ),
1523 304 =>
1524 array (
1525 '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',
1526 'replace' => '\\1 E078',
1527 ),
1528 305 =>
1529 array (
1530 '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',
1531 'replace' => '\\1 E079',
1532 ),
1533 306 =>
1534 array (
1535 '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',
1536 'replace' => '\\1 E07A',
1537 ),
1538 307 =>
1539 array (
1540 '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',
1541 'replace' => '\\1 E07B',
1542 ),
1543 308 =>
1544 array (
1545 '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',
1546 'replace' => '\\1 E07C',
1547 ),
1548 309 =>
1549 array (
1550 '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',
1551 'replace' => '\\1 E104',
1552 ),
1553 310 =>
1554 array (
1555 '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',
1556 'replace' => '\\1 E105',
1557 ),
1558 311 =>
1559 array (
1560 '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',
1561 'replace' => '\\1 E106',
1562 ),
1563 312 =>
1564 array (
1565 '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',
1566 'replace' => '\\1 E107',
1567 ),
1568 313 =>
1569 array (
1570 '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',
1571 'replace' => '\\1 E108',
1572 ),
1573 314 =>
1574 array (
1575 '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',
1576 'replace' => '\\1 E109',
1577 ),
1578 315 =>
1579 array (
1580 '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',
1581 'replace' => '\\1 E10A',
1582 ),
1583 316 =>
1584 array (
1585 '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',
1586 'replace' => '\\1 E10B',
1587 ),
1588 317 =>
1589 array (
1590 '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',
1591 'replace' => '\\1 E10C',
1592 ),
1593 318 =>
1594 array (
1595 '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',
1596 'replace' => '\\1 E10D',
1597 ),
1598 319 =>
1599 array (
1600 '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',
1601 'replace' => '\\1 E10E',
1602 ),
1603 320 =>
1604 array (
1605 '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',
1606 'replace' => '\\1 E10F',
1607 ),
1608 321 =>
1609 array (
1610 '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',
1611 'replace' => '\\1 E110',
1612 ),
1613 322 =>
1614 array (
1615 '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',
1616 'replace' => '\\1 E111',
1617 ),
1618 323 =>
1619 array (
1620 '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',
1621 'replace' => '\\1 E112',
1622 ),
1623 324 =>
1624 array (
1625 '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',
1626 'replace' => '\\1 E113',
1627 ),
1628 325 =>
1629 array (
1630 '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',
1631 'replace' => '\\1 E114',
1632 ),
1633 326 =>
1634 array (
1635 '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',
1636 'replace' => '\\1 E115',
1637 ),
1638 327 =>
1639 array (
1640 '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',
1641 'replace' => '\\1 E116',
1642 ),
1643 328 =>
1644 array (
1645 'match' => '((0CAA|0CAB|0CB5|E182|E0EA|E18A)) 0CC1',
1646 'replace' => '\\1 E007',
1647 ),
1648 329 =>
1649 array (
1650 'match' => '((0CAA|0CAB|0CB5|E182|E0EA|E18A)) 0CC2',
1651 'replace' => '\\1 E009',
1652 ),
1653 330 =>
1654 array (
1655 'match' => '((0CB3|E189)) 0CC1',
1656 'replace' => '\\1 E008',
1657 ),
1658 331 =>
1659 array (
1660 'match' => '((0CB3|E189)) 0CC2',
1661 'replace' => '\\1 E00A',
1662 ),
1663 332 =>
1664 array (
1665 'match' => '0C98 0CC1',
1666 'replace' => 'E0A5',
1667 ),
1668 333 =>
1669 array (
1670 'match' => '0C98 0CC6',
1671 'replace' => 'E0A6',
1672 ),
1673 334 =>
1674 array (
1675 'match' => '0C98 0CCA',
1676 'replace' => 'E0A7',
1677 ),
1678 335 =>
1679 array (
1680 'match' => '0C98 0CCB',
1681 'replace' => 'E0A8',
1682 ),
1683 336 =>
1684 array (
1685 'match' => '0C99 0CC6',
1686 'replace' => 'E0A9',
1687 ),
1688 337 =>
1689 array (
1690 'match' => '0C99 0CCA',
1691 'replace' => 'E0AA',
1692 ),
1693 338 =>
1694 array (
1695 'match' => '0C99 0CCB',
1696 'replace' => 'E0AB',
1697 ),
1698 339 =>
1699 array (
1700 'match' => '0C9E 0CC1',
1701 'replace' => 'E0D8',
1702 ),
1703 340 =>
1704 array (
1705 'match' => '0C9E 0CC2',
1706 'replace' => 'E0D9',
1707 ),
1708 341 =>
1709 array (
1710 'match' => '0C9E 0CC6',
1711 'replace' => 'E0DA',
1712 ),
1713 342 =>
1714 array (
1715 'match' => '0C9E 0CCA',
1716 'replace' => 'E0DB',
1717 ),
1718 343 =>
1719 array (
1720 'match' => '0CB1 0CC6',
1721 'replace' => 'E0AC',
1722 ),
1723 344 =>
1724 array (
1725 'match' => '0CB1 0CCA',
1726 'replace' => 'E0AD',
1727 ),
1728 345 =>
1729 array (
1730 'match' => '0CB1 0CCB',
1731 'replace' => 'E0AE',
1732 ),
1733 346 =>
1734 array (
1735 'match' => '0CAA 0CCA',
1736 'replace' => 'E0AF',
1737 ),
1738 347 =>
1739 array (
1740 'match' => '0CAB 0CCA',
1741 'replace' => 'E0B0',
1742 ),
1743 348 =>
1744 array (
1745 'match' => '0CB5 0CCA',
1746 'replace' => 'E0B1',
1747 ),
1748 349 =>
1749 array (
1750 'match' => '0C9D 0CC6',
1751 'replace' => 'E0DD',
1752 ),
1753 350 =>
1754 array (
1755 'match' => '0C9D 0CCA',
1756 'replace' => 'E0DE',
1757 ),
1758 351 =>
1759 array (
1760 'match' => '0C9D 0CCB',
1761 'replace' => 'E0DF',
1762 ),
1763 352 =>
1764 array (
1765 'match' => '0CAE 0CC6',
1766 'replace' => 'E0E0',
1767 ),
1768 353 =>
1769 array (
1770 'match' => '0CAE 0CCA',
1771 'replace' => 'E0E1',
1772 ),
1773 354 =>
1774 array (
1775 'match' => '0CAE 0CCB',
1776 'replace' => 'E0E2',
1777 ),
1778 355 =>
1779 array (
1780 'match' => '0CAF 0CC6',
1781 'replace' => 'E0E3',
1782 ),
1783 356 =>
1784 array (
1785 'match' => '0CAF 0CCA',
1786 'replace' => 'E0E4',
1787 ),
1788 357 =>
1789 array (
1790 'match' => '0CAF 0CCB',
1791 'replace' => 'E0E5',
1792 ),
1793 358 =>
1794 array (
1795 'match' => '0CB3 0CCA',
1796 'replace' => 'E0DC',
1797 ),
1798 359 =>
1799 array (
1800 'match' => 'E173 0CC1',
1801 'replace' => 'E138',
1802 ),
1803 360 =>
1804 array (
1805 'match' => 'E173 0CC6',
1806 'replace' => 'E139',
1807 ),
1808 361 =>
1809 array (
1810 'match' => 'E173 0CCA',
1811 'replace' => 'E13A',
1812 ),
1813 362 =>
1814 array (
1815 'match' => 'E174 0CC6',
1816 'replace' => 'E13C',
1817 ),
1818 363 =>
1819 array (
1820 'match' => 'E174 0CCA',
1821 'replace' => 'E13D',
1822 ),
1823 364 =>
1824 array (
1825 'match' => 'E187 0CC6',
1826 'replace' => 'E13F',
1827 ),
1828 365 =>
1829 array (
1830 'match' => 'E187 0CCA',
1831 'replace' => 'E140',
1832 ),
1833 366 =>
1834 array (
1835 'match' => 'E182 0CCA',
1836 'replace' => 'E142',
1837 ),
1838 367 =>
1839 array (
1840 'match' => 'E0EA 0CCA',
1841 'replace' => 'E0FC',
1842 ),
1843 368 =>
1844 array (
1845 'match' => 'E18A 0CCA',
1846 'replace' => 'E143',
1847 ),
1848 369 =>
1849 array (
1850 'match' => 'E177 0CC1',
1851 'replace' => 'E164',
1852 ),
1853 370 =>
1854 array (
1855 'match' => 'E177 0CC2',
1856 'replace' => 'E165',
1857 ),
1858 371 =>
1859 array (
1860 'match' => 'E177 0CC6',
1861 'replace' => 'E166',
1862 ),
1863 372 =>
1864 array (
1865 'match' => 'E177 0CCA',
1866 'replace' => 'E167',
1867 ),
1868 373 =>
1869 array (
1870 'match' => 'E189 0CCA',
1871 'replace' => 'E168',
1872 ),
1873 374 =>
1874 array (
1875 'match' => 'E0E9 0CC6',
1876 'replace' => 'E0F6',
1877 ),
1878 375 =>
1879 array (
1880 'match' => 'E0E9 0CCA',
1881 'replace' => 'E0F8',
1882 ),
1883 376 =>
1884 array (
1885 'match' => 'E185 0CC6',
1886 'replace' => 'E16C',
1887 ),
1888 377 =>
1889 array (
1890 'match' => 'E185 0CCA',
1891 'replace' => 'E16D',
1892 ),
1893 378 =>
1894 array (
1895 'match' => 'E186 0CC6',
1896 'replace' => 'E16F',
1897 ),
1898 379 =>
1899 array (
1900 'match' => 'E186 0CCA',
1901 'replace' => 'E170',
1902 ),
1903 380 =>
1904 array (
1905 'match' => '0C95 0CBF',
1906 'replace' => 'E082',
1907 ),
1908 381 =>
1909 array (
1910 'match' => '0C96 0CBF',
1911 'replace' => 'E083',
1912 ),
1913 382 =>
1914 array (
1915 'match' => '0C97 0CBF',
1916 'replace' => 'E084',
1917 ),
1918 383 =>
1919 array (
1920 'match' => '0C98 0CBF',
1921 'replace' => 'E085',
1922 ),
1923 384 =>
1924 array (
1925 'match' => '0C9A 0CBF',
1926 'replace' => 'E086',
1927 ),
1928 385 =>
1929 array (
1930 'match' => '0C9B 0CBF',
1931 'replace' => 'E087',
1932 ),
1933 386 =>
1934 array (
1935 'match' => '0C9C 0CBF',
1936 'replace' => 'E088',
1937 ),
1938 387 =>
1939 array (
1940 'match' => '0C9D 0CBF',
1941 'replace' => 'E089',
1942 ),
1943 388 =>
1944 array (
1945 'match' => '0CA0 0CBF',
1946 'replace' => 'E08A',
1947 ),
1948 389 =>
1949 array (
1950 'match' => '0CA1 0CBF',
1951 'replace' => 'E08B',
1952 ),
1953 390 =>
1954 array (
1955 'match' => '0CA2 0CBF',
1956 'replace' => 'E08C',
1957 ),
1958 391 =>
1959 array (
1960 'match' => '0CA3 0CBF',
1961 'replace' => 'E08D',
1962 ),
1963 392 =>
1964 array (
1965 'match' => '0CA4 0CBF',
1966 'replace' => 'E08E',
1967 ),
1968 393 =>
1969 array (
1970 'match' => '0CA5 0CBF',
1971 'replace' => 'E08F',
1972 ),
1973 394 =>
1974 array (
1975 'match' => '0CA6 0CBF',
1976 'replace' => 'E090',
1977 ),
1978 395 =>
1979 array (
1980 'match' => '0CA7 0CBF',
1981 'replace' => 'E091',
1982 ),
1983 396 =>
1984 array (
1985 'match' => '0CA8 0CBF',
1986 'replace' => 'E092',
1987 ),
1988 397 =>
1989 array (
1990 'match' => '0CAA 0CBF',
1991 'replace' => 'E093',
1992 ),
1993 398 =>
1994 array (
1995 'match' => '0CAB 0CBF',
1996 'replace' => 'E094',
1997 ),
1998 399 =>
1999 array (
2000 'match' => '0CAC 0CBF',
2001 'replace' => 'E095',
2002 ),
2003 400 =>
2004 array (
2005 'match' => '0CAD 0CBF',
2006 'replace' => 'E096',
2007 ),
2008 401 =>
2009 array (
2010 'match' => '0CAE 0CBF',
2011 'replace' => 'E097',
2012 ),
2013 402 =>
2014 array (
2015 'match' => '0CAF 0CBF',
2016 'replace' => 'E098',
2017 ),
2018 403 =>
2019 array (
2020 'match' => '0CB0 0CBF',
2021 'replace' => 'E099',
2022 ),
2023 404 =>
2024 array (
2025 'match' => '0CB2 0CBF',
2026 'replace' => 'E09A',
2027 ),
2028 405 =>
2029 array (
2030 'match' => '0CB3 0CBF',
2031 'replace' => 'E09B',
2032 ),
2033 406 =>
2034 array (
2035 'match' => '0CB5 0CBF',
2036 'replace' => 'E09C',
2037 ),
2038 407 =>
2039 array (
2040 'match' => '0CB6 0CBF',
2041 'replace' => 'E09D',
2042 ),
2043 408 =>
2044 array (
2045 'match' => '0CB7 0CBF',
2046 'replace' => 'E09E',
2047 ),
2048 409 =>
2049 array (
2050 'match' => '0CB8 0CBF',
2051 'replace' => 'E09F',
2052 ),
2053 410 =>
2054 array (
2055 'match' => '0CB9 0CBF',
2056 'replace' => 'E0A0',
2057 ),
2058 411 =>
2059 array (
2060 'match' => 'E07D 0CBF',
2061 'replace' => 'E0A1',
2062 ),
2063 412 =>
2064 array (
2065 'match' => 'E07E 0CBF',
2066 'replace' => 'E0A2',
2067 ),
2068 413 =>
2069 array (
2070 'match' => 'E0E6 0CBF',
2071 'replace' => 'E0F2',
2072 ),
2073 414 =>
2074 array (
2075 'match' => 'E0E7 0CBF',
2076 'replace' => 'E0F3',
2077 ),
2078 415 =>
2079 array (
2080 'match' => 'E172 0CBF',
2081 'replace' => 'E11B',
2082 ),
2083 416 =>
2084 array (
2085 'match' => 'E173 0CBF',
2086 'replace' => 'E11C',
2087 ),
2088 417 =>
2089 array (
2090 'match' => 'E175 0CBF',
2091 'replace' => 'E11D',
2092 ),
2093 418 =>
2094 array (
2095 'match' => 'E176 0CBF',
2096 'replace' => 'E11E',
2097 ),
2098 419 =>
2099 array (
2100 'match' => 'E0E8 0CBF',
2101 'replace' => 'E0F4',
2102 ),
2103 420 =>
2104 array (
2105 'match' => 'E0E9 0CBF',
2106 'replace' => 'E0F5',
2107 ),
2108 421 =>
2109 array (
2110 'match' => 'E179 0CBF',
2111 'replace' => 'E11F',
2112 ),
2113 422 =>
2114 array (
2115 'match' => 'E17A 0CBF',
2116 'replace' => 'E120',
2117 ),
2118 423 =>
2119 array (
2120 'match' => 'E17B 0CBF',
2121 'replace' => 'E121',
2122 ),
2123 424 =>
2124 array (
2125 'match' => 'E17C 0CBF',
2126 'replace' => 'E122',
2127 ),
2128 425 =>
2129 array (
2130 'match' => 'E17D 0CBF',
2131 'replace' => 'E123',
2132 ),
2133 426 =>
2134 array (
2135 'match' => 'E17E 0CBF',
2136 'replace' => 'E124',
2137 ),
2138 427 =>
2139 array (
2140 'match' => 'E17F 0CBF',
2141 'replace' => 'E125',
2142 ),
2143 428 =>
2144 array (
2145 'match' => 'E180 0CBF',
2146 'replace' => 'E126',
2147 ),
2148 429 =>
2149 array (
2150 'match' => 'E181 0CBF',
2151 'replace' => 'E127',
2152 ),
2153 430 =>
2154 array (
2155 'match' => 'E182 0CBF',
2156 'replace' => 'E128',
2157 ),
2158 431 =>
2159 array (
2160 'match' => 'E0EA 0CBF',
2161 'replace' => 'E0F9',
2162 ),
2163 432 =>
2164 array (
2165 'match' => 'E183 0CBF',
2166 'replace' => 'E129',
2167 ),
2168 433 =>
2169 array (
2170 'match' => 'E184 0CBF',
2171 'replace' => 'E12A',
2172 ),
2173 434 =>
2174 array (
2175 'match' => 'E185 0CBF',
2176 'replace' => 'E12B',
2177 ),
2178 435 =>
2179 array (
2180 'match' => 'E186 0CBF',
2181 'replace' => 'E12C',
2182 ),
2183 436 =>
2184 array (
2185 'match' => 'E0EB 0CBF',
2186 'replace' => 'E0FD',
2187 ),
2188 437 =>
2189 array (
2190 'match' => 'E188 0CBF',
2191 'replace' => 'E12D',
2192 ),
2193 438 =>
2194 array (
2195 'match' => 'E189 0CBF',
2196 'replace' => 'E12E',
2197 ),
2198 439 =>
2199 array (
2200 'match' => 'E18A 0CBF',
2201 'replace' => 'E12F',
2202 ),
2203 440 =>
2204 array (
2205 'match' => 'E18B 0CBF',
2206 'replace' => 'E130',
2207 ),
2208 441 =>
2209 array (
2210 'match' => 'E18C 0CBF',
2211 'replace' => 'E131',
2212 ),
2213 442 =>
2214 array (
2215 'match' => 'E18D 0CBF',
2216 'replace' => 'E132',
2217 ),
2218 443 =>
2219 array (
2220 'match' => 'E18E 0CBF',
2221 'replace' => 'E133',
2222 ),
2223 444 =>
2224 array (
2225 'match' => 'E117 0CBF',
2226 'replace' => 'E134',
2227 ),
2228 445 =>
2229 array (
2230 'match' => 'E118 0CBF',
2231 'replace' => 'E135',
2232 ),
2233 446 =>
2234 array (
2235 'match' => 'E136 0CBF',
2236 'replace' => 'E137',
2237 ),
2238 447 =>
2239 array (
2240 'match' => 'E0AD',
2241 'replace' => '0CCD',
2242 ),
2243 448 =>
2244 array (
2245 'match' => 'E0AC',
2246 'replace' => '0CCD',
2247 ),
2248 449 =>
2249 array (
2250 'match' => '0C95 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2251 'replace' => 'E00C \\1',
2252 ),
2253 450 =>
2254 array (
2255 'match' => '0C96 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2256 'replace' => 'E00D \\1',
2257 ),
2258 451 =>
2259 array (
2260 'match' => '0C97 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2261 'replace' => 'E00E \\1',
2262 ),
2263 452 =>
2264 array (
2265 'match' => '0C98 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2266 'replace' => 'E00F \\1',
2267 ),
2268 453 =>
2269 array (
2270 'match' => '0C99 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2271 'replace' => 'E010 \\1',
2272 ),
2273 454 =>
2274 array (
2275 'match' => '0C9A ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2276 'replace' => 'E011 \\1',
2277 ),
2278 455 =>
2279 array (
2280 'match' => '0C9B ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2281 'replace' => 'E012 \\1',
2282 ),
2283 456 =>
2284 array (
2285 'match' => '0C9C ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2286 'replace' => 'E013 \\1',
2287 ),
2288 457 =>
2289 array (
2290 'match' => '0C9D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2291 'replace' => 'E014 \\1',
2292 ),
2293 458 =>
2294 array (
2295 'match' => '0C9F ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2296 'replace' => 'E015 \\1',
2297 ),
2298 459 =>
2299 array (
2300 'match' => '0CA0 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2301 'replace' => 'E016 \\1',
2302 ),
2303 460 =>
2304 array (
2305 'match' => '0CA1 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2306 'replace' => 'E017 \\1',
2307 ),
2308 461 =>
2309 array (
2310 'match' => '0CA2 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2311 'replace' => 'E018 \\1',
2312 ),
2313 462 =>
2314 array (
2315 'match' => '0CA3 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2316 'replace' => 'E019 \\1',
2317 ),
2318 463 =>
2319 array (
2320 'match' => '0CA4 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2321 'replace' => 'E01A \\1',
2322 ),
2323 464 =>
2324 array (
2325 'match' => '0CA5 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2326 'replace' => 'E01B \\1',
2327 ),
2328 465 =>
2329 array (
2330 'match' => '0CA6 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2331 'replace' => 'E01C \\1',
2332 ),
2333 466 =>
2334 array (
2335 'match' => '0CA7 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2336 'replace' => 'E01D \\1',
2337 ),
2338 467 =>
2339 array (
2340 'match' => '0CA8 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2341 'replace' => 'E01E \\1',
2342 ),
2343 468 =>
2344 array (
2345 'match' => '0CAA ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2346 'replace' => 'E01F \\1',
2347 ),
2348 469 =>
2349 array (
2350 'match' => '0CAB ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2351 'replace' => 'E020 \\1',
2352 ),
2353 470 =>
2354 array (
2355 'match' => '0CAC ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2356 'replace' => 'E021 \\1',
2357 ),
2358 471 =>
2359 array (
2360 'match' => '0CAD ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2361 'replace' => 'E022 \\1',
2362 ),
2363 472 =>
2364 array (
2365 'match' => '0CAE ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2366 'replace' => 'E023 \\1',
2367 ),
2368 473 =>
2369 array (
2370 'match' => '0CAF ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2371 'replace' => 'E024 \\1',
2372 ),
2373 474 =>
2374 array (
2375 'match' => '0CB0 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2376 'replace' => 'E025 \\1',
2377 ),
2378 475 =>
2379 array (
2380 'match' => '0CB1 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2381 'replace' => 'E026 \\1',
2382 ),
2383 476 =>
2384 array (
2385 'match' => '0CB2 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2386 'replace' => 'E027 \\1',
2387 ),
2388 477 =>
2389 array (
2390 'match' => '0CB3 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2391 'replace' => 'E028 \\1',
2392 ),
2393 478 =>
2394 array (
2395 'match' => '0CB5 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2396 'replace' => 'E029 \\1',
2397 ),
2398 479 =>
2399 array (
2400 'match' => '0CB6 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2401 'replace' => 'E02A \\1',
2402 ),
2403 480 =>
2404 array (
2405 'match' => '0CB7 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2406 'replace' => 'E02B \\1',
2407 ),
2408 481 =>
2409 array (
2410 'match' => '0CB8 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2411 'replace' => 'E02C \\1',
2412 ),
2413 482 =>
2414 array (
2415 'match' => '0CB9 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2416 'replace' => 'E02D \\1',
2417 ),
2418 483 =>
2419 array (
2420 'match' => 'E07D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2421 'replace' => 'E07F \\1',
2422 ),
2423 484 =>
2424 array (
2425 'match' => 'E07E ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2426 'replace' => 'E080 \\1',
2427 ),
2428 485 =>
2429 array (
2430 'match' => 'E0E6 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2431 'replace' => 'E0EC \\1',
2432 ),
2433 486 =>
2434 array (
2435 'match' => 'E0E7 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2436 'replace' => 'E0ED \\1',
2437 ),
2438 487 =>
2439 array (
2440 'match' => 'E172 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2441 'replace' => 'E18F \\1',
2442 ),
2443 488 =>
2444 array (
2445 'match' => 'E173 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2446 'replace' => 'E190 \\1',
2447 ),
2448 489 =>
2449 array (
2450 'match' => 'E174 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2451 'replace' => 'E191 \\1',
2452 ),
2453 490 =>
2454 array (
2455 'match' => 'E175 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2456 'replace' => 'E192 \\1',
2457 ),
2458 491 =>
2459 array (
2460 'match' => 'E176 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2461 'replace' => 'E193 \\1',
2462 ),
2463 492 =>
2464 array (
2465 'match' => 'E0E8 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2466 'replace' => 'E0EE \\1',
2467 ),
2468 493 =>
2469 array (
2470 'match' => 'E0E9 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2471 'replace' => 'E0EF \\1',
2472 ),
2473 494 =>
2474 array (
2475 'match' => 'E178 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2476 'replace' => 'E194 \\1',
2477 ),
2478 495 =>
2479 array (
2480 'match' => 'E179 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2481 'replace' => 'E195 \\1',
2482 ),
2483 496 =>
2484 array (
2485 'match' => 'E17A ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2486 'replace' => 'E196 \\1',
2487 ),
2488 497 =>
2489 array (
2490 'match' => 'E17B ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2491 'replace' => 'E197 \\1',
2492 ),
2493 498 =>
2494 array (
2495 'match' => 'E17C ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2496 'replace' => 'E198 \\1',
2497 ),
2498 499 =>
2499 array (
2500 'match' => 'E17D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2501 'replace' => 'E199 \\1',
2502 ),
2503 500 =>
2504 array (
2505 'match' => 'E17E ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2506 'replace' => 'E19A \\1',
2507 ),
2508 501 =>
2509 array (
2510 'match' => 'E17F ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2511 'replace' => 'E19B \\1',
2512 ),
2513 502 =>
2514 array (
2515 'match' => 'E180 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2516 'replace' => 'E19C \\1',
2517 ),
2518 503 =>
2519 array (
2520 'match' => 'E181 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2521 'replace' => 'E19D \\1',
2522 ),
2523 504 =>
2524 array (
2525 'match' => 'E182 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2526 'replace' => 'E19E \\1',
2527 ),
2528 505 =>
2529 array (
2530 'match' => 'E0EA ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2531 'replace' => 'E0F0 \\1',
2532 ),
2533 506 =>
2534 array (
2535 'match' => 'E183 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2536 'replace' => 'E19F \\1',
2537 ),
2538 507 =>
2539 array (
2540 'match' => 'E184 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2541 'replace' => 'E1A0 \\1',
2542 ),
2543 508 =>
2544 array (
2545 'match' => 'E185 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2546 'replace' => 'E1A1 \\1',
2547 ),
2548 509 =>
2549 array (
2550 'match' => 'E186 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2551 'replace' => 'E1A2 \\1',
2552 ),
2553 510 =>
2554 array (
2555 'match' => 'E0EB ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2556 'replace' => 'E0F1 \\1',
2557 ),
2558 511 =>
2559 array (
2560 'match' => 'E187 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2561 'replace' => 'E1A3 \\1',
2562 ),
2563 512 =>
2564 array (
2565 'match' => 'E188 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2566 'replace' => 'E1A4 \\1',
2567 ),
2568 513 =>
2569 array (
2570 'match' => 'E189 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2571 'replace' => 'E1A5 \\1',
2572 ),
2573 514 =>
2574 array (
2575 'match' => 'E18A ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2576 'replace' => 'E1A6 \\1',
2577 ),
2578 515 =>
2579 array (
2580 'match' => 'E18B ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2581 'replace' => 'E1A7 \\1',
2582 ),
2583 516 =>
2584 array (
2585 'match' => 'E18C ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2586 'replace' => 'E1A8 \\1',
2587 ),
2588 517 =>
2589 array (
2590 'match' => 'E18D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2591 'replace' => 'E1A9 \\1',
2592 ),
2593 518 =>
2594 array (
2595 'match' => 'E18E ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2596 'replace' => 'E1AA \\1',
2597 ),
2598 519 =>
2599 array (
2600 'match' => 'E117 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2601 'replace' => 'E119 \\1',
2602 ),
2603 520 =>
2604 array (
2605 'match' => 'E118 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
2606 'replace' => 'E11A \\1',
2607 ),
2608 521 =>
2609 array (
2610 'match' => '0C95 (0CCD)',
2611 'replace' => 'E00C \\1',
2612 ),
2613 522 =>
2614 array (
2615 'match' => '0C96 (0CCD)',
2616 'replace' => 'E00D \\1',
2617 ),
2618 523 =>
2619 array (
2620 'match' => '0C97 (0CCD)',
2621 'replace' => 'E00E \\1',
2622 ),
2623 524 =>
2624 array (
2625 'match' => '0C98 (0CCD)',
2626 'replace' => 'E00F \\1',
2627 ),
2628 525 =>
2629 array (
2630 'match' => '0C99 (0CCD)',
2631 'replace' => 'E010 \\1',
2632 ),
2633 526 =>
2634 array (
2635 'match' => '0C9A (0CCD)',
2636 'replace' => 'E011 \\1',
2637 ),
2638 527 =>
2639 array (
2640 'match' => '0C9B (0CCD)',
2641 'replace' => 'E012 \\1',
2642 ),
2643 528 =>
2644 array (
2645 'match' => '0C9C (0CCD)',
2646 'replace' => 'E013 \\1',
2647 ),
2648 529 =>
2649 array (
2650 'match' => '0C9D (0CCD)',
2651 'replace' => 'E014 \\1',
2652 ),
2653 530 =>
2654 array (
2655 'match' => '0C9F (0CCD)',
2656 'replace' => 'E015 \\1',
2657 ),
2658 531 =>
2659 array (
2660 'match' => '0CA0 (0CCD)',
2661 'replace' => 'E016 \\1',
2662 ),
2663 532 =>
2664 array (
2665 'match' => '0CA1 (0CCD)',
2666 'replace' => 'E017 \\1',
2667 ),
2668 533 =>
2669 array (
2670 'match' => '0CA2 (0CCD)',
2671 'replace' => 'E018 \\1',
2672 ),
2673 534 =>
2674 array (
2675 'match' => '0CA3 (0CCD)',
2676 'replace' => 'E019 \\1',
2677 ),
2678 535 =>
2679 array (
2680 'match' => '0CA4 (0CCD)',
2681 'replace' => 'E01A \\1',
2682 ),
2683 536 =>
2684 array (
2685 'match' => '0CA5 (0CCD)',
2686 'replace' => 'E01B \\1',
2687 ),
2688 537 =>
2689 array (
2690 'match' => '0CA6 (0CCD)',
2691 'replace' => 'E01C \\1',
2692 ),
2693 538 =>
2694 array (
2695 'match' => '0CA7 (0CCD)',
2696 'replace' => 'E01D \\1',
2697 ),
2698 539 =>
2699 array (
2700 'match' => '0CA8 (0CCD)',
2701 'replace' => 'E01E \\1',
2702 ),
2703 540 =>
2704 array (
2705 'match' => '0CAA (0CCD)',
2706 'replace' => 'E01F \\1',
2707 ),
2708 541 =>
2709 array (
2710 'match' => '0CAB (0CCD)',
2711 'replace' => 'E020 \\1',
2712 ),
2713 542 =>
2714 array (
2715 'match' => '0CAC (0CCD)',
2716 'replace' => 'E021 \\1',
2717 ),
2718 543 =>
2719 array (
2720 'match' => '0CAD (0CCD)',
2721 'replace' => 'E022 \\1',
2722 ),
2723 544 =>
2724 array (
2725 'match' => '0CAE (0CCD)',
2726 'replace' => 'E023 \\1',
2727 ),
2728 545 =>
2729 array (
2730 'match' => '0CAF (0CCD)',
2731 'replace' => 'E024 \\1',
2732 ),
2733 546 =>
2734 array (
2735 'match' => '0CB0 (0CCD)',
2736 'replace' => 'E025 \\1',
2737 ),
2738 547 =>
2739 array (
2740 'match' => '0CB1 (0CCD)',
2741 'replace' => 'E026 \\1',
2742 ),
2743 548 =>
2744 array (
2745 'match' => '0CB2 (0CCD)',
2746 'replace' => 'E027 \\1',
2747 ),
2748 549 =>
2749 array (
2750 'match' => '0CB3 (0CCD)',
2751 'replace' => 'E028 \\1',
2752 ),
2753 550 =>
2754 array (
2755 'match' => '0CB5 (0CCD)',
2756 'replace' => 'E029 \\1',
2757 ),
2758 551 =>
2759 array (
2760 'match' => '0CB6 (0CCD)',
2761 'replace' => 'E02A \\1',
2762 ),
2763 552 =>
2764 array (
2765 'match' => '0CB7 (0CCD)',
2766 'replace' => 'E02B \\1',
2767 ),
2768 553 =>
2769 array (
2770 'match' => '0CB8 (0CCD)',
2771 'replace' => 'E02C \\1',
2772 ),
2773 554 =>
2774 array (
2775 'match' => '0CB9 (0CCD)',
2776 'replace' => 'E02D \\1',
2777 ),
2778 555 =>
2779 array (
2780 'match' => 'E07D (0CCD)',
2781 'replace' => 'E07F \\1',
2782 ),
2783 556 =>
2784 array (
2785 'match' => 'E07E (0CCD)',
2786 'replace' => 'E080 \\1',
2787 ),
2788 557 =>
2789 array (
2790 'match' => 'E0E6 (0CCD)',
2791 'replace' => 'E0EC \\1',
2792 ),
2793 558 =>
2794 array (
2795 'match' => 'E0E7 (0CCD)',
2796 'replace' => 'E0ED \\1',
2797 ),
2798 559 =>
2799 array (
2800 'match' => 'E172 (0CCD)',
2801 'replace' => 'E18F \\1',
2802 ),
2803 560 =>
2804 array (
2805 'match' => 'E173 (0CCD)',
2806 'replace' => 'E190 \\1',
2807 ),
2808 561 =>
2809 array (
2810 'match' => 'E174 (0CCD)',
2811 'replace' => 'E191 \\1',
2812 ),
2813 562 =>
2814 array (
2815 'match' => 'E175 (0CCD)',
2816 'replace' => 'E192 \\1',
2817 ),
2818 563 =>
2819 array (
2820 'match' => 'E176 (0CCD)',
2821 'replace' => 'E193 \\1',
2822 ),
2823 564 =>
2824 array (
2825 'match' => 'E0E8 (0CCD)',
2826 'replace' => 'E0EE \\1',
2827 ),
2828 565 =>
2829 array (
2830 'match' => 'E0E9 (0CCD)',
2831 'replace' => 'E0EF \\1',
2832 ),
2833 566 =>
2834 array (
2835 'match' => 'E178 (0CCD)',
2836 'replace' => 'E194 \\1',
2837 ),
2838 567 =>
2839 array (
2840 'match' => 'E179 (0CCD)',
2841 'replace' => 'E195 \\1',
2842 ),
2843 568 =>
2844 array (
2845 'match' => 'E17A (0CCD)',
2846 'replace' => 'E196 \\1',
2847 ),
2848 569 =>
2849 array (
2850 'match' => 'E17B (0CCD)',
2851 'replace' => 'E197 \\1',
2852 ),
2853 570 =>
2854 array (
2855 'match' => 'E17C (0CCD)',
2856 'replace' => 'E198 \\1',
2857 ),
2858 571 =>
2859 array (
2860 'match' => 'E17D (0CCD)',
2861 'replace' => 'E199 \\1',
2862 ),
2863 572 =>
2864 array (
2865 'match' => 'E17E (0CCD)',
2866 'replace' => 'E19A \\1',
2867 ),
2868 573 =>
2869 array (
2870 'match' => 'E17F (0CCD)',
2871 'replace' => 'E19B \\1',
2872 ),
2873 574 =>
2874 array (
2875 'match' => 'E180 (0CCD)',
2876 'replace' => 'E19C \\1',
2877 ),
2878 575 =>
2879 array (
2880 'match' => 'E181 (0CCD)',
2881 'replace' => 'E19D \\1',
2882 ),
2883 576 =>
2884 array (
2885 'match' => 'E182 (0CCD)',
2886 'replace' => 'E19E \\1',
2887 ),
2888 577 =>
2889 array (
2890 'match' => 'E0EA (0CCD)',
2891 'replace' => 'E0F0 \\1',
2892 ),
2893 578 =>
2894 array (
2895 'match' => 'E183 (0CCD)',
2896 'replace' => 'E19F \\1',
2897 ),
2898 579 =>
2899 array (
2900 'match' => 'E184 (0CCD)',
2901 'replace' => 'E1A0 \\1',
2902 ),
2903 580 =>
2904 array (
2905 'match' => 'E185 (0CCD)',
2906 'replace' => 'E1A1 \\1',
2907 ),
2908 581 =>
2909 array (
2910 'match' => 'E186 (0CCD)',
2911 'replace' => 'E1A2 \\1',
2912 ),
2913 582 =>
2914 array (
2915 'match' => 'E0EB (0CCD)',
2916 'replace' => 'E0F1 \\1',
2917 ),
2918 583 =>
2919 array (
2920 'match' => 'E187 (0CCD)',
2921 'replace' => 'E1A3 \\1',
2922 ),
2923 584 =>
2924 array (
2925 'match' => 'E188 (0CCD)',
2926 'replace' => 'E1A4 \\1',
2927 ),
2928 585 =>
2929 array (
2930 'match' => 'E189 (0CCD)',
2931 'replace' => 'E1A5 \\1',
2932 ),
2933 586 =>
2934 array (
2935 'match' => 'E18A (0CCD)',
2936 'replace' => 'E1A6 \\1',
2937 ),
2938 587 =>
2939 array (
2940 'match' => 'E18B (0CCD)',
2941 'replace' => 'E1A7 \\1',
2942 ),
2943 588 =>
2944 array (
2945 'match' => 'E18C (0CCD)',
2946 'replace' => 'E1A8 \\1',
2947 ),
2948 589 =>
2949 array (
2950 'match' => 'E18D (0CCD)',
2951 'replace' => 'E1A9 \\1',
2952 ),
2953 590 =>
2954 array (
2955 'match' => 'E18E (0CCD)',
2956 'replace' => 'E1AA \\1',
2957 ),
2958 591 =>
2959 array (
2960 'match' => 'E117 (0CCD)',
2961 'replace' => 'E119 \\1',
2962 ),
2963 592 =>
2964 array (
2965 'match' => 'E118 (0CCD)',
2966 'replace' => 'E11A \\1',
2967 ),
2968 593 =>
2969 array (
2970 'match' => '0C98 (0CBE)',
2971 'replace' => 'E00F \\1',
2972 ),
2973 594 =>
2974 array (
2975 'match' => '0CB1 (0CBE)',
2976 'replace' => 'E026 \\1',
2977 ),
2978 595 =>
2979 array (
2980 'match' => 'E173 (0CBE)',
2981 'replace' => 'E190 \\1',
2982 ),
2983 596 =>
2984 array (
2985 'match' => 'E187 (0CBE)',
2986 'replace' => 'E1A3 \\1',
2987 ),
2988 597 =>
2989 array (
2990 'match' => '((E00F|0C9E|E026|E190|E177|E1A3)) 0CBE',
2991 'replace' => '\\1 E004',
2992 ),
2993);
2994?> \ 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
index 0ef71d17..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/ind_ml_1_001.volt.php
+++ /dev/null
@@ -1,1769 +0,0 @@
1<?php
2 $volt = array (
3 0 =>
4 array (
5 'match' => '0D4D 200D',
6 'replace' => '007E',
7 ),
8 1 =>
9 array (
10 'match' => '0D4D 200C',
11 'replace' => '2018',
12 ),
13 2 =>
14 array (
15 'match' => '200D 0D4D',
16 'replace' => '2019',
17 ),
18 3 =>
19 array (
20 'match' => '0D15 0D4D 0D37',
21 'replace' => 'E010',
22 ),
23 4 =>
24 array (
25 'match' => '0D1C 0D4D 0D1E',
26 'replace' => 'E011',
27 ),
28 5 =>
29 array (
30 'match' => '0D1A 0D4D 0D1A',
31 'replace' => 'E03E',
32 ),
33 6 =>
34 array (
35 'match' => '0D2C 0D4D 0D2C',
36 'replace' => 'E04B',
37 ),
38 7 =>
39 array (
40 'match' => '0D24 0D4D 0D24',
41 'replace' => 'E023',
42 ),
43 8 =>
44 array (
45 'match' => '0D28 0D4D 0D28',
46 'replace' => 'E02A',
47 ),
48 9 =>
49 array (
50 'match' => '0D23 0D4D 0D23',
51 'replace' => 'E043',
52 ),
53 10 =>
54 array (
55 'match' => '0D2E 0D4D 0D2E',
56 'replace' => 'E030',
57 ),
58 11 =>
59 array (
60 'match' => '0D33 0D4D 0D33',
61 'replace' => 'E036',
62 ),
63 12 =>
64 array (
65 'match' => '0D32 0D4D 0D32',
66 'replace' => 'E05D',
67 ),
68 13 =>
69 array (
70 'match' => '0D26 0D4D 0D26',
71 'replace' => 'E015',
72 ),
73 14 =>
74 array (
75 'match' => '0D1F 0D4D 0D1F',
76 'replace' => 'E014',
77 ),
78 15 =>
79 array (
80 'match' => '0D1C 0D4D 0D1C',
81 'replace' => 'E01B',
82 ),
83 16 =>
84 array (
85 'match' => '0D2A 0D4D 0D2A',
86 'replace' => 'E046',
87 ),
88 17 =>
89 array (
90 'match' => '0D17 0D4D 0D17',
91 'replace' => 'E03B',
92 ),
93 18 =>
94 array (
95 'match' => '0D15 0D4D 0D15',
96 'replace' => 'E012',
97 ),
98 19 =>
99 array (
100 'match' => '0D31 0D4D 0D31',
101 'replace' => 'E05C',
102 ),
103 20 =>
104 array (
105 'match' => '0D19 0D4D 0D15',
106 'replace' => 'E013',
107 ),
108 21 =>
109 array (
110 'match' => '0D19 0D4D 0D19',
111 'replace' => 'E016',
112 ),
113 22 =>
114 array (
115 'match' => '0D15 0D4D 0D24',
116 'replace' => 'E017',
117 ),
118 23 =>
119 array (
120 'match' => '0D17 0D4D 0D2E',
121 'replace' => 'E018',
122 ),
123 24 =>
124 array (
125 'match' => '0D17 0D4D E029',
126 'replace' => 'E019',
127 ),
128 25 =>
129 array (
130 'match' => '0D17 0D4D 0D28',
131 'replace' => 'E01A',
132 ),
133 26 =>
134 array (
135 'match' => '0D1E 0D4D 0D1C',
136 'replace' => 'E01C',
137 ),
138 27 =>
139 array (
140 'match' => '0D1E 0D4D 0D1E',
141 'replace' => 'E01D',
142 ),
143 28 =>
144 array (
145 'match' => '0D1E 0D4D 0D1A',
146 'replace' => 'E01E',
147 ),
148 29 =>
149 array (
150 'match' => '0D1E 0D4D 0D1B',
151 'replace' => 'E01F',
152 ),
153 30 =>
154 array (
155 'match' => '0D23 0D4D 0D2E',
156 'replace' => 'E020',
157 ),
158 31 =>
159 array (
160 'match' => '0D23 0D4D 0D21',
161 'replace' => 'E021',
162 ),
163 32 =>
164 array (
165 'match' => '0D23 0D4D 0D1F',
166 'replace' => 'E022',
167 ),
168 33 =>
169 array (
170 'match' => '0D24 0D4D 0D38',
171 'replace' => 'E024',
172 ),
173 34 =>
174 array (
175 'match' => '0D24 0D4D 0D25',
176 'replace' => 'E025',
177 ),
178 35 =>
179 array (
180 'match' => '0D24 0D4D 0D2E',
181 'replace' => 'E026',
182 ),
183 36 =>
184 array (
185 'match' => '0D24 0D4D 0D2D',
186 'replace' => 'E027',
187 ),
188 37 =>
189 array (
190 'match' => '0D24 0D4D 0D28',
191 'replace' => 'E028',
192 ),
193 38 =>
194 array (
195 'match' => '0D26 0D4D 0D27',
196 'replace' => 'E029',
197 ),
198 39 =>
199 array (
200 'match' => '0D28 0D4D 0D26',
201 'replace' => 'E02B',
202 ),
203 40 =>
204 array (
205 'match' => '0D28 0D4D 0D24',
206 'replace' => 'E02C',
207 ),
208 41 =>
209 array (
210 'match' => '0D28 0D4D 0D27',
211 'replace' => 'E02D',
212 ),
213 42 =>
214 array (
215 'match' => '0D28 0D4D 0D2A',
216 'replace' => 'E031',
217 ),
218 43 =>
219 array (
220 'match' => '0D28 0D4D 0D2E',
221 'replace' => 'E02E',
222 ),
223 44 =>
224 array (
225 'match' => '0D28 0D4D 0D25',
226 'replace' => 'E02F',
227 ),
228 45 =>
229 array (
230 'match' => '0D2E 0D4D 0D2A',
231 'replace' => 'E031',
232 ),
233 46 =>
234 array (
235 'match' => '0D36 0D4D 0D1A',
236 'replace' => 'E032',
237 ),
238 47 =>
239 array (
240 'match' => '0D38 0D4D 0D25',
241 'replace' => 'E033',
242 ),
243 48 =>
244 array (
245 'match' => '0D39 0D4D 0D28',
246 'replace' => 'E034',
247 ),
248 49 =>
249 array (
250 'match' => '0D39 0D4D 0D2E',
251 'replace' => 'E035',
252 ),
253 50 =>
254 array (
255 'match' => '0D15 0D4D 0D32',
256 'replace' => 'E037',
257 ),
258 51 =>
259 array (
260 'match' => '0D15 0D4D 0D33',
261 'replace' => 'E037',
262 ),
263 52 =>
264 array (
265 'match' => '0D15 0D4D 0D38',
266 'replace' => 'E038',
267 ),
268 53 =>
269 array (
270 'match' => '0D15 0D4D 0D1F',
271 'replace' => 'E039',
272 ),
273 54 =>
274 array (
275 'match' => '0D18 0D4D 0D28',
276 'replace' => 'E03A',
277 ),
278 55 =>
279 array (
280 'match' => '0D17 0D4D 0D32',
281 'replace' => 'E03C',
282 ),
283 56 =>
284 array (
285 'match' => '0D17 0D4D 0D33',
286 'replace' => 'E03C',
287 ),
288 57 =>
289 array (
290 'match' => '0D1A 0D4D 0D1B',
291 'replace' => 'E03F',
292 ),
293 58 =>
294 array (
295 'match' => '0D21 0D4D 0D21',
296 'replace' => 'E040',
297 ),
298 59 =>
299 array (
300 'match' => '0D21 0D4D 0D22',
301 'replace' => 'E041',
302 ),
303 60 =>
304 array (
305 'match' => '0D21 0D4D 0D1C',
306 'replace' => 'E042',
307 ),
308 61 =>
309 array (
310 'match' => '0D23 0D4D 0D20',
311 'replace' => 'E044',
312 ),
313 62 =>
314 array (
315 'match' => '0D24 0D4D 0D32',
316 'replace' => 'E045',
317 ),
318 63 =>
319 array (
320 'match' => '0D2A 0D4D 0D28',
321 'replace' => 'E047',
322 ),
323 64 =>
324 array (
325 'match' => '0D2A 0D4D 0D32',
326 'replace' => 'E048',
327 ),
328 65 =>
329 array (
330 'match' => '0D2A 0D4D 0D33',
331 'replace' => 'E048',
332 ),
333 66 =>
334 array (
335 'match' => '0D2A 0D4D 0D38',
336 'replace' => 'E049',
337 ),
338 67 =>
339 array (
340 'match' => '0D2A 0D4D 0D24',
341 'replace' => 'E04A',
342 ),
343 68 =>
344 array (
345 'match' => '0D2C 0D4D 0D32',
346 'replace' => 'E04C',
347 ),
348 69 =>
349 array (
350 'match' => '0D2C 0D4D 0D33',
351 'replace' => 'E04C',
352 ),
353 70 =>
354 array (
355 'match' => '0D2C 0D4D 0D26',
356 'replace' => 'E04D',
357 ),
358 71 =>
359 array (
360 'match' => '0D2C 0D4D 0D27',
361 'replace' => 'E04E',
362 ),
363 72 =>
364 array (
365 'match' => '0D2C 0D4D 0D15',
366 'replace' => 'E04F',
367 ),
368 73 =>
369 array (
370 'match' => '0D2B 0D4D 0D32',
371 'replace' => 'E050',
372 ),
373 74 =>
374 array (
375 'match' => '0D2B 0D4D 0D33',
376 'replace' => 'E050',
377 ),
378 75 =>
379 array (
380 'match' => '0D2B 0D4D 0D15',
381 'replace' => 'E051',
382 ),
383 76 =>
384 array (
385 'match' => '0D2B 0D4D 0D24',
386 'replace' => 'E052',
387 ),
388 77 =>
389 array (
390 'match' => '0D2E 0D4D 0D32',
391 'replace' => 'E053',
392 ),
393 78 =>
394 array (
395 'match' => '0D2E 0D4D 0D33',
396 'replace' => 'E053',
397 ),
398 79 =>
399 array (
400 'match' => '0D2E 0D4D 0D28',
401 'replace' => 'E054',
402 ),
403 80 =>
404 array (
405 'match' => '0D2F 0D4D 0D2F',
406 'replace' => 'E055',
407 ),
408 81 =>
409 array (
410 'match' => '0D2F 0D4D 0D2E',
411 'replace' => 'E056',
412 ),
413 82 =>
414 array (
415 'match' => '0D2F 0D4D 0D2A',
416 'replace' => 'E057',
417 ),
418 83 =>
419 array (
420 'match' => '0D2F 0D4D 0D15',
421 'replace' => 'E058',
422 ),
423 84 =>
424 array (
425 'match' => '0D2F 0D4D 0D24',
426 'replace' => 'E05A',
427 ),
428 85 =>
429 array (
430 'match' => '0D32 0D4D 0D32',
431 'replace' => 'E05D',
432 ),
433 86 =>
434 array (
435 'match' => '0D32 0D4D 0D2A',
436 'replace' => 'E05E',
437 ),
438 87 =>
439 array (
440 'match' => '0D32 0D4D 0D15',
441 'replace' => 'E05F',
442 ),
443 88 =>
444 array (
445 'match' => '0D32 0D4D 0D2E',
446 'replace' => 'E060',
447 ),
448 89 =>
449 array (
450 'match' => '0D35 0D4D 0D35',
451 'replace' => 'E061',
452 ),
453 90 =>
454 array (
455 'match' => '0D35 0D4D 0D32',
456 'replace' => 'E062',
457 ),
458 91 =>
459 array (
460 'match' => '0D35 0D4D 0D33',
461 'replace' => 'E062',
462 ),
463 92 =>
464 array (
465 'match' => '0D36 0D4D 0D36',
466 'replace' => 'E063',
467 ),
468 93 =>
469 array (
470 'match' => '0D36 0D4D 0D32',
471 'replace' => 'E064',
472 ),
473 94 =>
474 array (
475 'match' => '0D36 0D4D 0D33',
476 'replace' => 'E064',
477 ),
478 95 =>
479 array (
480 'match' => '0D36 0D4D 0D28',
481 'replace' => 'E065',
482 ),
483 96 =>
484 array (
485 'match' => '0D36 0D4D 0D2E',
486 'replace' => 'E066',
487 ),
488 97 =>
489 array (
490 'match' => '0D37 0D4D 0D2A',
491 'replace' => 'E067',
492 ),
493 98 =>
494 array (
495 'match' => '0D37 0D4D 0D15',
496 'replace' => 'E068',
497 ),
498 99 =>
499 array (
500 'match' => '0D37 0D4D 0D23',
501 'replace' => 'E069',
502 ),
503 100 =>
504 array (
505 'match' => '0D37 0D4D 0D1F',
506 'replace' => 'E06A',
507 ),
508 101 =>
509 array (
510 'match' => '0D37 0D4D 0D2E',
511 'replace' => 'E06B',
512 ),
513 102 =>
514 array (
515 'match' => '0D37 0D4D E05C',
516 'replace' => 'E06C',
517 ),
518 103 =>
519 array (
520 'match' => '0D37 0D4D 0D2B',
521 'replace' => 'E06D',
522 ),
523 104 =>
524 array (
525 'match' => '0D37 0D4D 0D20',
526 'replace' => 'E06E',
527 ),
528 105 =>
529 array (
530 'match' => '0D37 0D4D 0D24',
531 'replace' => 'E06F',
532 ),
533 106 =>
534 array (
535 'match' => '0D38 0D4D 0D38',
536 'replace' => 'E070',
537 ),
538 107 =>
539 array (
540 'match' => '0D38 0D4D 0D32',
541 'replace' => 'E071',
542 ),
543 108 =>
544 array (
545 'match' => '0D38 0D4D 0D33',
546 'replace' => 'E071',
547 ),
548 109 =>
549 array (
550 'match' => '0D38 0D4D E05C',
551 'replace' => 'E072',
552 ),
553 110 =>
554 array (
555 'match' => '0D38 0D4D 0D2A',
556 'replace' => 'E073',
557 ),
558 111 =>
559 array (
560 'match' => '0D38 0D4D 0D24',
561 'replace' => 'E074',
562 ),
563 112 =>
564 array (
565 'match' => '0D38 0D4D 0D15',
566 'replace' => 'E075',
567 ),
568 113 =>
569 array (
570 'match' => '0D38 0D4D 0D28',
571 'replace' => 'E076',
572 ),
573 114 =>
574 array (
575 'match' => '0D38 0D4D 0D2E',
576 'replace' => 'E077',
577 ),
578 115 =>
579 array (
580 'match' => '0D39 0D4D 0D32',
581 'replace' => 'E078',
582 ),
583 116 =>
584 array (
585 'match' => '0D39 0D4D 0D33',
586 'replace' => 'E078',
587 ),
588 117 =>
589 array (
590 'match' => '0D34 0D4D 0D24',
591 'replace' => 'E079',
592 ),
593 118 =>
594 array (
595 'match' => '0D34 0D4D 0D15',
596 'replace' => 'E07A',
597 ),
598 119 =>
599 array (
600 'match' => '0D34 0D4D 0D2E',
601 'replace' => 'E07C',
602 ),
603 120 =>
604 array (
605 'match' => 'E006 0D4D 0D31',
606 'replace' => 'E07D',
607 ),
608 121 =>
609 array (
610 'match' => '0D28 0D4D 0D30',
611 'replace' => 'E07D',
612 ),
613 122 =>
614 array (
615 'match' => '0D28 0D4D 0D31',
616 'replace' => 'E07D',
617 ),
618 123 =>
619 array (
620 'match' => '0D34 0D4D E023',
621 'replace' => 'E07B',
622 ),
623 124 =>
624 array (
625 'match' => '0D2F 0D4D E023',
626 'replace' => 'E05B',
627 ),
628 125 =>
629 array (
630 'match' => '0D2F 0D4D E012',
631 'replace' => 'E059',
632 ),
633 126 =>
634 array (
635 'match' => 'E010 0D4D 0D2E',
636 'replace' => 'E03D',
637 ),
638 127 =>
639 array (
640 'match' => '2019 0D31',
641 'replace' => 'E00E',
642 ),
643 128 =>
644 array (
645 'match' => '2019 0D31',
646 'replace' => 'E00E',
647 ),
648 129 =>
649 array (
650 'match' => '2019 0D2F',
651 'replace' => 'E00D',
652 ),
653 130 =>
654 array (
655 'match' => '2019 0D35',
656 'replace' => 'E00F',
657 ),
658 131 =>
659 array (
660 '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))',
661 'replace' => 'E00E \\1',
662 ),
663 132 =>
664 array (
665 '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))',
666 'replace' => 'E00E \\1',
667 ),
668 133 =>
669 array (
670 '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))',
671 'replace' => 'E00E \\1',
672 ),
673 134 =>
674 array (
675 '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))',
676 'replace' => 'E00E \\1',
677 ),
678 135 =>
679 array (
680 'match' => '0D4D 0D31 ((0020|25CC))',
681 'replace' => 'E00E \\1',
682 ),
683 136 =>
684 array (
685 'match' => '0D4D 0D30 ((0020|25CC))',
686 'replace' => 'E00E \\1',
687 ),
688 137 =>
689 array (
690 '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',
691 'replace' => '\\1 E00D',
692 ),
693 138 =>
694 array (
695 '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',
696 'replace' => '\\1 E00D',
697 ),
698 139 =>
699 array (
700 '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',
701 'replace' => '\\1 E00D',
702 ),
703 140 =>
704 array (
705 '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',
706 'replace' => '\\1 E00D',
707 ),
708 141 =>
709 array (
710 'match' => '((0020|25CC)) 0D4D 0D2F',
711 'replace' => '\\1 E00D',
712 ),
713 142 =>
714 array (
715 'match' => '((0020|25CC)) 2018 0D2F',
716 'replace' => '\\1 E00D',
717 ),
718 143 =>
719 array (
720 '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',
721 'replace' => '\\1 E00F',
722 ),
723 144 =>
724 array (
725 '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',
726 'replace' => '\\1 E00F',
727 ),
728 145 =>
729 array (
730 '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',
731 'replace' => '\\1 E00F',
732 ),
733 146 =>
734 array (
735 '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',
736 'replace' => '\\1 E00F',
737 ),
738 147 =>
739 array (
740 'match' => '((0020|25CC)) 0D4D 0D35',
741 'replace' => '\\1 E00F',
742 ),
743 148 =>
744 array (
745 'match' => '((0020|25CC)) 2018 0D35',
746 'replace' => '\\1 E00F',
747 ),
748 149 =>
749 array (
750 'match' => '0D28 0D4D',
751 'replace' => 'E006',
752 ),
753 150 =>
754 array (
755 'match' => '0D28 007E',
756 'replace' => 'E006',
757 ),
758 151 =>
759 array (
760 'match' => '0D23 0D4D',
761 'replace' => 'E005',
762 ),
763 152 =>
764 array (
765 'match' => '0D23 007E',
766 'replace' => 'E005',
767 ),
768 153 =>
769 array (
770 'match' => '0D32 0D4D',
771 'replace' => 'E008',
772 ),
773 154 =>
774 array (
775 'match' => '0D32 007E',
776 'replace' => 'E008',
777 ),
778 155 =>
779 array (
780 'match' => '0D33 0D4D',
781 'replace' => 'E009',
782 ),
783 156 =>
784 array (
785 'match' => '0D33 007E',
786 'replace' => 'E009',
787 ),
788 157 =>
789 array (
790 'match' => '0D31 0D4D',
791 'replace' => 'E007',
792 ),
793 158 =>
794 array (
795 'match' => '0D31 007E',
796 'replace' => 'E007',
797 ),
798 159 =>
799 array (
800 'match' => '0D30 0D4D',
801 'replace' => 'E007',
802 ),
803 160 =>
804 array (
805 'match' => '0D30 007E',
806 'replace' => 'E007',
807 ),
808 161 =>
809 array (
810 'match' => '(E00E) E005',
811 'replace' => '\\1 E005 E00E',
812 ),
813 162 =>
814 array (
815 'match' => '(E00E) E006',
816 'replace' => '\\1 E006 E00E',
817 ),
818 163 =>
819 array (
820 'match' => '(E00E) E007',
821 'replace' => '\\1 E007 E00E',
822 ),
823 164 =>
824 array (
825 'match' => '(E00E) E008',
826 'replace' => '\\1 E008 E00E',
827 ),
828 165 =>
829 array (
830 'match' => '(E00E) E009',
831 'replace' => '\\1 E009 E00E',
832 ),
833 166 =>
834 array (
835 'match' => 'E00E E005 (E00E)',
836 'replace' => 'E005 \\1',
837 ),
838 167 =>
839 array (
840 'match' => 'E00E E006 (E00E)',
841 'replace' => 'E006 \\1',
842 ),
843 168 =>
844 array (
845 'match' => 'E00E E007 (E00E)',
846 'replace' => 'E007 \\1',
847 ),
848 169 =>
849 array (
850 'match' => 'E00E E008 (E00E)',
851 'replace' => 'E008 \\1',
852 ),
853 170 =>
854 array (
855 'match' => 'E00E E009 (E00E)',
856 'replace' => 'E009 \\1',
857 ),
858 171 =>
859 array (
860 '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))',
861 'replace' => '\\1 0D4D E00E \\3',
862 ),
863 172 =>
864 array (
865 'match' => 'E00E 0D15 (0D4D E00E)',
866 'replace' => '0D15 \\1',
867 ),
868 173 =>
869 array (
870 'match' => 'E00E 0D16 (0D4D E00E)',
871 'replace' => '0D16 \\1',
872 ),
873 174 =>
874 array (
875 'match' => 'E00E 0D17 (0D4D E00E)',
876 'replace' => '0D17 \\1',
877 ),
878 175 =>
879 array (
880 'match' => 'E00E 0D18 (0D4D E00E)',
881 'replace' => '0D18 \\1',
882 ),
883 176 =>
884 array (
885 'match' => 'E00E 0D19 (0D4D E00E)',
886 'replace' => '0D19 \\1',
887 ),
888 177 =>
889 array (
890 'match' => 'E00E 0D1A (0D4D E00E)',
891 'replace' => '0D1A \\1',
892 ),
893 178 =>
894 array (
895 'match' => 'E00E 0D1B (0D4D E00E)',
896 'replace' => '0D1B \\1',
897 ),
898 179 =>
899 array (
900 'match' => 'E00E 0D1C (0D4D E00E)',
901 'replace' => '0D1C \\1',
902 ),
903 180 =>
904 array (
905 'match' => 'E00E 0D1D (0D4D E00E)',
906 'replace' => '0D1D \\1',
907 ),
908 181 =>
909 array (
910 'match' => 'E00E 0D1E (0D4D E00E)',
911 'replace' => '0D1E \\1',
912 ),
913 182 =>
914 array (
915 'match' => 'E00E 0D1F (0D4D E00E)',
916 'replace' => '0D1F \\1',
917 ),
918 183 =>
919 array (
920 'match' => 'E00E 0D20 (0D4D E00E)',
921 'replace' => '0D20 \\1',
922 ),
923 184 =>
924 array (
925 'match' => 'E00E 0D21 (0D4D E00E)',
926 'replace' => '0D21 \\1',
927 ),
928 185 =>
929 array (
930 'match' => 'E00E 0D22 (0D4D E00E)',
931 'replace' => '0D22 \\1',
932 ),
933 186 =>
934 array (
935 'match' => 'E00E 0D23 (0D4D E00E)',
936 'replace' => '0D23 \\1',
937 ),
938 187 =>
939 array (
940 'match' => 'E00E 0D24 (0D4D E00E)',
941 'replace' => '0D24 \\1',
942 ),
943 188 =>
944 array (
945 'match' => 'E00E 0D25 (0D4D E00E)',
946 'replace' => '0D25 \\1',
947 ),
948 189 =>
949 array (
950 'match' => 'E00E 0D26 (0D4D E00E)',
951 'replace' => '0D26 \\1',
952 ),
953 190 =>
954 array (
955 'match' => 'E00E 0D27 (0D4D E00E)',
956 'replace' => '0D27 \\1',
957 ),
958 191 =>
959 array (
960 'match' => 'E00E 0D28 (0D4D E00E)',
961 'replace' => '0D28 \\1',
962 ),
963 192 =>
964 array (
965 'match' => 'E00E 0D2A (0D4D E00E)',
966 'replace' => '0D2A \\1',
967 ),
968 193 =>
969 array (
970 'match' => 'E00E 0D2B (0D4D E00E)',
971 'replace' => '0D2B \\1',
972 ),
973 194 =>
974 array (
975 'match' => 'E00E 0D2C (0D4D E00E)',
976 'replace' => '0D2C \\1',
977 ),
978 195 =>
979 array (
980 'match' => 'E00E 0D2D (0D4D E00E)',
981 'replace' => '0D2D \\1',
982 ),
983 196 =>
984 array (
985 'match' => 'E00E 0D2E (0D4D E00E)',
986 'replace' => '0D2E \\1',
987 ),
988 197 =>
989 array (
990 'match' => 'E00E 0D2F (0D4D E00E)',
991 'replace' => '0D2F \\1',
992 ),
993 198 =>
994 array (
995 'match' => 'E00E 0D30 (0D4D E00E)',
996 'replace' => '0D30 \\1',
997 ),
998 199 =>
999 array (
1000 'match' => 'E00E 0D31 (0D4D E00E)',
1001 'replace' => '0D31 \\1',
1002 ),
1003 200 =>
1004 array (
1005 'match' => 'E00E 0D32 (0D4D E00E)',
1006 'replace' => '0D32 \\1',
1007 ),
1008 201 =>
1009 array (
1010 'match' => 'E00E 0D33 (0D4D E00E)',
1011 'replace' => '0D33 \\1',
1012 ),
1013 202 =>
1014 array (
1015 'match' => 'E00E 0D34 (0D4D E00E)',
1016 'replace' => '0D34 \\1',
1017 ),
1018 203 =>
1019 array (
1020 'match' => 'E00E 0D35 (0D4D E00E)',
1021 'replace' => '0D35 \\1',
1022 ),
1023 204 =>
1024 array (
1025 'match' => 'E00E 0D36 (0D4D E00E)',
1026 'replace' => '0D36 \\1',
1027 ),
1028 205 =>
1029 array (
1030 'match' => 'E00E 0D37 (0D4D E00E)',
1031 'replace' => '0D37 \\1',
1032 ),
1033 206 =>
1034 array (
1035 'match' => 'E00E 0D38 (0D4D E00E)',
1036 'replace' => '0D38 \\1',
1037 ),
1038 207 =>
1039 array (
1040 'match' => 'E00E 0D39 (0D4D E00E)',
1041 'replace' => '0D39 \\1',
1042 ),
1043 208 =>
1044 array (
1045 'match' => '(0D46) E005',
1046 'replace' => '\\1 E005 0D46',
1047 ),
1048 209 =>
1049 array (
1050 'match' => '(0D46) E006',
1051 'replace' => '\\1 E006 0D46',
1052 ),
1053 210 =>
1054 array (
1055 'match' => '(0D46) E007',
1056 'replace' => '\\1 E007 0D46',
1057 ),
1058 211 =>
1059 array (
1060 'match' => '(0D46) E008',
1061 'replace' => '\\1 E008 0D46',
1062 ),
1063 212 =>
1064 array (
1065 'match' => '(0D46) E009',
1066 'replace' => '\\1 E009 0D46',
1067 ),
1068 213 =>
1069 array (
1070 'match' => '(0D47) E005',
1071 'replace' => '\\1 E005 0D47',
1072 ),
1073 214 =>
1074 array (
1075 'match' => '(0D47) E006',
1076 'replace' => '\\1 E006 0D47',
1077 ),
1078 215 =>
1079 array (
1080 'match' => '(0D47) E007',
1081 'replace' => '\\1 E007 0D47',
1082 ),
1083 216 =>
1084 array (
1085 'match' => '(0D47) E008',
1086 'replace' => '\\1 E008 0D47',
1087 ),
1088 217 =>
1089 array (
1090 'match' => '(0D47) E009',
1091 'replace' => '\\1 E009 0D47',
1092 ),
1093 218 =>
1094 array (
1095 'match' => '(0D48) E005',
1096 'replace' => '\\1 E005 0D48',
1097 ),
1098 219 =>
1099 array (
1100 'match' => '(0D48) E006',
1101 'replace' => '\\1 E006 0D48',
1102 ),
1103 220 =>
1104 array (
1105 'match' => '(0D48) E007',
1106 'replace' => '\\1 E007 0D48',
1107 ),
1108 221 =>
1109 array (
1110 'match' => '(0D48) E008',
1111 'replace' => '\\1 E008 0D48',
1112 ),
1113 222 =>
1114 array (
1115 'match' => '(0D48) E009',
1116 'replace' => '\\1 E009 0D48',
1117 ),
1118 223 =>
1119 array (
1120 'match' => '0D46 E005',
1121 'replace' => 'E005',
1122 ),
1123 224 =>
1124 array (
1125 'match' => '0D46 E006',
1126 'replace' => 'E006',
1127 ),
1128 225 =>
1129 array (
1130 'match' => '0D46 E007',
1131 'replace' => 'E007',
1132 ),
1133 226 =>
1134 array (
1135 'match' => '0D46 E008',
1136 'replace' => 'E008',
1137 ),
1138 227 =>
1139 array (
1140 'match' => '0D46 E009',
1141 'replace' => 'E009',
1142 ),
1143 228 =>
1144 array (
1145 'match' => '0D47 E005',
1146 'replace' => 'E005',
1147 ),
1148 229 =>
1149 array (
1150 'match' => '0D47 E006',
1151 'replace' => 'E006',
1152 ),
1153 230 =>
1154 array (
1155 'match' => '0D47 E007',
1156 'replace' => 'E007',
1157 ),
1158 231 =>
1159 array (
1160 'match' => '0D47 E008',
1161 'replace' => 'E008',
1162 ),
1163 232 =>
1164 array (
1165 'match' => '0D47 E009',
1166 'replace' => 'E009',
1167 ),
1168 233 =>
1169 array (
1170 'match' => '0D48 E005',
1171 'replace' => 'E005',
1172 ),
1173 234 =>
1174 array (
1175 'match' => '0D48 E006',
1176 'replace' => 'E006',
1177 ),
1178 235 =>
1179 array (
1180 'match' => '0D48 E007',
1181 'replace' => 'E007',
1182 ),
1183 236 =>
1184 array (
1185 'match' => '0D48 E008',
1186 'replace' => 'E008',
1187 ),
1188 237 =>
1189 array (
1190 'match' => '0D48 E009',
1191 'replace' => 'E009',
1192 ),
1193 238 =>
1194 array (
1195 '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',
1196 'replace' => '\\1 0D4D 0D46',
1197 ),
1198 239 =>
1199 array (
1200 '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',
1201 'replace' => '\\1 0D4D 0D47',
1202 ),
1203 240 =>
1204 array (
1205 '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',
1206 'replace' => '\\1 0D4D 0D48',
1207 ),
1208 241 =>
1209 array (
1210 'match' => '0D46 0D15 (0D4D)',
1211 'replace' => '0D15 \\1',
1212 ),
1213 242 =>
1214 array (
1215 'match' => '0D46 0D16 (0D4D)',
1216 'replace' => '0D16 \\1',
1217 ),
1218 243 =>
1219 array (
1220 'match' => '0D46 0D17 (0D4D)',
1221 'replace' => '0D17 \\1',
1222 ),
1223 244 =>
1224 array (
1225 'match' => '0D46 0D18 (0D4D)',
1226 'replace' => '0D18 \\1',
1227 ),
1228 245 =>
1229 array (
1230 'match' => '0D46 0D19 (0D4D)',
1231 'replace' => '0D19 \\1',
1232 ),
1233 246 =>
1234 array (
1235 'match' => '0D46 0D1A (0D4D)',
1236 'replace' => '0D1A \\1',
1237 ),
1238 247 =>
1239 array (
1240 'match' => '0D46 0D1B (0D4D)',
1241 'replace' => '0D1B \\1',
1242 ),
1243 248 =>
1244 array (
1245 'match' => '0D46 0D1C (0D4D)',
1246 'replace' => '0D1C \\1',
1247 ),
1248 249 =>
1249 array (
1250 'match' => '0D46 0D1D (0D4D)',
1251 'replace' => '0D1D \\1',
1252 ),
1253 250 =>
1254 array (
1255 'match' => '0D46 0D1E (0D4D)',
1256 'replace' => '0D1E \\1',
1257 ),
1258 251 =>
1259 array (
1260 'match' => '0D46 0D1F (0D4D)',
1261 'replace' => '0D1F \\1',
1262 ),
1263 252 =>
1264 array (
1265 'match' => '0D46 0D20 (0D4D)',
1266 'replace' => '0D20 \\1',
1267 ),
1268 253 =>
1269 array (
1270 'match' => '0D46 0D21 (0D4D)',
1271 'replace' => '0D21 \\1',
1272 ),
1273 254 =>
1274 array (
1275 'match' => '0D46 0D22 (0D4D)',
1276 'replace' => '0D22 \\1',
1277 ),
1278 255 =>
1279 array (
1280 'match' => '0D46 0D23 (0D4D)',
1281 'replace' => '0D23 \\1',
1282 ),
1283 256 =>
1284 array (
1285 'match' => '0D46 0D24 (0D4D)',
1286 'replace' => '0D24 \\1',
1287 ),
1288 257 =>
1289 array (
1290 'match' => '0D46 0D25 (0D4D)',
1291 'replace' => '0D25 \\1',
1292 ),
1293 258 =>
1294 array (
1295 'match' => '0D46 0D26 (0D4D)',
1296 'replace' => '0D26 \\1',
1297 ),
1298 259 =>
1299 array (
1300 'match' => '0D46 0D27 (0D4D)',
1301 'replace' => '0D27 \\1',
1302 ),
1303 260 =>
1304 array (
1305 'match' => '0D46 0D28 (0D4D)',
1306 'replace' => '0D28 \\1',
1307 ),
1308 261 =>
1309 array (
1310 'match' => '0D46 0D2A (0D4D)',
1311 'replace' => '0D2A \\1',
1312 ),
1313 262 =>
1314 array (
1315 'match' => '0D46 0D2B (0D4D)',
1316 'replace' => '0D2B \\1',
1317 ),
1318 263 =>
1319 array (
1320 'match' => '0D46 0D2C (0D4D)',
1321 'replace' => '0D2C \\1',
1322 ),
1323 264 =>
1324 array (
1325 'match' => '0D46 0D2D (0D4D)',
1326 'replace' => '0D2D \\1',
1327 ),
1328 265 =>
1329 array (
1330 'match' => '0D46 0D2E (0D4D)',
1331 'replace' => '0D2E \\1',
1332 ),
1333 266 =>
1334 array (
1335 'match' => '0D46 0D2F (0D4D)',
1336 'replace' => '0D2F \\1',
1337 ),
1338 267 =>
1339 array (
1340 'match' => '0D46 0D30 (0D4D)',
1341 'replace' => '0D30 \\1',
1342 ),
1343 268 =>
1344 array (
1345 'match' => '0D46 0D31 (0D4D)',
1346 'replace' => '0D31 \\1',
1347 ),
1348 269 =>
1349 array (
1350 'match' => '0D46 0D32 (0D4D)',
1351 'replace' => '0D32 \\1',
1352 ),
1353 270 =>
1354 array (
1355 'match' => '0D46 0D33 (0D4D)',
1356 'replace' => '0D33 \\1',
1357 ),
1358 271 =>
1359 array (
1360 'match' => '0D46 0D34 (0D4D)',
1361 'replace' => '0D34 \\1',
1362 ),
1363 272 =>
1364 array (
1365 'match' => '0D46 0D35 (0D4D)',
1366 'replace' => '0D35 \\1',
1367 ),
1368 273 =>
1369 array (
1370 'match' => '0D46 0D36 (0D4D)',
1371 'replace' => '0D36 \\1',
1372 ),
1373 274 =>
1374 array (
1375 'match' => '0D46 0D37 (0D4D)',
1376 'replace' => '0D37 \\1',
1377 ),
1378 275 =>
1379 array (
1380 'match' => '0D46 0D38 (0D4D)',
1381 'replace' => '0D38 \\1',
1382 ),
1383 276 =>
1384 array (
1385 'match' => '0D46 0D39 (0D4D)',
1386 'replace' => '0D39 \\1',
1387 ),
1388 277 =>
1389 array (
1390 'match' => '0D47 0D15 (0D4D)',
1391 'replace' => '0D15 \\1',
1392 ),
1393 278 =>
1394 array (
1395 'match' => '0D47 0D16 (0D4D)',
1396 'replace' => '0D16 \\1',
1397 ),
1398 279 =>
1399 array (
1400 'match' => '0D47 0D17 (0D4D)',
1401 'replace' => '0D17 \\1',
1402 ),
1403 280 =>
1404 array (
1405 'match' => '0D47 0D18 (0D4D)',
1406 'replace' => '0D18 \\1',
1407 ),
1408 281 =>
1409 array (
1410 'match' => '0D47 0D19 (0D4D)',
1411 'replace' => '0D19 \\1',
1412 ),
1413 282 =>
1414 array (
1415 'match' => '0D47 0D1A (0D4D)',
1416 'replace' => '0D1A \\1',
1417 ),
1418 283 =>
1419 array (
1420 'match' => '0D47 0D1B (0D4D)',
1421 'replace' => '0D1B \\1',
1422 ),
1423 284 =>
1424 array (
1425 'match' => '0D47 0D1C (0D4D)',
1426 'replace' => '0D1C \\1',
1427 ),
1428 285 =>
1429 array (
1430 'match' => '0D47 0D1D (0D4D)',
1431 'replace' => '0D1D \\1',
1432 ),
1433 286 =>
1434 array (
1435 'match' => '0D47 0D1E (0D4D)',
1436 'replace' => '0D1E \\1',
1437 ),
1438 287 =>
1439 array (
1440 'match' => '0D47 0D1F (0D4D)',
1441 'replace' => '0D1F \\1',
1442 ),
1443 288 =>
1444 array (
1445 'match' => '0D47 0D20 (0D4D)',
1446 'replace' => '0D20 \\1',
1447 ),
1448 289 =>
1449 array (
1450 'match' => '0D47 0D21 (0D4D)',
1451 'replace' => '0D21 \\1',
1452 ),
1453 290 =>
1454 array (
1455 'match' => '0D47 0D22 (0D4D)',
1456 'replace' => '0D22 \\1',
1457 ),
1458 291 =>
1459 array (
1460 'match' => '0D47 0D23 (0D4D)',
1461 'replace' => '0D23 \\1',
1462 ),
1463 292 =>
1464 array (
1465 'match' => '0D47 0D24 (0D4D)',
1466 'replace' => '0D24 \\1',
1467 ),
1468 293 =>
1469 array (
1470 'match' => '0D47 0D25 (0D4D)',
1471 'replace' => '0D25 \\1',
1472 ),
1473 294 =>
1474 array (
1475 'match' => '0D47 0D26 (0D4D)',
1476 'replace' => '0D26 \\1',
1477 ),
1478 295 =>
1479 array (
1480 'match' => '0D47 0D27 (0D4D)',
1481 'replace' => '0D27 \\1',
1482 ),
1483 296 =>
1484 array (
1485 'match' => '0D47 0D28 (0D4D)',
1486 'replace' => '0D28 \\1',
1487 ),
1488 297 =>
1489 array (
1490 'match' => '0D47 0D2A (0D4D)',
1491 'replace' => '0D2A \\1',
1492 ),
1493 298 =>
1494 array (
1495 'match' => '0D47 0D2B (0D4D)',
1496 'replace' => '0D2B \\1',
1497 ),
1498 299 =>
1499 array (
1500 'match' => '0D47 0D2C (0D4D)',
1501 'replace' => '0D2C \\1',
1502 ),
1503 300 =>
1504 array (
1505 'match' => '0D47 0D2D (0D4D)',
1506 'replace' => '0D2D \\1',
1507 ),
1508 301 =>
1509 array (
1510 'match' => '0D47 0D2E (0D4D)',
1511 'replace' => '0D2E \\1',
1512 ),
1513 302 =>
1514 array (
1515 'match' => '0D47 0D2F (0D4D)',
1516 'replace' => '0D2F \\1',
1517 ),
1518 303 =>
1519 array (
1520 'match' => '0D47 0D30 (0D4D)',
1521 'replace' => '0D30 \\1',
1522 ),
1523 304 =>
1524 array (
1525 'match' => '0D47 0D31 (0D4D)',
1526 'replace' => '0D31 \\1',
1527 ),
1528 305 =>
1529 array (
1530 'match' => '0D47 0D32 (0D4D)',
1531 'replace' => '0D32 \\1',
1532 ),
1533 306 =>
1534 array (
1535 'match' => '0D47 0D33 (0D4D)',
1536 'replace' => '0D33 \\1',
1537 ),
1538 307 =>
1539 array (
1540 'match' => '0D47 0D34 (0D4D)',
1541 'replace' => '0D34 \\1',
1542 ),
1543 308 =>
1544 array (
1545 'match' => '0D47 0D35 (0D4D)',
1546 'replace' => '0D35 \\1',
1547 ),
1548 309 =>
1549 array (
1550 'match' => '0D47 0D36 (0D4D)',
1551 'replace' => '0D36 \\1',
1552 ),
1553 310 =>
1554 array (
1555 'match' => '0D47 0D37 (0D4D)',
1556 'replace' => '0D37 \\1',
1557 ),
1558 311 =>
1559 array (
1560 'match' => '0D47 0D38 (0D4D)',
1561 'replace' => '0D38 \\1',
1562 ),
1563 312 =>
1564 array (
1565 'match' => '0D47 0D39 (0D4D)',
1566 'replace' => '0D39 \\1',
1567 ),
1568 313 =>
1569 array (
1570 'match' => '0D48 0D15 (0D4D)',
1571 'replace' => '0D15 \\1',
1572 ),
1573 314 =>
1574 array (
1575 'match' => '0D48 0D16 (0D4D)',
1576 'replace' => '0D16 \\1',
1577 ),
1578 315 =>
1579 array (
1580 'match' => '0D48 0D17 (0D4D)',
1581 'replace' => '0D17 \\1',
1582 ),
1583 316 =>
1584 array (
1585 'match' => '0D48 0D18 (0D4D)',
1586 'replace' => '0D18 \\1',
1587 ),
1588 317 =>
1589 array (
1590 'match' => '0D48 0D19 (0D4D)',
1591 'replace' => '0D19 \\1',
1592 ),
1593 318 =>
1594 array (
1595 'match' => '0D48 0D1A (0D4D)',
1596 'replace' => '0D1A \\1',
1597 ),
1598 319 =>
1599 array (
1600 'match' => '0D48 0D1B (0D4D)',
1601 'replace' => '0D1B \\1',
1602 ),
1603 320 =>
1604 array (
1605 'match' => '0D48 0D1C (0D4D)',
1606 'replace' => '0D1C \\1',
1607 ),
1608 321 =>
1609 array (
1610 'match' => '0D48 0D1D (0D4D)',
1611 'replace' => '0D1D \\1',
1612 ),
1613 322 =>
1614 array (
1615 'match' => '0D48 0D1E (0D4D)',
1616 'replace' => '0D1E \\1',
1617 ),
1618 323 =>
1619 array (
1620 'match' => '0D48 0D1F (0D4D)',
1621 'replace' => '0D1F \\1',
1622 ),
1623 324 =>
1624 array (
1625 'match' => '0D48 0D20 (0D4D)',
1626 'replace' => '0D20 \\1',
1627 ),
1628 325 =>
1629 array (
1630 'match' => '0D48 0D21 (0D4D)',
1631 'replace' => '0D21 \\1',
1632 ),
1633 326 =>
1634 array (
1635 'match' => '0D48 0D22 (0D4D)',
1636 'replace' => '0D22 \\1',
1637 ),
1638 327 =>
1639 array (
1640 'match' => '0D48 0D23 (0D4D)',
1641 'replace' => '0D23 \\1',
1642 ),
1643 328 =>
1644 array (
1645 'match' => '0D48 0D24 (0D4D)',
1646 'replace' => '0D24 \\1',
1647 ),
1648 329 =>
1649 array (
1650 'match' => '0D48 0D25 (0D4D)',
1651 'replace' => '0D25 \\1',
1652 ),
1653 330 =>
1654 array (
1655 'match' => '0D48 0D26 (0D4D)',
1656 'replace' => '0D26 \\1',
1657 ),
1658 331 =>
1659 array (
1660 'match' => '0D48 0D27 (0D4D)',
1661 'replace' => '0D27 \\1',
1662 ),
1663 332 =>
1664 array (
1665 'match' => '0D48 0D28 (0D4D)',
1666 'replace' => '0D28 \\1',
1667 ),
1668 333 =>
1669 array (
1670 'match' => '0D48 0D2A (0D4D)',
1671 'replace' => '0D2A \\1',
1672 ),
1673 334 =>
1674 array (
1675 'match' => '0D48 0D2B (0D4D)',
1676 'replace' => '0D2B \\1',
1677 ),
1678 335 =>
1679 array (
1680 'match' => '0D48 0D2C (0D4D)',
1681 'replace' => '0D2C \\1',
1682 ),
1683 336 =>
1684 array (
1685 'match' => '0D48 0D2D (0D4D)',
1686 'replace' => '0D2D \\1',
1687 ),
1688 337 =>
1689 array (
1690 'match' => '0D48 0D2E (0D4D)',
1691 'replace' => '0D2E \\1',
1692 ),
1693 338 =>
1694 array (
1695 'match' => '0D48 0D2F (0D4D)',
1696 'replace' => '0D2F \\1',
1697 ),
1698 339 =>
1699 array (
1700 'match' => '0D48 0D30 (0D4D)',
1701 'replace' => '0D30 \\1',
1702 ),
1703 340 =>
1704 array (
1705 'match' => '0D48 0D31 (0D4D)',
1706 'replace' => '0D31 \\1',
1707 ),
1708 341 =>
1709 array (
1710 'match' => '0D48 0D32 (0D4D)',
1711 'replace' => '0D32 \\1',
1712 ),
1713 342 =>
1714 array (
1715 'match' => '0D48 0D33 (0D4D)',
1716 'replace' => '0D33 \\1',
1717 ),
1718 343 =>
1719 array (
1720 'match' => '0D48 0D34 (0D4D)',
1721 'replace' => '0D34 \\1',
1722 ),
1723 344 =>
1724 array (
1725 'match' => '0D48 0D35 (0D4D)',
1726 'replace' => '0D35 \\1',
1727 ),
1728 345 =>
1729 array (
1730 'match' => '0D48 0D36 (0D4D)',
1731 'replace' => '0D36 \\1',
1732 ),
1733 346 =>
1734 array (
1735 'match' => '0D48 0D37 (0D4D)',
1736 'replace' => '0D37 \\1',
1737 ),
1738 347 =>
1739 array (
1740 'match' => '0D48 0D38 (0D4D)',
1741 'replace' => '0D38 \\1',
1742 ),
1743 348 =>
1744 array (
1745 'match' => '0D48 0D39 (0D4D)',
1746 'replace' => '0D39 \\1',
1747 ),
1748 349 =>
1749 array (
1750 'match' => '0D41 0D4D',
1751 'replace' => 'E003',
1752 ),
1753 350 =>
1754 array (
1755 'match' => '007E',
1756 'replace' => '0D4D',
1757 ),
1758 351 =>
1759 array (
1760 'match' => '2018',
1761 'replace' => '0D4D',
1762 ),
1763 352 =>
1764 array (
1765 'match' => '2019',
1766 'replace' => '0D4D',
1767 ),
1768);
1769?> \ 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
index b490e2b0..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/ind_or_1_001.volt.php
+++ /dev/null
@@ -1,2149 +0,0 @@
1<?php
2 $volt = array (
3 0 =>
4 array (
5 'match' => '0B4D 200C',
6 'replace' => '2018',
7 ),
8 1 =>
9 array (
10 'match' => '0B15 0B4D 0B37',
11 'replace' => 'E003',
12 ),
13 2 =>
14 array (
15 'match' => '0B1C 0B4D 0B1E',
16 'replace' => 'E004',
17 ),
18 3 =>
19 array (
20 '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',
21 'replace' => '\\1 E069',
22 ),
23 4 =>
24 array (
25 'match' => '((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C)) 0B30 0B4D',
26 'replace' => '\\1 E069',
27 ),
28 5 =>
29 array (
30 'match' => '((0B3E|0B40|E044|0B57|E068|E074|E08B|E08F)) 0B30 0B4D',
31 'replace' => '\\1 E069',
32 ),
33 6 =>
34 array (
35 'match' => '(0B3C) 0B30 0B4D',
36 'replace' => '\\1 E069',
37 ),
38 7 =>
39 array (
40 'match' => '(25CC) 0B30 0B4D',
41 'replace' => '\\1 E069',
42 ),
43 8 =>
44 array (
45 'match' => '((0B15|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B20|0B21|0B22|0B24|0B26|0B28|0B2C|0B2D|0B32|0B33|0B35|0B39|25CC)) E069',
46 'replace' => '\\1 E06B',
47 ),
48 9 =>
49 array (
50 'match' => '((0B15|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B20|0B21|0B22|0B24|0B26|0B28|0B2C|0B2D|0B32|0B33|0B35|0B39|25CC) 0B3C) E069',
51 'replace' => '\\1 E06B',
52 ),
53 10 =>
54 array (
55 'match' => '0B38 0B4D 0B24 0B4D 0B30',
56 'replace' => 'E01B',
57 ),
58 11 =>
59 array (
60 'match' => '0B28 0B4D 0B24 0B4D 0B30',
61 'replace' => 'E01D',
62 ),
63 12 =>
64 array (
65 'match' => '0B28 0B4D 0B24 0B4D 0B30',
66 'replace' => 'E01C',
67 ),
68 13 =>
69 array (
70 'match' => '0B56 E069',
71 'replace' => 'E070',
72 ),
73 14 =>
74 array (
75 'match' => '0B57 E069',
76 'replace' => 'E074',
77 ),
78 15 =>
79 array (
80 'match' => '0B3F E069',
81 'replace' => 'E06D',
82 ),
83 16 =>
84 array (
85 'match' => '0B40 E069',
86 'replace' => 'E14D',
87 ),
88 17 =>
89 array (
90 'match' => '0B24 0B4D 0B17 0B4D 0B27',
91 'replace' => 'E036',
92 ),
93 18 =>
94 array (
95 'match' => '0B24 0B4D 0B38 0B4D 0B28',
96 'replace' => 'E030',
97 ),
98 19 =>
99 array (
100 'match' => '0B19 0B4D 0B15',
101 'replace' => 'E005',
102 ),
103 20 =>
104 array (
105 'match' => '0B19 0B4D 0B16',
106 'replace' => 'E006',
107 ),
108 21 =>
109 array (
110 'match' => '0B19 0B4D 0B17',
111 'replace' => 'E007',
112 ),
113 22 =>
114 array (
115 'match' => '0B19 0B4D 0B18',
116 'replace' => 'E008',
117 ),
118 23 =>
119 array (
120 'match' => '0B1A 0B4D 0B1A',
121 'replace' => 'E009',
122 ),
123 24 =>
124 array (
125 'match' => '0B1F 0B4D 0B1F',
126 'replace' => 'E00A',
127 ),
128 25 =>
129 array (
130 'match' => '0B24 0B4D 0B24',
131 'replace' => 'E00B',
132 ),
133 26 =>
134 array (
135 'match' => '0B26 0B4D 0B27',
136 'replace' => 'E00C',
137 ),
138 27 =>
139 array (
140 'match' => '0B26 0B4D 0B26',
141 'replace' => 'E00D',
142 ),
143 28 =>
144 array (
145 'match' => '0B23 0B4D 0B23',
146 'replace' => 'E00F',
147 ),
148 29 =>
149 array (
150 'match' => '0B1E 0B4D 0B1A',
151 'replace' => 'E011',
152 ),
153 30 =>
154 array (
155 'match' => '0B1E 0B4D 0B1D',
156 'replace' => 'E012',
157 ),
158 31 =>
159 array (
160 'match' => '0B1E 0B4D 0B1C',
161 'replace' => 'E013',
162 ),
163 32 =>
164 array (
165 'match' => '0B26 0B4D 0B2D',
166 'replace' => 'E014',
167 ),
168 33 =>
169 array (
170 'match' => '0B27 0B4D 0B27',
171 'replace' => 'E015',
172 ),
173 34 =>
174 array (
175 'match' => '0B2C 0B4D 0B26',
176 'replace' => 'E016',
177 ),
178 35 =>
179 array (
180 'match' => '0B28 0B4D 0B26',
181 'replace' => 'E017',
182 ),
183 36 =>
184 array (
185 'match' => '0B28 0B4D 0B27',
186 'replace' => 'E018',
187 ),
188 37 =>
189 array (
190 'match' => '0B2E 0B4D 0B2B',
191 'replace' => 'E019',
192 ),
193 38 =>
194 array (
195 'match' => '0B2E 0B4D 0B2A',
196 'replace' => 'E01A',
197 ),
198 39 =>
199 array (
200 'match' => '0B37 0B4D 0B23',
201 'replace' => 'E010',
202 ),
203 40 =>
204 array (
205 'match' => '0B39 0B4D 0B28',
206 'replace' => 'E01E',
207 ),
208 41 =>
209 array (
210 'match' => '0B39 0B4D 0B35',
211 'replace' => 'E01F',
212 ),
213 42 =>
214 array (
215 'match' => '0B39 0B4D 0B2E',
216 'replace' => 'E020',
217 ),
218 43 =>
219 array (
220 'match' => '0B1A 0B4D 0B1B',
221 'replace' => 'E021',
222 ),
223 44 =>
224 array (
225 'match' => '0B1E 0B4D 0B1B',
226 'replace' => 'E023',
227 ),
228 45 =>
229 array (
230 'match' => '0B2E 0B4D 0B2D',
231 'replace' => 'E024',
232 ),
233 46 =>
234 array (
235 'match' => '0B28 0B4D 0B24',
236 'replace' => 'E025',
237 ),
238 47 =>
239 array (
240 'match' => '0B38 0B4D 0B24',
241 'replace' => 'E026',
242 ),
243 48 =>
244 array (
245 'match' => '0B2A 0B4D 0B24',
246 'replace' => 'E027',
247 ),
248 49 =>
249 array (
250 'match' => '0B15 0B4D 0B24',
251 'replace' => 'E028',
252 ),
253 50 =>
254 array (
255 'match' => '0B23 0B4D 0B21',
256 'replace' => 'E029',
257 ),
258 51 =>
259 array (
260 'match' => '0B24 0B4D 0B15',
261 'replace' => 'E02A',
262 ),
263 52 =>
264 array (
265 'match' => '0B24 0B4D 0B38',
266 'replace' => 'E02B',
267 ),
268 53 =>
269 array (
270 'match' => '0B24 0B4D 0B2A',
271 'replace' => 'E02C',
272 ),
273 54 =>
274 array (
275 'match' => '0B23 0B4D 0B22',
276 'replace' => 'E031',
277 ),
278 55 =>
279 array (
280 'match' => '0B36 0B4D 0B1B',
281 'replace' => 'E032',
282 ),
283 56 =>
284 array (
285 'match' => '0B24 0B4D 0B28',
286 'replace' => 'E033',
287 ),
288 57 =>
289 array (
290 'match' => '0B24 0B4D 0B2E',
291 'replace' => 'E034',
292 ),
293 58 =>
294 array (
295 'match' => '0B17 0B4D 0B27',
296 'replace' => 'E035',
297 ),
298 59 =>
299 array (
300 'match' => '0B24 0B4D 0B2B',
301 'replace' => 'E037',
302 ),
303 60 =>
304 array (
305 'match' => '0B2E 0B4D 0B2E',
306 'replace' => 'E14A',
307 ),
308 61 =>
309 array (
310 'match' => '0B21 0B3C',
311 'replace' => '0B5C',
312 ),
313 62 =>
314 array (
315 'match' => '0B22 0B3C',
316 'replace' => '0B5D',
317 ),
318 63 =>
319 array (
320 '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',
321 'replace' => '\\1 2019',
322 ),
323 64 =>
324 array (
325 'match' => '((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C)) 0B4D',
326 'replace' => '\\1 2019',
327 ),
328 65 =>
329 array (
330 'match' => '(E069) 0B4D',
331 'replace' => '\\1 2019',
332 ),
333 66 =>
334 array (
335 'match' => '((0B41|E045|0B42|0B43|E053|E056|E059|0B3C)) 0B4D',
336 'replace' => '\\1 2019',
337 ),
338 67 =>
339 array (
340 'match' => '(200D) 0B4D',
341 'replace' => '\\1 2019',
342 ),
343 68 =>
344 array (
345 'match' => '(25CC) 0B4D',
346 'replace' => '\\1 2019',
347 ),
348 69 =>
349 array (
350 'match' => '(0020) 0B4D',
351 'replace' => '\\1 2019',
352 ),
353 70 =>
354 array (
355 'match' => '200D 2019',
356 'replace' => '2019',
357 ),
358 71 =>
359 array (
360 'match' => '2019 0B30',
361 'replace' => 'E075',
362 ),
363 72 =>
364 array (
365 'match' => '2019 0B5F',
366 'replace' => 'E077',
367 ),
368 73 =>
369 array (
370 'match' => '2019 0B35',
371 'replace' => 'E078',
372 ),
373 74 =>
374 array (
375 'match' => '2019 0B32',
376 'replace' => 'E110',
377 ),
378 75 =>
379 array (
380 'match' => '2019 0B33',
381 'replace' => 'E111',
382 ),
383 76 =>
384 array (
385 'match' => '2019 0B2E',
386 'replace' => 'E11C',
387 ),
388 77 =>
389 array (
390 'match' => '2019 0B15',
391 'replace' => 'E0F6',
392 ),
393 78 =>
394 array (
395 'match' => '2019 0B16',
396 'replace' => 'E0F7',
397 ),
398 79 =>
399 array (
400 'match' => '2019 0B17',
401 'replace' => 'E0F8',
402 ),
403 80 =>
404 array (
405 'match' => '2019 0B18',
406 'replace' => 'E0F9',
407 ),
408 81 =>
409 array (
410 'match' => '2019 0B19',
411 'replace' => 'E0FA',
412 ),
413 82 =>
414 array (
415 'match' => '2019 0B1A',
416 'replace' => 'E0FB',
417 ),
418 83 =>
419 array (
420 'match' => '2019 0B1B',
421 'replace' => 'E0FC',
422 ),
423 84 =>
424 array (
425 'match' => '2019 0B1C',
426 'replace' => 'E0FD',
427 ),
428 85 =>
429 array (
430 'match' => '2019 0B1D',
431 'replace' => 'E0FE',
432 ),
433 86 =>
434 array (
435 'match' => '2019 0B1E',
436 'replace' => 'E0FF',
437 ),
438 87 =>
439 array (
440 'match' => '2019 0B1F',
441 'replace' => 'E100',
442 ),
443 88 =>
444 array (
445 'match' => '2019 0B20',
446 'replace' => 'E101',
447 ),
448 89 =>
449 array (
450 'match' => '2019 0B21',
451 'replace' => 'E102',
452 ),
453 90 =>
454 array (
455 'match' => '2019 0B22',
456 'replace' => 'E103',
457 ),
458 91 =>
459 array (
460 'match' => '2019 0B23',
461 'replace' => 'E104',
462 ),
463 92 =>
464 array (
465 'match' => '2019 0B24',
466 'replace' => 'E105',
467 ),
468 93 =>
469 array (
470 'match' => '2019 0B25',
471 'replace' => 'E106',
472 ),
473 94 =>
474 array (
475 'match' => '2019 0B26',
476 'replace' => 'E107',
477 ),
478 95 =>
479 array (
480 'match' => '2019 0B27',
481 'replace' => 'E108',
482 ),
483 96 =>
484 array (
485 'match' => '2019 0B28',
486 'replace' => 'E109',
487 ),
488 97 =>
489 array (
490 'match' => '2019 0B2A',
491 'replace' => 'E10A',
492 ),
493 98 =>
494 array (
495 'match' => '2019 0B2B',
496 'replace' => 'E10B',
497 ),
498 99 =>
499 array (
500 'match' => '2019 0B2C',
501 'replace' => 'E10C',
502 ),
503 100 =>
504 array (
505 'match' => '2019 0B2D',
506 'replace' => 'E10D',
507 ),
508 101 =>
509 array (
510 'match' => '2019 0B2E',
511 'replace' => 'E10E',
512 ),
513 102 =>
514 array (
515 'match' => '2019 0B2F',
516 'replace' => 'E10F',
517 ),
518 103 =>
519 array (
520 'match' => '2019 0B32',
521 'replace' => 'E110',
522 ),
523 104 =>
524 array (
525 'match' => '2019 0B33',
526 'replace' => 'E111',
527 ),
528 105 =>
529 array (
530 'match' => '2019 0B35',
531 'replace' => 'E112',
532 ),
533 106 =>
534 array (
535 'match' => '2019 0B36',
536 'replace' => 'E113',
537 ),
538 107 =>
539 array (
540 'match' => '2019 0B37',
541 'replace' => 'E114',
542 ),
543 108 =>
544 array (
545 'match' => '2019 0B38',
546 'replace' => 'E115',
547 ),
548 109 =>
549 array (
550 'match' => '2019 0B39',
551 'replace' => 'E116',
552 ),
553 110 =>
554 array (
555 'match' => '2019 E003',
556 'replace' => 'E119',
557 ),
558 111 =>
559 array (
560 'match' => '2019 E004',
561 'replace' => 'E11A',
562 ),
563 112 =>
564 array (
565 'match' => '2019 0B35',
566 'replace' => 'E078',
567 ),
568 113 =>
569 array (
570 'match' => '2019 0B71',
571 'replace' => 'E078',
572 ),
573 114 =>
574 array (
575 '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))',
576 'replace' => 'E090 \\1',
577 ),
578 115 =>
579 array (
580 '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))',
581 'replace' => 'E091 \\1',
582 ),
583 116 =>
584 array (
585 '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))',
586 'replace' => 'E092 \\1',
587 ),
588 117 =>
589 array (
590 '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))',
591 'replace' => 'E093 \\1',
592 ),
593 118 =>
594 array (
595 '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))',
596 'replace' => 'E094 \\1',
597 ),
598 119 =>
599 array (
600 '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))',
601 'replace' => 'E095 \\1',
602 ),
603 120 =>
604 array (
605 '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))',
606 'replace' => 'E096 \\1',
607 ),
608 121 =>
609 array (
610 '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))',
611 'replace' => 'E097 \\1',
612 ),
613 122 =>
614 array (
615 '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))',
616 'replace' => 'E098 \\1',
617 ),
618 123 =>
619 array (
620 '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))',
621 'replace' => 'E099 \\1',
622 ),
623 124 =>
624 array (
625 '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))',
626 'replace' => 'E09A \\1',
627 ),
628 125 =>
629 array (
630 '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))',
631 'replace' => 'E09B \\1',
632 ),
633 126 =>
634 array (
635 '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))',
636 'replace' => 'E09C \\1',
637 ),
638 127 =>
639 array (
640 '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))',
641 'replace' => 'E09D \\1',
642 ),
643 128 =>
644 array (
645 '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))',
646 'replace' => 'E09E \\1',
647 ),
648 129 =>
649 array (
650 '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))',
651 'replace' => 'E09F \\1',
652 ),
653 130 =>
654 array (
655 '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))',
656 'replace' => 'E0A0 \\1',
657 ),
658 131 =>
659 array (
660 '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))',
661 'replace' => 'E0A1 \\1',
662 ),
663 132 =>
664 array (
665 '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))',
666 'replace' => 'E0A2 \\1',
667 ),
668 133 =>
669 array (
670 '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))',
671 'replace' => 'E0A3 \\1',
672 ),
673 134 =>
674 array (
675 '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))',
676 'replace' => 'E0A4 \\1',
677 ),
678 135 =>
679 array (
680 '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))',
681 'replace' => 'E0A5 \\1',
682 ),
683 136 =>
684 array (
685 '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))',
686 'replace' => 'E0A6 \\1',
687 ),
688 137 =>
689 array (
690 '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))',
691 'replace' => 'E0A7 \\1',
692 ),
693 138 =>
694 array (
695 '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))',
696 'replace' => 'E0A8 \\1',
697 ),
698 139 =>
699 array (
700 '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))',
701 'replace' => 'E0A9 \\1',
702 ),
703 140 =>
704 array (
705 '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))',
706 'replace' => 'E0AA \\1',
707 ),
708 141 =>
709 array (
710 '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))',
711 'replace' => 'E0AB \\1',
712 ),
713 142 =>
714 array (
715 '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))',
716 'replace' => 'E0AC \\1',
717 ),
718 143 =>
719 array (
720 '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))',
721 'replace' => 'E0AD \\1',
722 ),
723 144 =>
724 array (
725 '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))',
726 'replace' => 'E0AE \\1',
727 ),
728 145 =>
729 array (
730 '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))',
731 'replace' => 'E0AF \\1',
732 ),
733 146 =>
734 array (
735 '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))',
736 'replace' => 'E0B0 \\1',
737 ),
738 147 =>
739 array (
740 '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))',
741 'replace' => 'E0B1 \\1',
742 ),
743 148 =>
744 array (
745 '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))',
746 'replace' => 'E0B2 \\1',
747 ),
748 149 =>
749 array (
750 '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))',
751 'replace' => 'E090 \\1',
752 ),
753 150 =>
754 array (
755 '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))',
756 'replace' => 'E091 \\1',
757 ),
758 151 =>
759 array (
760 '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))',
761 'replace' => 'E092 \\1',
762 ),
763 152 =>
764 array (
765 '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))',
766 'replace' => 'E093 \\1',
767 ),
768 153 =>
769 array (
770 '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))',
771 'replace' => 'E094 \\1',
772 ),
773 154 =>
774 array (
775 '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))',
776 'replace' => 'E095 \\1',
777 ),
778 155 =>
779 array (
780 '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))',
781 'replace' => 'E096 \\1',
782 ),
783 156 =>
784 array (
785 '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))',
786 'replace' => 'E097 \\1',
787 ),
788 157 =>
789 array (
790 '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))',
791 'replace' => 'E098 \\1',
792 ),
793 158 =>
794 array (
795 '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))',
796 'replace' => 'E099 \\1',
797 ),
798 159 =>
799 array (
800 '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))',
801 'replace' => 'E09A \\1',
802 ),
803 160 =>
804 array (
805 '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))',
806 'replace' => 'E09B \\1',
807 ),
808 161 =>
809 array (
810 '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))',
811 'replace' => 'E09C \\1',
812 ),
813 162 =>
814 array (
815 '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))',
816 'replace' => 'E09D \\1',
817 ),
818 163 =>
819 array (
820 '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))',
821 'replace' => 'E09E \\1',
822 ),
823 164 =>
824 array (
825 '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))',
826 'replace' => 'E09F \\1',
827 ),
828 165 =>
829 array (
830 '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))',
831 'replace' => 'E0A0 \\1',
832 ),
833 166 =>
834 array (
835 '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))',
836 'replace' => 'E0A1 \\1',
837 ),
838 167 =>
839 array (
840 '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))',
841 'replace' => 'E0A2 \\1',
842 ),
843 168 =>
844 array (
845 '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))',
846 'replace' => 'E0A3 \\1',
847 ),
848 169 =>
849 array (
850 '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))',
851 'replace' => 'E0A4 \\1',
852 ),
853 170 =>
854 array (
855 '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))',
856 'replace' => 'E0A5 \\1',
857 ),
858 171 =>
859 array (
860 '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))',
861 'replace' => 'E0A6 \\1',
862 ),
863 172 =>
864 array (
865 '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))',
866 'replace' => 'E0A7 \\1',
867 ),
868 173 =>
869 array (
870 '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))',
871 'replace' => 'E0A8 \\1',
872 ),
873 174 =>
874 array (
875 '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))',
876 'replace' => 'E0A9 \\1',
877 ),
878 175 =>
879 array (
880 '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))',
881 'replace' => 'E0AA \\1',
882 ),
883 176 =>
884 array (
885 '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))',
886 'replace' => 'E0AB \\1',
887 ),
888 177 =>
889 array (
890 '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))',
891 'replace' => 'E0AC \\1',
892 ),
893 178 =>
894 array (
895 '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))',
896 'replace' => 'E0AD \\1',
897 ),
898 179 =>
899 array (
900 '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))',
901 'replace' => 'E0AE \\1',
902 ),
903 180 =>
904 array (
905 '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))',
906 'replace' => 'E0AF \\1',
907 ),
908 181 =>
909 array (
910 '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))',
911 'replace' => 'E0B0 \\1',
912 ),
913 182 =>
914 array (
915 '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))',
916 'replace' => 'E0B1 \\1',
917 ),
918 183 =>
919 array (
920 '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))',
921 'replace' => 'E0B2 \\1',
922 ),
923 184 =>
924 array (
925 '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))',
926 'replace' => 'E090 \\1',
927 ),
928 185 =>
929 array (
930 '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))',
931 'replace' => 'E091 \\1',
932 ),
933 186 =>
934 array (
935 '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))',
936 'replace' => 'E092 \\1',
937 ),
938 187 =>
939 array (
940 '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))',
941 'replace' => 'E093 \\1',
942 ),
943 188 =>
944 array (
945 '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))',
946 'replace' => 'E094 \\1',
947 ),
948 189 =>
949 array (
950 '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))',
951 'replace' => 'E095 \\1',
952 ),
953 190 =>
954 array (
955 '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))',
956 'replace' => 'E096 \\1',
957 ),
958 191 =>
959 array (
960 '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))',
961 'replace' => 'E097 \\1',
962 ),
963 192 =>
964 array (
965 '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))',
966 'replace' => 'E098 \\1',
967 ),
968 193 =>
969 array (
970 '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))',
971 'replace' => 'E099 \\1',
972 ),
973 194 =>
974 array (
975 '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))',
976 'replace' => 'E09A \\1',
977 ),
978 195 =>
979 array (
980 '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))',
981 'replace' => 'E09B \\1',
982 ),
983 196 =>
984 array (
985 '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))',
986 'replace' => 'E09C \\1',
987 ),
988 197 =>
989 array (
990 '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))',
991 'replace' => 'E09D \\1',
992 ),
993 198 =>
994 array (
995 '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))',
996 'replace' => 'E09E \\1',
997 ),
998 199 =>
999 array (
1000 '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))',
1001 'replace' => 'E09F \\1',
1002 ),
1003 200 =>
1004 array (
1005 '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))',
1006 'replace' => 'E0A0 \\1',
1007 ),
1008 201 =>
1009 array (
1010 '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))',
1011 'replace' => 'E0A1 \\1',
1012 ),
1013 202 =>
1014 array (
1015 '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))',
1016 'replace' => 'E0A2 \\1',
1017 ),
1018 203 =>
1019 array (
1020 '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))',
1021 'replace' => 'E0A3 \\1',
1022 ),
1023 204 =>
1024 array (
1025 '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))',
1026 'replace' => 'E0A4 \\1',
1027 ),
1028 205 =>
1029 array (
1030 '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))',
1031 'replace' => 'E0A5 \\1',
1032 ),
1033 206 =>
1034 array (
1035 '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))',
1036 'replace' => 'E0A6 \\1',
1037 ),
1038 207 =>
1039 array (
1040 '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))',
1041 'replace' => 'E0A7 \\1',
1042 ),
1043 208 =>
1044 array (
1045 '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))',
1046 'replace' => 'E0A8 \\1',
1047 ),
1048 209 =>
1049 array (
1050 '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))',
1051 'replace' => 'E0A9 \\1',
1052 ),
1053 210 =>
1054 array (
1055 '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))',
1056 'replace' => 'E0AA \\1',
1057 ),
1058 211 =>
1059 array (
1060 '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))',
1061 'replace' => 'E0AB \\1',
1062 ),
1063 212 =>
1064 array (
1065 '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))',
1066 'replace' => 'E0AC \\1',
1067 ),
1068 213 =>
1069 array (
1070 '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))',
1071 'replace' => 'E0AD \\1',
1072 ),
1073 214 =>
1074 array (
1075 '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))',
1076 'replace' => 'E0AE \\1',
1077 ),
1078 215 =>
1079 array (
1080 '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))',
1081 'replace' => 'E0AF \\1',
1082 ),
1083 216 =>
1084 array (
1085 '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))',
1086 'replace' => 'E0B0 \\1',
1087 ),
1088 217 =>
1089 array (
1090 '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))',
1091 'replace' => 'E0B1 \\1',
1092 ),
1093 218 =>
1094 array (
1095 '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))',
1096 'replace' => 'E0B2 \\1',
1097 ),
1098 219 =>
1099 array (
1100 '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))',
1101 'replace' => 'E090 \\1',
1102 ),
1103 220 =>
1104 array (
1105 '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))',
1106 'replace' => 'E091 \\1',
1107 ),
1108 221 =>
1109 array (
1110 '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))',
1111 'replace' => 'E092 \\1',
1112 ),
1113 222 =>
1114 array (
1115 '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))',
1116 'replace' => 'E093 \\1',
1117 ),
1118 223 =>
1119 array (
1120 '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))',
1121 'replace' => 'E094 \\1',
1122 ),
1123 224 =>
1124 array (
1125 '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))',
1126 'replace' => 'E095 \\1',
1127 ),
1128 225 =>
1129 array (
1130 '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))',
1131 'replace' => 'E096 \\1',
1132 ),
1133 226 =>
1134 array (
1135 '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))',
1136 'replace' => 'E097 \\1',
1137 ),
1138 227 =>
1139 array (
1140 '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))',
1141 'replace' => 'E098 \\1',
1142 ),
1143 228 =>
1144 array (
1145 '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))',
1146 'replace' => 'E099 \\1',
1147 ),
1148 229 =>
1149 array (
1150 '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))',
1151 'replace' => 'E09A \\1',
1152 ),
1153 230 =>
1154 array (
1155 '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))',
1156 'replace' => 'E09B \\1',
1157 ),
1158 231 =>
1159 array (
1160 '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))',
1161 'replace' => 'E09C \\1',
1162 ),
1163 232 =>
1164 array (
1165 '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))',
1166 'replace' => 'E09D \\1',
1167 ),
1168 233 =>
1169 array (
1170 '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))',
1171 'replace' => 'E09E \\1',
1172 ),
1173 234 =>
1174 array (
1175 '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))',
1176 'replace' => 'E09F \\1',
1177 ),
1178 235 =>
1179 array (
1180 '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))',
1181 'replace' => 'E0A0 \\1',
1182 ),
1183 236 =>
1184 array (
1185 '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))',
1186 'replace' => 'E0A1 \\1',
1187 ),
1188 237 =>
1189 array (
1190 '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))',
1191 'replace' => 'E0A2 \\1',
1192 ),
1193 238 =>
1194 array (
1195 '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))',
1196 'replace' => 'E0A3 \\1',
1197 ),
1198 239 =>
1199 array (
1200 '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))',
1201 'replace' => 'E0A4 \\1',
1202 ),
1203 240 =>
1204 array (
1205 '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))',
1206 'replace' => 'E0A5 \\1',
1207 ),
1208 241 =>
1209 array (
1210 '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))',
1211 'replace' => 'E0A6 \\1',
1212 ),
1213 242 =>
1214 array (
1215 '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))',
1216 'replace' => 'E0A7 \\1',
1217 ),
1218 243 =>
1219 array (
1220 '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))',
1221 'replace' => 'E0A8 \\1',
1222 ),
1223 244 =>
1224 array (
1225 '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))',
1226 'replace' => 'E0A9 \\1',
1227 ),
1228 245 =>
1229 array (
1230 '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))',
1231 'replace' => 'E0AA \\1',
1232 ),
1233 246 =>
1234 array (
1235 '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))',
1236 'replace' => 'E0AB \\1',
1237 ),
1238 247 =>
1239 array (
1240 '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))',
1241 'replace' => 'E0AC \\1',
1242 ),
1243 248 =>
1244 array (
1245 '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))',
1246 'replace' => 'E0AD \\1',
1247 ),
1248 249 =>
1249 array (
1250 '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))',
1251 'replace' => 'E0AE \\1',
1252 ),
1253 250 =>
1254 array (
1255 '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))',
1256 'replace' => 'E0AF \\1',
1257 ),
1258 251 =>
1259 array (
1260 '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))',
1261 'replace' => 'E0B0 \\1',
1262 ),
1263 252 =>
1264 array (
1265 '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))',
1266 'replace' => 'E0B1 \\1',
1267 ),
1268 253 =>
1269 array (
1270 '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))',
1271 'replace' => 'E0B2 \\1',
1272 ),
1273 254 =>
1274 array (
1275 'match' => '0B25 0B3F',
1276 'replace' => 'E02D',
1277 ),
1278 255 =>
1279 array (
1280 'match' => '0B27 0B3F',
1281 'replace' => 'E02E',
1282 ),
1283 256 =>
1284 array (
1285 'match' => '0B16 0B3F',
1286 'replace' => 'E02F',
1287 ),
1288 257 =>
1289 array (
1290 'match' => '(0B3C) 0B4D',
1291 'replace' => '\\1 E063',
1292 ),
1293 258 =>
1294 array (
1295 'match' => '(0B3C) E075',
1296 'replace' => '\\1 E076',
1297 ),
1298 259 =>
1299 array (
1300 'match' => '2018',
1301 'replace' => '0B4D',
1302 ),
1303 260 =>
1304 array (
1305 'match' => '2019',
1306 'replace' => '0B4D',
1307 ),
1308 261 =>
1309 array (
1310 'match' => '((0B16|0B17|0B18|0B1F|0B23|0B25|0B27|0B2A|0B2B|0B2E|0B2F|0B37|0B38)) 0B01',
1311 'replace' => '\\1 E039',
1312 ),
1313 262 =>
1314 array (
1315 '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',
1316 'replace' => '\\1 E039',
1317 ),
1318 263 =>
1319 array (
1320 'match' => '0B3F 0B01',
1321 'replace' => 'E041',
1322 ),
1323 264 =>
1324 array (
1325 'match' => 'E03F 0B01',
1326 'replace' => 'E041',
1327 ),
1328 265 =>
1329 array (
1330 'match' => 'E040 0B01',
1331 'replace' => 'E042',
1332 ),
1333 266 =>
1334 array (
1335 'match' => '0B40 0B01',
1336 'replace' => 'E044',
1337 ),
1338 267 =>
1339 array (
1340 'match' => '0B57 0B01',
1341 'replace' => 'E068',
1342 ),
1343 268 =>
1344 array (
1345 'match' => '0B56 0B01',
1346 'replace' => 'E064',
1347 ),
1348 269 =>
1349 array (
1350 'match' => 'E05D 0B01',
1351 'replace' => 'E064',
1352 ),
1353 270 =>
1354 array (
1355 'match' => 'E05E 0B01',
1356 'replace' => 'E065',
1357 ),
1358 271 =>
1359 array (
1360 'match' => 'E05F 0B01',
1361 'replace' => 'E066',
1362 ),
1363 272 =>
1364 array (
1365 'match' => 'E060 0B01',
1366 'replace' => 'E067',
1367 ),
1368 273 =>
1369 array (
1370 'match' => 'E06D 0B01',
1371 'replace' => 'E089',
1372 ),
1373 274 =>
1374 array (
1375 'match' => 'E06E 0B01',
1376 'replace' => 'E08A',
1377 ),
1378 275 =>
1379 array (
1380 'match' => 'E070 0B01',
1381 'replace' => 'E08C',
1382 ),
1383 276 =>
1384 array (
1385 'match' => 'E071 0B01',
1386 'replace' => 'E08D',
1387 ),
1388 277 =>
1389 array (
1390 'match' => 'E072 0B01',
1391 'replace' => 'E08E',
1392 ),
1393 278 =>
1394 array (
1395 'match' => 'E074 0B01',
1396 'replace' => 'E08F',
1397 ),
1398 279 =>
1399 array (
1400 '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',
1401 'replace' => '\\1 E03C',
1402 ),
1403 280 =>
1404 array (
1405 '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',
1406 'replace' => '\\1 E048',
1407 ),
1408 281 =>
1409 array (
1410 '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',
1411 'replace' => '\\1 E04B',
1412 ),
1413 282 =>
1414 array (
1415 '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',
1416 'replace' => '\\1 E04F',
1417 ),
1418 283 =>
1419 array (
1420 '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',
1421 'replace' => '\\1 E054',
1422 ),
1423 284 =>
1424 array (
1425 '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',
1426 'replace' => '\\1 E057',
1427 ),
1428 285 =>
1429 array (
1430 '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',
1431 'replace' => '\\1 E05A',
1432 ),
1433 286 =>
1434 array (
1435 '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',
1436 'replace' => '\\1 E062',
1437 ),
1438 287 =>
1439 array (
1440 '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',
1441 'replace' => '\\1 E076',
1442 ),
1443 288 =>
1444 array (
1445 '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',
1446 'replace' => '\\1 E07C',
1447 ),
1448 289 =>
1449 array (
1450 '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',
1451 'replace' => '\\1 E07F',
1452 ),
1453 290 =>
1454 array (
1455 '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',
1456 'replace' => '\\1 E083',
1457 ),
1458 291 =>
1459 array (
1460 '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',
1461 'replace' => '\\1 E03C',
1462 ),
1463 292 =>
1464 array (
1465 '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',
1466 'replace' => '\\1 E048',
1467 ),
1468 293 =>
1469 array (
1470 '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',
1471 'replace' => '\\1 E04B',
1472 ),
1473 294 =>
1474 array (
1475 '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',
1476 'replace' => '\\1 E04F',
1477 ),
1478 295 =>
1479 array (
1480 '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',
1481 'replace' => '\\1 E054',
1482 ),
1483 296 =>
1484 array (
1485 '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',
1486 'replace' => '\\1 E057',
1487 ),
1488 297 =>
1489 array (
1490 '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',
1491 'replace' => '\\1 E05A',
1492 ),
1493 298 =>
1494 array (
1495 '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',
1496 'replace' => '\\1 E062',
1497 ),
1498 299 =>
1499 array (
1500 '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',
1501 'replace' => '\\1 E076',
1502 ),
1503 300 =>
1504 array (
1505 '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',
1506 'replace' => '\\1 E07C',
1507 ),
1508 301 =>
1509 array (
1510 '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',
1511 'replace' => '\\1 E07F',
1512 ),
1513 302 =>
1514 array (
1515 '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',
1516 'replace' => '\\1 E083',
1517 ),
1518 303 =>
1519 array (
1520 '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',
1521 'replace' => '\\1 E03C',
1522 ),
1523 304 =>
1524 array (
1525 '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',
1526 'replace' => '\\1 E048',
1527 ),
1528 305 =>
1529 array (
1530 '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',
1531 'replace' => '\\1 E04B',
1532 ),
1533 306 =>
1534 array (
1535 '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',
1536 'replace' => '\\1 E04F',
1537 ),
1538 307 =>
1539 array (
1540 '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',
1541 'replace' => '\\1 E054',
1542 ),
1543 308 =>
1544 array (
1545 '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',
1546 'replace' => '\\1 E057',
1547 ),
1548 309 =>
1549 array (
1550 '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',
1551 'replace' => '\\1 E05A',
1552 ),
1553 310 =>
1554 array (
1555 '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',
1556 'replace' => '\\1 E062',
1557 ),
1558 311 =>
1559 array (
1560 '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',
1561 'replace' => '\\1 E076',
1562 ),
1563 312 =>
1564 array (
1565 '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',
1566 'replace' => '\\1 E07C',
1567 ),
1568 313 =>
1569 array (
1570 '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',
1571 'replace' => '\\1 E07F',
1572 ),
1573 314 =>
1574 array (
1575 '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',
1576 'replace' => '\\1 E083',
1577 ),
1578 315 =>
1579 array (
1580 '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',
1581 'replace' => '\\1 E03C',
1582 ),
1583 316 =>
1584 array (
1585 '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',
1586 'replace' => '\\1 E048',
1587 ),
1588 317 =>
1589 array (
1590 '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',
1591 'replace' => '\\1 E04B',
1592 ),
1593 318 =>
1594 array (
1595 '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',
1596 'replace' => '\\1 E04F',
1597 ),
1598 319 =>
1599 array (
1600 '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',
1601 'replace' => '\\1 E054',
1602 ),
1603 320 =>
1604 array (
1605 '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',
1606 'replace' => '\\1 E057',
1607 ),
1608 321 =>
1609 array (
1610 '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',
1611 'replace' => '\\1 E05A',
1612 ),
1613 322 =>
1614 array (
1615 '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',
1616 'replace' => '\\1 E062',
1617 ),
1618 323 =>
1619 array (
1620 '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',
1621 'replace' => '\\1 E076',
1622 ),
1623 324 =>
1624 array (
1625 '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',
1626 'replace' => '\\1 E07C',
1627 ),
1628 325 =>
1629 array (
1630 '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',
1631 'replace' => '\\1 E07F',
1632 ),
1633 326 =>
1634 array (
1635 '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',
1636 'replace' => '\\1 E083',
1637 ),
1638 327 =>
1639 array (
1640 'match' => '(E02B) 0B3C',
1641 'replace' => '\\1 E03C',
1642 ),
1643 328 =>
1644 array (
1645 'match' => '(E02B) 0B41',
1646 'replace' => '\\1 E048',
1647 ),
1648 329 =>
1649 array (
1650 'match' => '(E02B) 0B42',
1651 'replace' => '\\1 E04B',
1652 ),
1653 330 =>
1654 array (
1655 'match' => '(E02B) 0B43',
1656 'replace' => '\\1 E04F',
1657 ),
1658 331 =>
1659 array (
1660 'match' => '(E02B) E053',
1661 'replace' => '\\1 E054',
1662 ),
1663 332 =>
1664 array (
1665 'match' => '(E02B) E056',
1666 'replace' => '\\1 E057',
1667 ),
1668 333 =>
1669 array (
1670 'match' => '(E02B) E059',
1671 'replace' => '\\1 E05A',
1672 ),
1673 334 =>
1674 array (
1675 'match' => '(E02B) 0B4D',
1676 'replace' => '\\1 E062',
1677 ),
1678 335 =>
1679 array (
1680 'match' => '(E02B) E075',
1681 'replace' => '\\1 E076',
1682 ),
1683 336 =>
1684 array (
1685 'match' => '(E02B) E07B',
1686 'replace' => '\\1 E07C',
1687 ),
1688 337 =>
1689 array (
1690 'match' => '(E02B) E07D',
1691 'replace' => '\\1 E07F',
1692 ),
1693 338 =>
1694 array (
1695 'match' => '(E02B) E082',
1696 'replace' => '\\1 E083',
1697 ),
1698 339 =>
1699 array (
1700 'match' => '(E02C) 0B3C',
1701 'replace' => '\\1 E03C',
1702 ),
1703 340 =>
1704 array (
1705 'match' => '(E02C) 0B41',
1706 'replace' => '\\1 E048',
1707 ),
1708 341 =>
1709 array (
1710 'match' => '(E02C) 0B42',
1711 'replace' => '\\1 E04B',
1712 ),
1713 342 =>
1714 array (
1715 'match' => '(E02C) 0B43',
1716 'replace' => '\\1 E04F',
1717 ),
1718 343 =>
1719 array (
1720 'match' => '(E02C) E053',
1721 'replace' => '\\1 E054',
1722 ),
1723 344 =>
1724 array (
1725 'match' => '(E02C) E056',
1726 'replace' => '\\1 E057',
1727 ),
1728 345 =>
1729 array (
1730 'match' => '(E02C) E059',
1731 'replace' => '\\1 E05A',
1732 ),
1733 346 =>
1734 array (
1735 'match' => '(E02C) 0B4D',
1736 'replace' => '\\1 E062',
1737 ),
1738 347 =>
1739 array (
1740 'match' => '(E02C) E075',
1741 'replace' => '\\1 E076',
1742 ),
1743 348 =>
1744 array (
1745 'match' => '(E02C) E07B',
1746 'replace' => '\\1 E07C',
1747 ),
1748 349 =>
1749 array (
1750 'match' => '(E02C) E07D',
1751 'replace' => '\\1 E07F',
1752 ),
1753 350 =>
1754 array (
1755 'match' => '(E02C) E082',
1756 'replace' => '\\1 E083',
1757 ),
1758 351 =>
1759 array (
1760 'match' => '(E06B) 0B3C',
1761 'replace' => '\\1 E03C',
1762 ),
1763 352 =>
1764 array (
1765 'match' => '(E06B) 0B41',
1766 'replace' => '\\1 E048',
1767 ),
1768 353 =>
1769 array (
1770 'match' => '(E06B) 0B42',
1771 'replace' => '\\1 E04B',
1772 ),
1773 354 =>
1774 array (
1775 'match' => '(E06B) 0B43',
1776 'replace' => '\\1 E04F',
1777 ),
1778 355 =>
1779 array (
1780 'match' => '(E06B) E053',
1781 'replace' => '\\1 E054',
1782 ),
1783 356 =>
1784 array (
1785 'match' => '(E06B) E056',
1786 'replace' => '\\1 E057',
1787 ),
1788 357 =>
1789 array (
1790 'match' => '(E06B) E059',
1791 'replace' => '\\1 E05A',
1792 ),
1793 358 =>
1794 array (
1795 'match' => '(E06B) 0B4D',
1796 'replace' => '\\1 E062',
1797 ),
1798 359 =>
1799 array (
1800 'match' => '(E06B) E075',
1801 'replace' => '\\1 E076',
1802 ),
1803 360 =>
1804 array (
1805 'match' => '(E06B) E07B',
1806 'replace' => '\\1 E07C',
1807 ),
1808 361 =>
1809 array (
1810 'match' => '(E06B) E07D',
1811 'replace' => '\\1 E07F',
1812 ),
1813 362 =>
1814 array (
1815 'match' => '(E06B) E082',
1816 'replace' => '\\1 E083',
1817 ),
1818 363 =>
1819 array (
1820 'match' => '(0B3C) 0B3C',
1821 'replace' => '\\1 E03C',
1822 ),
1823 364 =>
1824 array (
1825 'match' => '(0B3C) 0B41',
1826 'replace' => '\\1 E048',
1827 ),
1828 365 =>
1829 array (
1830 'match' => '(0B3C) 0B42',
1831 'replace' => '\\1 E04B',
1832 ),
1833 366 =>
1834 array (
1835 'match' => '(0B3C) 0B43',
1836 'replace' => '\\1 E04F',
1837 ),
1838 367 =>
1839 array (
1840 'match' => '(0B3C) E053',
1841 'replace' => '\\1 E054',
1842 ),
1843 368 =>
1844 array (
1845 'match' => '(0B3C) E056',
1846 'replace' => '\\1 E057',
1847 ),
1848 369 =>
1849 array (
1850 'match' => '(0B3C) E059',
1851 'replace' => '\\1 E05A',
1852 ),
1853 370 =>
1854 array (
1855 'match' => '(0B3C) 0B4D',
1856 'replace' => '\\1 E062',
1857 ),
1858 371 =>
1859 array (
1860 'match' => '(0B3C) E075',
1861 'replace' => '\\1 E076',
1862 ),
1863 372 =>
1864 array (
1865 'match' => '(0B3C) E07B',
1866 'replace' => '\\1 E07C',
1867 ),
1868 373 =>
1869 array (
1870 'match' => '(0B3C) E07D',
1871 'replace' => '\\1 E07F',
1872 ),
1873 374 =>
1874 array (
1875 'match' => '(0B3C) E082',
1876 'replace' => '\\1 E083',
1877 ),
1878 375 =>
1879 array (
1880 'match' => '(E075) 0B3C',
1881 'replace' => '\\1 E03C',
1882 ),
1883 376 =>
1884 array (
1885 'match' => '(E075) 0B41',
1886 'replace' => '\\1 E048',
1887 ),
1888 377 =>
1889 array (
1890 'match' => '(E075) 0B42',
1891 'replace' => '\\1 E04B',
1892 ),
1893 378 =>
1894 array (
1895 'match' => '(E075) 0B43',
1896 'replace' => '\\1 E04F',
1897 ),
1898 379 =>
1899 array (
1900 'match' => '(E075) E053',
1901 'replace' => '\\1 E054',
1902 ),
1903 380 =>
1904 array (
1905 'match' => '(E075) E056',
1906 'replace' => '\\1 E057',
1907 ),
1908 381 =>
1909 array (
1910 'match' => '(E075) E059',
1911 'replace' => '\\1 E05A',
1912 ),
1913 382 =>
1914 array (
1915 'match' => '(E075) 0B4D',
1916 'replace' => '\\1 E062',
1917 ),
1918 383 =>
1919 array (
1920 'match' => '(E075) E075',
1921 'replace' => '\\1 E076',
1922 ),
1923 384 =>
1924 array (
1925 'match' => '(E075) E07B',
1926 'replace' => '\\1 E07C',
1927 ),
1928 385 =>
1929 array (
1930 'match' => '(E075) E07D',
1931 'replace' => '\\1 E07F',
1932 ),
1933 386 =>
1934 array (
1935 'match' => '(E075) E082',
1936 'replace' => '\\1 E083',
1937 ),
1938 387 =>
1939 array (
1940 'match' => '(E075) 0B41',
1941 'replace' => '\\1 E048',
1942 ),
1943 388 =>
1944 array (
1945 'match' => '(E075) 0B42',
1946 'replace' => '\\1 E04B',
1947 ),
1948 389 =>
1949 array (
1950 'match' => '(E075) 0B43',
1951 'replace' => '\\1 E04F',
1952 ),
1953 390 =>
1954 array (
1955 'match' => '(E075) E053',
1956 'replace' => '\\1 E054',
1957 ),
1958 391 =>
1959 array (
1960 'match' => '(E075) E056',
1961 'replace' => '\\1 E057',
1962 ),
1963 392 =>
1964 array (
1965 'match' => '(E075) E059',
1966 'replace' => '\\1 E05A',
1967 ),
1968 393 =>
1969 array (
1970 'match' => 'E14D 0B01',
1971 'replace' => 'E08B',
1972 ),
1973 394 =>
1974 array (
1975 'match' => 'E14D E038',
1976 'replace' => 'E08B',
1977 ),
1978 395 =>
1979 array (
1980 'match' => 'E14D E039',
1981 'replace' => 'E08B',
1982 ),
1983 396 =>
1984 array (
1985 'match' => 'E14D E149',
1986 'replace' => 'E08B',
1987 ),
1988 397 =>
1989 array (
1990 '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',
1991 'replace' => '\\1 E11E',
1992 ),
1993 398 =>
1994 array (
1995 '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',
1996 'replace' => '\\1 E121',
1997 ),
1998 399 =>
1999 array (
2000 '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',
2001 'replace' => '\\1 E11F',
2002 ),
2003 400 =>
2004 array (
2005 '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',
2006 'replace' => '\\1 E120',
2007 ),
2008 401 =>
2009 array (
2010 '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',
2011 'replace' => '\\1 E122',
2012 ),
2013 402 =>
2014 array (
2015 'match' => '(E076) 0B41',
2016 'replace' => '\\1 E048',
2017 ),
2018 403 =>
2019 array (
2020 'match' => '(E076) 0B42',
2021 'replace' => '\\1 E04B',
2022 ),
2023 404 =>
2024 array (
2025 'match' => '(E076) 0B43',
2026 'replace' => '\\1 E04F',
2027 ),
2028 405 =>
2029 array (
2030 'match' => '(E076) E053',
2031 'replace' => '\\1 E054',
2032 ),
2033 406 =>
2034 array (
2035 'match' => '(E076) E056',
2036 'replace' => '\\1 E057',
2037 ),
2038 407 =>
2039 array (
2040 'match' => '(E076) E059',
2041 'replace' => '\\1 E05A',
2042 ),
2043 408 =>
2044 array (
2045 'match' => '(E076) 0B4D',
2046 'replace' => '\\1 E062',
2047 ),
2048 409 =>
2049 array (
2050 'match' => '(E090) E10E',
2051 'replace' => '\\1 E11C',
2052 ),
2053 410 =>
2054 array (
2055 'match' => '(E0B1) E10E',
2056 'replace' => '\\1 E11C',
2057 ),
2058 411 =>
2059 array (
2060 'match' => '(E09F) E10E',
2061 'replace' => '\\1 E11C',
2062 ),
2063 412 =>
2064 array (
2065 'match' => '(E092) E10E',
2066 'replace' => '\\1 E11C',
2067 ),
2068 413 =>
2069 array (
2070 'match' => '(E0A8) E10E',
2071 'replace' => '\\1 E11C',
2072 ),
2073 414 =>
2074 array (
2075 'match' => '(E0A3) E106',
2076 'replace' => '\\1 E0FC',
2077 ),
2078 415 =>
2079 array (
2080 'match' => '(E0AF) E106',
2081 'replace' => '\\1 E0FC',
2082 ),
2083 416 =>
2084 array (
2085 'match' => '((0B16|0B17|0B18|0B1F|0B23|0B25|0B27|0B2A|0B2B|0B2E|0B2F|0B37|0B38)) 0B01',
2086 'replace' => '\\1 E039',
2087 ),
2088 417 =>
2089 array (
2090 'match' => '(0B10) 0B01',
2091 'replace' => '\\1 E149',
2092 ),
2093 418 =>
2094 array (
2095 'match' => '(0B14) 0B01',
2096 'replace' => '\\1 E149',
2097 ),
2098 419 =>
2099 array (
2100 'match' => '(E069) 0B01',
2101 'replace' => '\\1 E149',
2102 ),
2103 420 =>
2104 array (
2105 'match' => '(E06A) 0B01',
2106 'replace' => '\\1 E149',
2107 ),
2108 421 =>
2109 array (
2110 'match' => '(E06B) 0B01',
2111 'replace' => '\\1 E149',
2112 ),
2113 422 =>
2114 array (
2115 'match' => '(E06C) 0B01',
2116 'replace' => '\\1 E149',
2117 ),
2118 423 =>
2119 array (
2120 'match' => '0B21 0B4D (E035)',
2121 'replace' => 'E12F \\1',
2122 ),
2123 424 =>
2124 array (
2125 'match' => ' (E035)',
2126 'replace' => ' \\1',
2127 ),
2128 425 =>
2129 array (
2130 'match' => ' (E035)',
2131 'replace' => ' \\1',
2132 ),
2133 426 =>
2134 array (
2135 'match' => ' (E035)',
2136 'replace' => ' \\1',
2137 ),
2138 427 =>
2139 array (
2140 'match' => ' (E035)',
2141 'replace' => ' \\1',
2142 ),
2143 428 =>
2144 array (
2145 'match' => ' (E035)',
2146 'replace' => ' \\1',
2147 ),
2148);
2149?> \ 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
index 34f81a65..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/ind_pa_1_001.volt.php
+++ /dev/null
@@ -1,1444 +0,0 @@
1<?php
2 $volt = array (
3 0 =>
4 array (
5 'match' => '0A4D 200C',
6 'replace' => 'E055',
7 ),
8 1 =>
9 array (
10 'match' => '0A4D 200D',
11 'replace' => 'E057',
12 ),
13 2 =>
14 array (
15 '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',
16 'replace' => '\\1 E056',
17 ),
18 3 =>
19 array (
20 'match' => '(200D) 0A4D',
21 'replace' => '\\1 E056',
22 ),
23 4 =>
24 array (
25 'match' => '(0020) 0A4D',
26 'replace' => '\\1 E056',
27 ),
28 5 =>
29 array (
30 'match' => '(25CC) 0A4D',
31 'replace' => '\\1 E056',
32 ),
33 6 =>
34 array (
35 'match' => '200D E056',
36 'replace' => 'E056',
37 ),
38 7 =>
39 array (
40 'match' => '0A05 0A3C',
41 'replace' => 'E02A',
42 ),
43 8 =>
44 array (
45 'match' => '0A06 0A3C',
46 'replace' => 'E02B',
47 ),
48 9 =>
49 array (
50 'match' => '0A07 0A3C',
51 'replace' => 'E02C',
52 ),
53 10 =>
54 array (
55 'match' => '0A08 0A3C',
56 'replace' => 'E02D',
57 ),
58 11 =>
59 array (
60 'match' => '0A09 0A3C',
61 'replace' => 'E02E',
62 ),
63 12 =>
64 array (
65 'match' => '0A0A 0A3C',
66 'replace' => 'E02F',
67 ),
68 13 =>
69 array (
70 'match' => '0A0F 0A3C',
71 'replace' => 'E030',
72 ),
73 14 =>
74 array (
75 'match' => '0A10 0A3C',
76 'replace' => 'E031',
77 ),
78 15 =>
79 array (
80 'match' => '0A13 0A3C',
81 'replace' => 'E032',
82 ),
83 16 =>
84 array (
85 'match' => '0A14 0A3C',
86 'replace' => 'E033',
87 ),
88 17 =>
89 array (
90 'match' => '0A15 0A3C',
91 'replace' => 'E034',
92 ),
93 18 =>
94 array (
95 'match' => '0A16 0A3C',
96 'replace' => 'E035',
97 ),
98 19 =>
99 array (
100 'match' => '0A17 0A3C',
101 'replace' => 'E036',
102 ),
103 20 =>
104 array (
105 'match' => '0A18 0A3C',
106 'replace' => 'E037',
107 ),
108 21 =>
109 array (
110 'match' => '0A19 0A3C',
111 'replace' => 'E038',
112 ),
113 22 =>
114 array (
115 'match' => '0A1A 0A3C',
116 'replace' => 'E039',
117 ),
118 23 =>
119 array (
120 'match' => '0A1B 0A3C',
121 'replace' => 'E03A',
122 ),
123 24 =>
124 array (
125 'match' => '0A1C 0A3C',
126 'replace' => 'E03B',
127 ),
128 25 =>
129 array (
130 'match' => '0A1D 0A3C',
131 'replace' => 'E03C',
132 ),
133 26 =>
134 array (
135 'match' => '0A1E 0A3C',
136 'replace' => 'E03D',
137 ),
138 27 =>
139 array (
140 'match' => '0A1F 0A3C',
141 'replace' => 'E03E',
142 ),
143 28 =>
144 array (
145 'match' => '0A20 0A3C',
146 'replace' => 'E03F',
147 ),
148 29 =>
149 array (
150 'match' => '0A21 0A3C',
151 'replace' => 'E040',
152 ),
153 30 =>
154 array (
155 'match' => '0A22 0A3C',
156 'replace' => 'E041',
157 ),
158 31 =>
159 array (
160 'match' => '0A23 0A3C',
161 'replace' => 'E042',
162 ),
163 32 =>
164 array (
165 'match' => '0A24 0A3C',
166 'replace' => 'E043',
167 ),
168 33 =>
169 array (
170 'match' => '0A25 0A3C',
171 'replace' => 'E044',
172 ),
173 34 =>
174 array (
175 'match' => '0A26 0A3C',
176 'replace' => 'E045',
177 ),
178 35 =>
179 array (
180 'match' => '0A27 0A3C',
181 'replace' => 'E046',
182 ),
183 36 =>
184 array (
185 'match' => '0A28 0A3C',
186 'replace' => 'E047',
187 ),
188 37 =>
189 array (
190 'match' => '0A2A 0A3C',
191 'replace' => 'E048',
192 ),
193 38 =>
194 array (
195 'match' => '0A2B 0A3C',
196 'replace' => 'E049',
197 ),
198 39 =>
199 array (
200 'match' => '0A2C 0A3C',
201 'replace' => 'E04A',
202 ),
203 40 =>
204 array (
205 'match' => '0A2D 0A3C',
206 'replace' => 'E04B',
207 ),
208 41 =>
209 array (
210 'match' => '0A2E 0A3C',
211 'replace' => 'E04C',
212 ),
213 42 =>
214 array (
215 'match' => '0A2F 0A3C',
216 'replace' => 'E04D',
217 ),
218 43 =>
219 array (
220 'match' => '0A30 0A3C',
221 'replace' => 'E04E',
222 ),
223 44 =>
224 array (
225 'match' => '0A32 0A3C',
226 'replace' => 'E04F',
227 ),
228 45 =>
229 array (
230 'match' => '0A33 0A3C',
231 'replace' => 'E050',
232 ),
233 46 =>
234 array (
235 'match' => '0A35 0A3C',
236 'replace' => 'E051',
237 ),
238 47 =>
239 array (
240 'match' => '0A36 0A3C',
241 'replace' => 'E052',
242 ),
243 48 =>
244 array (
245 'match' => '0A38 0A3C',
246 'replace' => 'E053',
247 ),
248 49 =>
249 array (
250 'match' => '0A39 0A3C',
251 'replace' => 'E054',
252 ),
253 50 =>
254 array (
255 'match' => 'E056 0A15',
256 'replace' => 'E07B',
257 ),
258 51 =>
259 array (
260 'match' => 'E056 0A16',
261 'replace' => 'E07C',
262 ),
263 52 =>
264 array (
265 'match' => 'E056 0A17',
266 'replace' => 'E07D',
267 ),
268 53 =>
269 array (
270 'match' => 'E056 0A18',
271 'replace' => 'E07E',
272 ),
273 54 =>
274 array (
275 'match' => 'E056 0A19',
276 'replace' => 'E07F',
277 ),
278 55 =>
279 array (
280 'match' => 'E056 0A1A',
281 'replace' => 'E080',
282 ),
283 56 =>
284 array (
285 'match' => 'E056 0A1B',
286 'replace' => 'E081',
287 ),
288 57 =>
289 array (
290 'match' => 'E056 0A1C',
291 'replace' => 'E082',
292 ),
293 58 =>
294 array (
295 'match' => 'E056 0A1D',
296 'replace' => 'E083',
297 ),
298 59 =>
299 array (
300 'match' => 'E056 0A1E',
301 'replace' => 'E084',
302 ),
303 60 =>
304 array (
305 'match' => 'E056 0A1F',
306 'replace' => 'E085',
307 ),
308 61 =>
309 array (
310 'match' => 'E056 0A20',
311 'replace' => 'E086',
312 ),
313 62 =>
314 array (
315 'match' => 'E056 0A21',
316 'replace' => 'E087',
317 ),
318 63 =>
319 array (
320 'match' => 'E056 0A22',
321 'replace' => 'E088',
322 ),
323 64 =>
324 array (
325 'match' => 'E056 0A23',
326 'replace' => 'E089',
327 ),
328 65 =>
329 array (
330 'match' => 'E056 0A24',
331 'replace' => 'E08A',
332 ),
333 66 =>
334 array (
335 'match' => 'E056 0A25',
336 'replace' => 'E08B',
337 ),
338 67 =>
339 array (
340 'match' => 'E056 0A26',
341 'replace' => 'E08C',
342 ),
343 68 =>
344 array (
345 'match' => 'E056 0A27',
346 'replace' => 'E08D',
347 ),
348 69 =>
349 array (
350 'match' => 'E056 0A28',
351 'replace' => 'E08E',
352 ),
353 70 =>
354 array (
355 'match' => 'E056 0A2A',
356 'replace' => 'E08F',
357 ),
358 71 =>
359 array (
360 'match' => 'E056 0A2B',
361 'replace' => 'E090',
362 ),
363 72 =>
364 array (
365 'match' => 'E056 0A2C',
366 'replace' => 'E091',
367 ),
368 73 =>
369 array (
370 'match' => 'E056 0A2D',
371 'replace' => 'E092',
372 ),
373 74 =>
374 array (
375 'match' => 'E056 0A2E',
376 'replace' => 'E093',
377 ),
378 75 =>
379 array (
380 'match' => 'E056 0A2F',
381 'replace' => 'E094',
382 ),
383 76 =>
384 array (
385 'match' => 'E056 0A30',
386 'replace' => 'E095',
387 ),
388 77 =>
389 array (
390 'match' => 'E056 0A32',
391 'replace' => 'E096',
392 ),
393 78 =>
394 array (
395 'match' => 'E056 0A35',
396 'replace' => 'E097',
397 ),
398 79 =>
399 array (
400 'match' => 'E056 0A36',
401 'replace' => 'E098',
402 ),
403 80 =>
404 array (
405 'match' => 'E056 0A38',
406 'replace' => 'E099',
407 ),
408 81 =>
409 array (
410 'match' => 'E056 0A39',
411 'replace' => 'E09A',
412 ),
413 82 =>
414 array (
415 'match' => 'E056 0A59',
416 'replace' => 'E09B',
417 ),
418 83 =>
419 array (
420 'match' => 'E056 0A5A',
421 'replace' => 'E09C',
422 ),
423 84 =>
424 array (
425 'match' => 'E056 0A5B',
426 'replace' => 'E09D',
427 ),
428 85 =>
429 array (
430 'match' => 'E056 0A5C',
431 'replace' => 'E09E',
432 ),
433 86 =>
434 array (
435 'match' => 'E056 0A5E',
436 'replace' => 'E09F',
437 ),
438 87 =>
439 array (
440 'match' => 'E056 0A33',
441 'replace' => 'E0BB',
442 ),
443 88 =>
444 array (
445 '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))',
446 'replace' => '0A4D 0A15 \\1',
447 ),
448 89 =>
449 array (
450 '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))',
451 'replace' => '0A4D 0A16 \\1',
452 ),
453 90 =>
454 array (
455 '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))',
456 'replace' => '0A4D 0A17 \\1',
457 ),
458 91 =>
459 array (
460 '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))',
461 'replace' => '0A4D 0A18 \\1',
462 ),
463 92 =>
464 array (
465 '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))',
466 'replace' => '0A4D 0A19 \\1',
467 ),
468 93 =>
469 array (
470 '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))',
471 'replace' => '0A4D 0A1A \\1',
472 ),
473 94 =>
474 array (
475 '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))',
476 'replace' => '0A4D 0A1B \\1',
477 ),
478 95 =>
479 array (
480 '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))',
481 'replace' => '0A4D 0A1C \\1',
482 ),
483 96 =>
484 array (
485 '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))',
486 'replace' => '0A4D 0A1D \\1',
487 ),
488 97 =>
489 array (
490 '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))',
491 'replace' => '0A4D 0A1E \\1',
492 ),
493 98 =>
494 array (
495 '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))',
496 'replace' => '0A4D 0A1F \\1',
497 ),
498 99 =>
499 array (
500 '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))',
501 'replace' => '0A4D 0A20 \\1',
502 ),
503 100 =>
504 array (
505 '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))',
506 'replace' => '0A4D 0A21 \\1',
507 ),
508 101 =>
509 array (
510 '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))',
511 'replace' => '0A4D 0A22 \\1',
512 ),
513 102 =>
514 array (
515 '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))',
516 'replace' => '0A4D 0A23 \\1',
517 ),
518 103 =>
519 array (
520 '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))',
521 'replace' => '0A4D 0A24 \\1',
522 ),
523 104 =>
524 array (
525 '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))',
526 'replace' => '0A4D 0A25 \\1',
527 ),
528 105 =>
529 array (
530 '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))',
531 'replace' => '0A4D 0A26 \\1',
532 ),
533 106 =>
534 array (
535 '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))',
536 'replace' => '0A4D 0A27 \\1',
537 ),
538 107 =>
539 array (
540 '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))',
541 'replace' => '0A4D 0A28 \\1',
542 ),
543 108 =>
544 array (
545 '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))',
546 'replace' => '0A4D 0A2A \\1',
547 ),
548 109 =>
549 array (
550 '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))',
551 'replace' => '0A4D 0A2B \\1',
552 ),
553 110 =>
554 array (
555 '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))',
556 'replace' => '0A4D 0A2C \\1',
557 ),
558 111 =>
559 array (
560 '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))',
561 'replace' => '0A4D 0A2D \\1',
562 ),
563 112 =>
564 array (
565 '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))',
566 'replace' => '0A4D 0A2E \\1',
567 ),
568 113 =>
569 array (
570 '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))',
571 'replace' => '0A4D 0A2F \\1',
572 ),
573 114 =>
574 array (
575 '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))',
576 'replace' => '0A4D 0A30 \\1',
577 ),
578 115 =>
579 array (
580 '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))',
581 'replace' => '0A4D 0A32 \\1',
582 ),
583 116 =>
584 array (
585 '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))',
586 'replace' => '0A4D 0A35 \\1',
587 ),
588 117 =>
589 array (
590 '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))',
591 'replace' => '0A4D 0A36 \\1',
592 ),
593 118 =>
594 array (
595 '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))',
596 'replace' => '0A4D 0A38 \\1',
597 ),
598 119 =>
599 array (
600 '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))',
601 'replace' => '0A4D 0A39 \\1',
602 ),
603 120 =>
604 array (
605 '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))',
606 'replace' => '0A4D 0A59 \\1',
607 ),
608 121 =>
609 array (
610 '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))',
611 'replace' => '0A4D 0A5A \\1',
612 ),
613 122 =>
614 array (
615 '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))',
616 'replace' => '0A4D 0A5B \\1',
617 ),
618 123 =>
619 array (
620 '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))',
621 'replace' => '0A4D 0A5C \\1',
622 ),
623 124 =>
624 array (
625 '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))',
626 'replace' => '0A4D 0A5E \\1',
627 ),
628 125 =>
629 array (
630 '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',
631 'replace' => '\\1 0A4D 0A3F',
632 ),
633 126 =>
634 array (
635 'match' => '0A3F 0A15 (0A4D 0A3F)',
636 'replace' => '0A15 \\1',
637 ),
638 127 =>
639 array (
640 'match' => '0A3F 0A16 (0A4D 0A3F)',
641 'replace' => '0A16 \\1',
642 ),
643 128 =>
644 array (
645 'match' => '0A3F 0A17 (0A4D 0A3F)',
646 'replace' => '0A17 \\1',
647 ),
648 129 =>
649 array (
650 'match' => '0A3F 0A18 (0A4D 0A3F)',
651 'replace' => '0A18 \\1',
652 ),
653 130 =>
654 array (
655 'match' => '0A3F 0A19 (0A4D 0A3F)',
656 'replace' => '0A19 \\1',
657 ),
658 131 =>
659 array (
660 'match' => '0A3F 0A1A (0A4D 0A3F)',
661 'replace' => '0A1A \\1',
662 ),
663 132 =>
664 array (
665 'match' => '0A3F 0A1B (0A4D 0A3F)',
666 'replace' => '0A1B \\1',
667 ),
668 133 =>
669 array (
670 'match' => '0A3F 0A1C (0A4D 0A3F)',
671 'replace' => '0A1C \\1',
672 ),
673 134 =>
674 array (
675 'match' => '0A3F 0A1D (0A4D 0A3F)',
676 'replace' => '0A1D \\1',
677 ),
678 135 =>
679 array (
680 'match' => '0A3F 0A1E (0A4D 0A3F)',
681 'replace' => '0A1E \\1',
682 ),
683 136 =>
684 array (
685 'match' => '0A3F 0A1F (0A4D 0A3F)',
686 'replace' => '0A1F \\1',
687 ),
688 137 =>
689 array (
690 'match' => '0A3F 0A20 (0A4D 0A3F)',
691 'replace' => '0A20 \\1',
692 ),
693 138 =>
694 array (
695 'match' => '0A3F 0A21 (0A4D 0A3F)',
696 'replace' => '0A21 \\1',
697 ),
698 139 =>
699 array (
700 'match' => '0A3F 0A22 (0A4D 0A3F)',
701 'replace' => '0A22 \\1',
702 ),
703 140 =>
704 array (
705 'match' => '0A3F 0A23 (0A4D 0A3F)',
706 'replace' => '0A23 \\1',
707 ),
708 141 =>
709 array (
710 'match' => '0A3F 0A24 (0A4D 0A3F)',
711 'replace' => '0A24 \\1',
712 ),
713 142 =>
714 array (
715 'match' => '0A3F 0A25 (0A4D 0A3F)',
716 'replace' => '0A25 \\1',
717 ),
718 143 =>
719 array (
720 'match' => '0A3F 0A26 (0A4D 0A3F)',
721 'replace' => '0A26 \\1',
722 ),
723 144 =>
724 array (
725 'match' => '0A3F 0A27 (0A4D 0A3F)',
726 'replace' => '0A27 \\1',
727 ),
728 145 =>
729 array (
730 'match' => '0A3F 0A28 (0A4D 0A3F)',
731 'replace' => '0A28 \\1',
732 ),
733 146 =>
734 array (
735 'match' => '0A3F 0A2A (0A4D 0A3F)',
736 'replace' => '0A2A \\1',
737 ),
738 147 =>
739 array (
740 'match' => '0A3F 0A2B (0A4D 0A3F)',
741 'replace' => '0A2B \\1',
742 ),
743 148 =>
744 array (
745 'match' => '0A3F 0A2C (0A4D 0A3F)',
746 'replace' => '0A2C \\1',
747 ),
748 149 =>
749 array (
750 'match' => '0A3F 0A2D (0A4D 0A3F)',
751 'replace' => '0A2D \\1',
752 ),
753 150 =>
754 array (
755 'match' => '0A3F 0A2E (0A4D 0A3F)',
756 'replace' => '0A2E \\1',
757 ),
758 151 =>
759 array (
760 'match' => '0A3F 0A2F (0A4D 0A3F)',
761 'replace' => '0A2F \\1',
762 ),
763 152 =>
764 array (
765 'match' => '0A3F 0A30 (0A4D 0A3F)',
766 'replace' => '0A30 \\1',
767 ),
768 153 =>
769 array (
770 'match' => '0A3F 0A32 (0A4D 0A3F)',
771 'replace' => '0A32 \\1',
772 ),
773 154 =>
774 array (
775 'match' => '0A3F 0A33 (0A4D 0A3F)',
776 'replace' => '0A33 \\1',
777 ),
778 155 =>
779 array (
780 'match' => '0A3F 0A35 (0A4D 0A3F)',
781 'replace' => '0A35 \\1',
782 ),
783 156 =>
784 array (
785 'match' => '0A3F 0A36 (0A4D 0A3F)',
786 'replace' => '0A36 \\1',
787 ),
788 157 =>
789 array (
790 'match' => '0A3F 0A38 (0A4D 0A3F)',
791 'replace' => '0A38 \\1',
792 ),
793 158 =>
794 array (
795 'match' => '0A3F 0A39 (0A4D 0A3F)',
796 'replace' => '0A39 \\1',
797 ),
798 159 =>
799 array (
800 'match' => '0A3F E034 (0A4D 0A3F)',
801 'replace' => 'E034 \\1',
802 ),
803 160 =>
804 array (
805 'match' => '0A3F E035 (0A4D 0A3F)',
806 'replace' => 'E035 \\1',
807 ),
808 161 =>
809 array (
810 'match' => '0A3F E036 (0A4D 0A3F)',
811 'replace' => 'E036 \\1',
812 ),
813 162 =>
814 array (
815 'match' => '0A3F E037 (0A4D 0A3F)',
816 'replace' => 'E037 \\1',
817 ),
818 163 =>
819 array (
820 'match' => '0A3F E038 (0A4D 0A3F)',
821 'replace' => 'E038 \\1',
822 ),
823 164 =>
824 array (
825 'match' => '0A3F E039 (0A4D 0A3F)',
826 'replace' => 'E039 \\1',
827 ),
828 165 =>
829 array (
830 'match' => '0A3F E03A (0A4D 0A3F)',
831 'replace' => 'E03A \\1',
832 ),
833 166 =>
834 array (
835 'match' => '0A3F E03B (0A4D 0A3F)',
836 'replace' => 'E03B \\1',
837 ),
838 167 =>
839 array (
840 'match' => '0A3F E03C (0A4D 0A3F)',
841 'replace' => 'E03C \\1',
842 ),
843 168 =>
844 array (
845 'match' => '0A3F E03D (0A4D 0A3F)',
846 'replace' => 'E03D \\1',
847 ),
848 169 =>
849 array (
850 'match' => '0A3F E03E (0A4D 0A3F)',
851 'replace' => 'E03E \\1',
852 ),
853 170 =>
854 array (
855 'match' => '0A3F E03F (0A4D 0A3F)',
856 'replace' => 'E03F \\1',
857 ),
858 171 =>
859 array (
860 'match' => '0A3F E040 (0A4D 0A3F)',
861 'replace' => 'E040 \\1',
862 ),
863 172 =>
864 array (
865 'match' => '0A3F E041 (0A4D 0A3F)',
866 'replace' => 'E041 \\1',
867 ),
868 173 =>
869 array (
870 'match' => '0A3F E042 (0A4D 0A3F)',
871 'replace' => 'E042 \\1',
872 ),
873 174 =>
874 array (
875 'match' => '0A3F E043 (0A4D 0A3F)',
876 'replace' => 'E043 \\1',
877 ),
878 175 =>
879 array (
880 'match' => '0A3F E044 (0A4D 0A3F)',
881 'replace' => 'E044 \\1',
882 ),
883 176 =>
884 array (
885 'match' => '0A3F E045 (0A4D 0A3F)',
886 'replace' => 'E045 \\1',
887 ),
888 177 =>
889 array (
890 'match' => '0A3F E046 (0A4D 0A3F)',
891 'replace' => 'E046 \\1',
892 ),
893 178 =>
894 array (
895 'match' => '0A3F E047 (0A4D 0A3F)',
896 'replace' => 'E047 \\1',
897 ),
898 179 =>
899 array (
900 'match' => '0A3F E048 (0A4D 0A3F)',
901 'replace' => 'E048 \\1',
902 ),
903 180 =>
904 array (
905 'match' => '0A3F E049 (0A4D 0A3F)',
906 'replace' => 'E049 \\1',
907 ),
908 181 =>
909 array (
910 'match' => '0A3F E04A (0A4D 0A3F)',
911 'replace' => 'E04A \\1',
912 ),
913 182 =>
914 array (
915 'match' => '0A3F E04B (0A4D 0A3F)',
916 'replace' => 'E04B \\1',
917 ),
918 183 =>
919 array (
920 'match' => '0A3F E04C (0A4D 0A3F)',
921 'replace' => 'E04C \\1',
922 ),
923 184 =>
924 array (
925 'match' => '0A3F E04D (0A4D 0A3F)',
926 'replace' => 'E04D \\1',
927 ),
928 185 =>
929 array (
930 'match' => '0A3F E04E (0A4D 0A3F)',
931 'replace' => 'E04E \\1',
932 ),
933 186 =>
934 array (
935 'match' => '0A3F E04F (0A4D 0A3F)',
936 'replace' => 'E04F \\1',
937 ),
938 187 =>
939 array (
940 'match' => '0A3F E050 (0A4D 0A3F)',
941 'replace' => 'E050 \\1',
942 ),
943 188 =>
944 array (
945 'match' => '0A3F E051 (0A4D 0A3F)',
946 'replace' => 'E051 \\1',
947 ),
948 189 =>
949 array (
950 'match' => '0A3F E052 (0A4D 0A3F)',
951 'replace' => 'E052 \\1',
952 ),
953 190 =>
954 array (
955 'match' => '0A3F E053 (0A4D 0A3F)',
956 'replace' => 'E053 \\1',
957 ),
958 191 =>
959 array (
960 'match' => '0A3F E054 (0A4D 0A3F)',
961 'replace' => 'E054 \\1',
962 ),
963 192 =>
964 array (
965 'match' => '0A3F 0A59 (0A4D 0A3F)',
966 'replace' => '0A59 \\1',
967 ),
968 193 =>
969 array (
970 'match' => '0A3F 0A5A (0A4D 0A3F)',
971 'replace' => '0A5A \\1',
972 ),
973 194 =>
974 array (
975 'match' => '0A3F 0A5B (0A4D 0A3F)',
976 'replace' => '0A5B \\1',
977 ),
978 195 =>
979 array (
980 'match' => '0A3F 0A5C (0A4D 0A3F)',
981 'replace' => '0A5C \\1',
982 ),
983 196 =>
984 array (
985 'match' => '0A3F 0A5E (0A4D 0A3F)',
986 'replace' => '0A5E \\1',
987 ),
988 197 =>
989 array (
990 'match' => 'E055',
991 'replace' => '0A4D',
992 ),
993 198 =>
994 array (
995 'match' => 'E056',
996 'replace' => '0A4D',
997 ),
998 199 =>
999 array (
1000 'match' => 'E057',
1001 'replace' => '0A4D',
1002 ),
1003 200 =>
1004 array (
1005 'match' => '0A15 0A4D',
1006 'replace' => 'E004',
1007 ),
1008 201 =>
1009 array (
1010 'match' => '0A16 0A4D',
1011 'replace' => 'E005',
1012 ),
1013 202 =>
1014 array (
1015 'match' => '0A17 0A4D',
1016 'replace' => 'E006',
1017 ),
1018 203 =>
1019 array (
1020 'match' => '0A18 0A4D',
1021 'replace' => 'E007',
1022 ),
1023 204 =>
1024 array (
1025 'match' => '0A19 0A4D',
1026 'replace' => 'E008',
1027 ),
1028 205 =>
1029 array (
1030 'match' => '0A1A 0A4D',
1031 'replace' => 'E009',
1032 ),
1033 206 =>
1034 array (
1035 'match' => '0A1B 0A4D',
1036 'replace' => 'E00A',
1037 ),
1038 207 =>
1039 array (
1040 'match' => '0A1C 0A4D',
1041 'replace' => 'E00B',
1042 ),
1043 208 =>
1044 array (
1045 'match' => '0A1D 0A4D',
1046 'replace' => 'E00C',
1047 ),
1048 209 =>
1049 array (
1050 'match' => '0A1E 0A4D',
1051 'replace' => 'E00D',
1052 ),
1053 210 =>
1054 array (
1055 'match' => '0A1F 0A4D',
1056 'replace' => 'E00E',
1057 ),
1058 211 =>
1059 array (
1060 'match' => '0A20 0A4D',
1061 'replace' => 'E00F',
1062 ),
1063 212 =>
1064 array (
1065 'match' => '0A21 0A4D',
1066 'replace' => 'E010',
1067 ),
1068 213 =>
1069 array (
1070 'match' => '0A22 0A4D',
1071 'replace' => 'E011',
1072 ),
1073 214 =>
1074 array (
1075 'match' => '0A23 0A4D',
1076 'replace' => 'E012',
1077 ),
1078 215 =>
1079 array (
1080 'match' => '0A24 0A4D',
1081 'replace' => 'E013',
1082 ),
1083 216 =>
1084 array (
1085 'match' => '0A25 0A4D',
1086 'replace' => 'E014',
1087 ),
1088 217 =>
1089 array (
1090 'match' => '0A26 0A4D',
1091 'replace' => 'E015',
1092 ),
1093 218 =>
1094 array (
1095 'match' => '0A27 0A4D',
1096 'replace' => 'E016',
1097 ),
1098 219 =>
1099 array (
1100 'match' => '0A28 0A4D',
1101 'replace' => 'E017',
1102 ),
1103 220 =>
1104 array (
1105 'match' => '0A2A 0A4D',
1106 'replace' => 'E018',
1107 ),
1108 221 =>
1109 array (
1110 'match' => '0A2B 0A4D',
1111 'replace' => 'E019',
1112 ),
1113 222 =>
1114 array (
1115 'match' => '0A2C 0A4D',
1116 'replace' => 'E01A',
1117 ),
1118 223 =>
1119 array (
1120 'match' => '0A2D 0A4D',
1121 'replace' => 'E01B',
1122 ),
1123 224 =>
1124 array (
1125 'match' => '0A2E 0A4D',
1126 'replace' => 'E01C',
1127 ),
1128 225 =>
1129 array (
1130 'match' => '0A2F 0A4D',
1131 'replace' => 'E01D',
1132 ),
1133 226 =>
1134 array (
1135 'match' => '0A30 0A4D',
1136 'replace' => 'E01E',
1137 ),
1138 227 =>
1139 array (
1140 'match' => '0A32 0A4D',
1141 'replace' => 'E01F',
1142 ),
1143 228 =>
1144 array (
1145 'match' => '0A33 0A4D',
1146 'replace' => 'E020',
1147 ),
1148 229 =>
1149 array (
1150 'match' => '0A35 0A4D',
1151 'replace' => 'E021',
1152 ),
1153 230 =>
1154 array (
1155 'match' => '0A36 0A4D',
1156 'replace' => 'E022',
1157 ),
1158 231 =>
1159 array (
1160 'match' => '0A38 0A4D',
1161 'replace' => 'E023',
1162 ),
1163 232 =>
1164 array (
1165 'match' => '0A39 0A4D',
1166 'replace' => 'E024',
1167 ),
1168 233 =>
1169 array (
1170 'match' => '0A59 0A4D',
1171 'replace' => 'E025',
1172 ),
1173 234 =>
1174 array (
1175 'match' => '0A5A 0A4D',
1176 'replace' => 'E026',
1177 ),
1178 235 =>
1179 array (
1180 'match' => '0A5B 0A4D',
1181 'replace' => 'E027',
1182 ),
1183 236 =>
1184 array (
1185 'match' => '0A5C 0A4D',
1186 'replace' => 'E028',
1187 ),
1188 237 =>
1189 array (
1190 'match' => '0A5E 0A4D',
1191 'replace' => 'E029',
1192 ),
1193 238 =>
1194 array (
1195 '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',
1196 'replace' => '\\1 E002',
1197 ),
1198 239 =>
1199 array (
1200 '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',
1201 'replace' => '\\1 E003',
1202 ),
1203 240 =>
1204 array (
1205 'match' => '0A2F 0A4D',
1206 'replace' => 'E0A0',
1207 ),
1208 241 =>
1209 array (
1210 'match' => '0A09 0A02',
1211 'replace' => 'E0A1',
1212 ),
1213 242 =>
1214 array (
1215 'match' => '0A09 0A70',
1216 'replace' => 'E0A1',
1217 ),
1218 243 =>
1219 array (
1220 'match' => '0A0A 0A02',
1221 'replace' => 'E0A2',
1222 ),
1223 244 =>
1224 array (
1225 'match' => '0A0A 0A70',
1226 'replace' => 'E0A2',
1227 ),
1228 245 =>
1229 array (
1230 'match' => '0A13 0A02',
1231 'replace' => 'E0A3',
1232 ),
1233 246 =>
1234 array (
1235 'match' => '0A13 0A70',
1236 'replace' => 'E0A3',
1237 ),
1238 247 =>
1239 array (
1240 'match' => '0A05 0A02',
1241 'replace' => 'E0B4',
1242 ),
1243 248 =>
1244 array (
1245 'match' => '0A05 0A70',
1246 'replace' => 'E0B4',
1247 ),
1248 249 =>
1249 array (
1250 'match' => '0A06 0A02',
1251 'replace' => 'E0B5',
1252 ),
1253 250 =>
1254 array (
1255 'match' => '0A06 0A70',
1256 'replace' => 'E0B5',
1257 ),
1258 251 =>
1259 array (
1260 'match' => '0A07 0A02',
1261 'replace' => 'E0B6',
1262 ),
1263 252 =>
1264 array (
1265 'match' => '0A07 0A70',
1266 'replace' => 'E0B6',
1267 ),
1268 253 =>
1269 array (
1270 'match' => '0A08 0A02',
1271 'replace' => 'E0B7',
1272 ),
1273 254 =>
1274 array (
1275 'match' => '0A08 0A70',
1276 'replace' => 'E0B7',
1277 ),
1278 255 =>
1279 array (
1280 'match' => '0A0F 0A02',
1281 'replace' => 'E0B8',
1282 ),
1283 256 =>
1284 array (
1285 'match' => '0A0F 0A70',
1286 'replace' => 'E0B8',
1287 ),
1288 257 =>
1289 array (
1290 'match' => '0A10 0A02',
1291 'replace' => 'E0B9',
1292 ),
1293 258 =>
1294 array (
1295 'match' => '0A10 0A70',
1296 'replace' => 'E0B9',
1297 ),
1298 259 =>
1299 array (
1300 'match' => '0A14 0A02',
1301 'replace' => 'E0BA',
1302 ),
1303 260 =>
1304 array (
1305 'match' => '0A14 0A70',
1306 'replace' => 'E0BA',
1307 ),
1308 261 =>
1309 array (
1310 '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',
1311 'replace' => '\\1 0A70',
1312 ),
1313 262 =>
1314 array (
1315 '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',
1316 'replace' => '\\1 0A70',
1317 ),
1318 263 =>
1319 array (
1320 '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',
1321 'replace' => '\\1 0A70',
1322 ),
1323 264 =>
1324 array (
1325 'match' => '(0A41) 0A02',
1326 'replace' => '\\1 0A70',
1327 ),
1328 265 =>
1329 array (
1330 'match' => '(0A42) 0A02',
1331 'replace' => '\\1 0A70',
1332 ),
1333 266 =>
1334 array (
1335 'match' => '(E002) 0A02',
1336 'replace' => '\\1 0A70',
1337 ),
1338 267 =>
1339 array (
1340 'match' => '(E003) 0A02',
1341 'replace' => '\\1 0A70',
1342 ),
1343 268 =>
1344 array (
1345 'match' => '0A3E 0A02',
1346 'replace' => 'E0A8',
1347 ),
1348 269 =>
1349 array (
1350 'match' => '0A3E 0A70',
1351 'replace' => 'E0A8',
1352 ),
1353 270 =>
1354 array (
1355 'match' => '0A40 0A02',
1356 'replace' => 'E0A9',
1357 ),
1358 271 =>
1359 array (
1360 'match' => '0A40 0A70',
1361 'replace' => 'E0A9',
1362 ),
1363 272 =>
1364 array (
1365 'match' => '0A47 0A02',
1366 'replace' => 'E0AA',
1367 ),
1368 273 =>
1369 array (
1370 'match' => '0A47 0A70',
1371 'replace' => 'E0AA',
1372 ),
1373 274 =>
1374 array (
1375 'match' => '0A48 0A02',
1376 'replace' => 'E0AB',
1377 ),
1378 275 =>
1379 array (
1380 'match' => '0A48 0A70',
1381 'replace' => 'E0AB',
1382 ),
1383 276 =>
1384 array (
1385 'match' => '0A4B 0A02',
1386 'replace' => 'E0AC',
1387 ),
1388 277 =>
1389 array (
1390 'match' => '0A4B 0A70',
1391 'replace' => 'E0AC',
1392 ),
1393 278 =>
1394 array (
1395 'match' => '0A4C 0A02',
1396 'replace' => 'E0AD',
1397 ),
1398 279 =>
1399 array (
1400 'match' => '0A4C 0A70',
1401 'replace' => 'E0AD',
1402 ),
1403 280 =>
1404 array (
1405 'match' => '0A3E 0A01',
1406 'replace' => 'E0AE',
1407 ),
1408 281 =>
1409 array (
1410 'match' => '0A40 0A01',
1411 'replace' => 'E0AF',
1412 ),
1413 282 =>
1414 array (
1415 'match' => '0A47 0A01',
1416 'replace' => 'E0B0',
1417 ),
1418 283 =>
1419 array (
1420 'match' => '0A48 0A01',
1421 'replace' => 'E0B1',
1422 ),
1423 284 =>
1424 array (
1425 'match' => '0A4B 0A01',
1426 'replace' => 'E0B2',
1427 ),
1428 285 =>
1429 array (
1430 'match' => '0A4C 0A01',
1431 'replace' => 'E0B3',
1432 ),
1433 286 =>
1434 array (
1435 'match' => '((0A08|0A0F|0A10|0A13|0A14|E0B6|E0B7|E0B8|E0B9|E0BA)) 0A01',
1436 'replace' => '\\1 E0A5',
1437 ),
1438 287 =>
1439 array (
1440 'match' => '((E0A8|E0A9|E0AA|E0AB|E0AC|E0AD)) 0A01',
1441 'replace' => '\\1 E0A5',
1442 ),
1443);
1444?> \ 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
index 9f53413b..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/ind_ta_1_001.volt.php
+++ /dev/null
@@ -1,394 +0,0 @@
1<?php
2 $volt = array (
3 0 =>
4 array (
5 'match' => '0BCD 200D',
6 'replace' => '014B',
7 ),
8 1 =>
9 array (
10 'match' => '0BCD 200C',
11 'replace' => 'E002',
12 ),
13 2 =>
14 array (
15 'match' => '200D 0BCD',
16 'replace' => '014A',
17 ),
18 3 =>
19 array (
20 'match' => '0B95 0BCD 0BB7',
21 'replace' => 'E005',
22 ),
23 4 =>
24 array (
25 'match' => '0BB8 0BCD 0BB0 0BC0',
26 'replace' => 'E04B',
27 ),
28 5 =>
29 array (
30 'match' => '0B93 0BAE 0BCD',
31 'replace' => 'E04C',
32 ),
33 6 =>
34 array (
35 'match' => '(0BB8) 0BC1',
36 'replace' => '\\1 E00C',
37 ),
38 7 =>
39 array (
40 'match' => '(0BB8) 0BC2',
41 'replace' => '\\1 E00D',
42 ),
43 8 =>
44 array (
45 'match' => '0B95 0BC2',
46 'replace' => 'E00F',
47 ),
48 9 =>
49 array (
50 'match' => '0B9C 0BC1',
51 'replace' => 'E014',
52 ),
53 10 =>
54 array (
55 'match' => '0B9C 0BC2',
56 'replace' => 'E015',
57 ),
58 11 =>
59 array (
60 'match' => '0B9F 0BBF',
61 'replace' => 'E018',
62 ),
63 12 =>
64 array (
65 'match' => '0BB2 0BBF',
66 'replace' => 'E033',
67 ),
68 13 =>
69 array (
70 'match' => '0BB7 0BBF',
71 'replace' => 'E03F',
72 ),
73 14 =>
74 array (
75 'match' => '0BB7 0BC1',
76 'replace' => 'E041',
77 ),
78 15 =>
79 array (
80 'match' => '0BB7 0BC2',
81 'replace' => 'E042',
82 ),
83 16 =>
84 array (
85 'match' => '0BB8 0BBF',
86 'replace' => 'E043',
87 ),
88 17 =>
89 array (
90 'match' => '0BB9 0BC1',
91 'replace' => 'E045',
92 ),
93 18 =>
94 array (
95 'match' => '0BB9 0BC2',
96 'replace' => 'E046',
97 ),
98 19 =>
99 array (
100 'match' => 'E005 0BBF',
101 'replace' => 'E047',
102 ),
103 20 =>
104 array (
105 'match' => 'E005 0BC1',
106 'replace' => 'E049',
107 ),
108 21 =>
109 array (
110 'match' => 'E005 0BC2',
111 'replace' => 'E04A',
112 ),
113 22 =>
114 array (
115 'match' => '((0BAA|0BAF|0B99|0BB5)) 0BC0',
116 'replace' => '\\1 E00B',
117 ),
118 23 =>
119 array (
120 'match' => '((0BAE|0B9A|0BB9|0B9C|0BB4|0BB1)) 0BBF',
121 'replace' => '\\1 E006',
122 ),
123 24 =>
124 array (
125 'match' => '((0BB0|0BB3|0BA3|0BA9)) 0BBF',
126 'replace' => '\\1 E007',
127 ),
128 25 =>
129 array (
130 'match' => '((0B95|0BA4)) 0BBF',
131 'replace' => '\\1 E008',
132 ),
133 26 =>
134 array (
135 'match' => '((0BAA|0BAF|0B99|0BB5)) 0BBF',
136 'replace' => '\\1 E009',
137 ),
138 27 =>
139 array (
140 'match' => '((0BA8|0B9E)) 0BBF',
141 'replace' => '\\1 E00A',
142 ),
143 28 =>
144 array (
145 'match' => '0BA3 200C 0BC8',
146 'replace' => 'E01F',
147 ),
148 29 =>
149 array (
150 'match' => '0BA9 200C 0BC8',
151 'replace' => 'E027',
152 ),
153 30 =>
154 array (
155 'match' => '0BB2 200C 0BC8',
156 'replace' => 'E037',
157 ),
158 31 =>
159 array (
160 'match' => '0BB3 200C 0BC8',
161 'replace' => 'E03A',
162 ),
163 32 =>
164 array (
165 'match' => '0B9F 0BC0',
166 'replace' => 'E019',
167 ),
168 33 =>
169 array (
170 'match' => '0BB2 0BC0',
171 'replace' => 'E034',
172 ),
173 34 =>
174 array (
175 'match' => '0BB7 0BC0',
176 'replace' => 'E040',
177 ),
178 35 =>
179 array (
180 'match' => '0BB8 0BC0',
181 'replace' => 'E044',
182 ),
183 36 =>
184 array (
185 'match' => 'E005 0BC0',
186 'replace' => 'E048',
187 ),
188 37 =>
189 array (
190 'match' => '0B95 0BC1',
191 'replace' => 'E00E',
192 ),
193 38 =>
194 array (
195 'match' => '0B99 0BC1',
196 'replace' => 'E010',
197 ),
198 39 =>
199 array (
200 'match' => '0B99 0BC2',
201 'replace' => 'E011',
202 ),
203 40 =>
204 array (
205 'match' => '0B9A 0BC1',
206 'replace' => 'E012',
207 ),
208 41 =>
209 array (
210 'match' => '0B9A 0BC2',
211 'replace' => 'E013',
212 ),
213 42 =>
214 array (
215 'match' => '0B9E 0BC1',
216 'replace' => 'E016',
217 ),
218 43 =>
219 array (
220 'match' => '0B9E 0BC2',
221 'replace' => 'E017',
222 ),
223 44 =>
224 array (
225 'match' => '0B9F 0BC1',
226 'replace' => 'E01A',
227 ),
228 45 =>
229 array (
230 'match' => '0B9F 0BC2',
231 'replace' => 'E01B',
232 ),
233 46 =>
234 array (
235 'match' => '0BA3 200C 0BBE',
236 'replace' => 'E01C',
237 ),
238 47 =>
239 array (
240 'match' => '0BA3 0BC1',
241 'replace' => 'E01D',
242 ),
243 48 =>
244 array (
245 'match' => '0BA3 0BC2',
246 'replace' => 'E01E',
247 ),
248 49 =>
249 array (
250 'match' => '0BA4 0BC1',
251 'replace' => 'E020',
252 ),
253 50 =>
254 array (
255 'match' => '0BA4 0BC2',
256 'replace' => 'E021',
257 ),
258 51 =>
259 array (
260 'match' => '0BA8 0BC1',
261 'replace' => 'E022',
262 ),
263 52 =>
264 array (
265 'match' => '0BA8 0BC2',
266 'replace' => 'E023',
267 ),
268 53 =>
269 array (
270 'match' => '0BA9 200C 0BBE',
271 'replace' => 'E024',
272 ),
273 54 =>
274 array (
275 'match' => '0BA9 0BC1',
276 'replace' => 'E025',
277 ),
278 55 =>
279 array (
280 'match' => '0BA9 0BC2',
281 'replace' => 'E026',
282 ),
283 56 =>
284 array (
285 'match' => '0BAA 0BC1',
286 'replace' => 'E028',
287 ),
288 57 =>
289 array (
290 'match' => '0BAA 0BC2',
291 'replace' => 'E029',
292 ),
293 58 =>
294 array (
295 'match' => '0BAE 0BC1',
296 'replace' => 'E02A',
297 ),
298 59 =>
299 array (
300 'match' => '0BAE 0BC2',
301 'replace' => 'E02B',
302 ),
303 60 =>
304 array (
305 'match' => '0BAF 0BC1',
306 'replace' => 'E02C',
307 ),
308 61 =>
309 array (
310 'match' => '0BAF 0BC2',
311 'replace' => 'E02D',
312 ),
313 62 =>
314 array (
315 'match' => '0BB0 0BC1',
316 'replace' => 'E02E',
317 ),
318 63 =>
319 array (
320 'match' => '0BB0 0BC2',
321 'replace' => 'E02F',
322 ),
323 64 =>
324 array (
325 'match' => '0BB1 200C 0BBE',
326 'replace' => 'E030',
327 ),
328 65 =>
329 array (
330 'match' => '0BB1 0BC1',
331 'replace' => 'E031',
332 ),
333 66 =>
334 array (
335 'match' => '0BB1 0BC2',
336 'replace' => 'E032',
337 ),
338 67 =>
339 array (
340 'match' => '0BB2 0BC1',
341 'replace' => 'E035',
342 ),
343 68 =>
344 array (
345 'match' => '0BB2 0BC2',
346 'replace' => 'E036',
347 ),
348 69 =>
349 array (
350 'match' => '0BB3 0BC1',
351 'replace' => 'E038',
352 ),
353 70 =>
354 array (
355 'match' => '0BB3 0BC2',
356 'replace' => 'E039',
357 ),
358 71 =>
359 array (
360 'match' => '0BB4 0BC1',
361 'replace' => 'E03B',
362 ),
363 72 =>
364 array (
365 'match' => '0BB4 0BC2',
366 'replace' => 'E03C',
367 ),
368 73 =>
369 array (
370 'match' => '0BB5 0BC1',
371 'replace' => 'E03D',
372 ),
373 74 =>
374 array (
375 'match' => '0BB5 0BC2',
376 'replace' => 'E03E',
377 ),
378 75 =>
379 array (
380 'match' => '014B',
381 'replace' => '0BCD',
382 ),
383 76 =>
384 array (
385 'match' => 'E002',
386 'replace' => '0BCD',
387 ),
388 77 =>
389 array (
390 'match' => '014A',
391 'replace' => '0BCD',
392 ),
393);
394?> \ 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
index 1cf96cc5..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/ind_te_1_001.volt.php
+++ /dev/null
@@ -1,1489 +0,0 @@
1<?php
2 $volt = array (
3 0 =>
4 array (
5 '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))',
6 'replace' => 'E046 \\1',
7 ),
8 1 =>
9 array (
10 'match' => '0C4D 200D',
11 'replace' => '00C9',
12 ),
13 2 =>
14 array (
15 'match' => '0C4D 200C',
16 'replace' => '00D0',
17 ),
18 3 =>
19 array (
20 'match' => '200D 0C4D',
21 'replace' => '00D1',
22 ),
23 4 =>
24 array (
25 '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',
26 'replace' => '\\1 00D1',
27 ),
28 5 =>
29 array (
30 'match' => '((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C)) 0C4D',
31 'replace' => '\\1 00D1',
32 ),
33 6 =>
34 array (
35 'match' => '((0C41|0C42|0C43|0C44)) 0C4D',
36 'replace' => '\\1 00D1',
37 ),
38 7 =>
39 array (
40 'match' => '(0020) 0C4D',
41 'replace' => '\\1 00D1',
42 ),
43 8 =>
44 array (
45 'match' => '(25CC) 0C4D',
46 'replace' => '\\1 00D1',
47 ),
48 9 =>
49 array (
50 'match' => '0C15 00D1 0C37',
51 'replace' => 'E078',
52 ),
53 10 =>
54 array (
55 'match' => '0C36 00D1 0C1C',
56 'replace' => 'E079',
57 ),
58 11 =>
59 array (
60 'match' => '00D1 0C15',
61 'replace' => 'E02C',
62 ),
63 12 =>
64 array (
65 'match' => '00D1 0C16',
66 'replace' => 'E02D',
67 ),
68 13 =>
69 array (
70 'match' => '00D1 0C17',
71 'replace' => 'E02E',
72 ),
73 14 =>
74 array (
75 'match' => '00D1 0C18',
76 'replace' => 'E02F',
77 ),
78 15 =>
79 array (
80 'match' => '00D1 0C19',
81 'replace' => 'E030',
82 ),
83 16 =>
84 array (
85 'match' => '00D1 0C1A',
86 'replace' => 'E031',
87 ),
88 17 =>
89 array (
90 'match' => '00D1 0C1B',
91 'replace' => 'E032',
92 ),
93 18 =>
94 array (
95 'match' => '00D1 0C1C',
96 'replace' => 'E033',
97 ),
98 19 =>
99 array (
100 'match' => '00D1 0C1D',
101 'replace' => 'E034',
102 ),
103 20 =>
104 array (
105 'match' => '00D1 0C1E',
106 'replace' => 'E035',
107 ),
108 21 =>
109 array (
110 'match' => '00D1 0C1F',
111 'replace' => 'E036',
112 ),
113 22 =>
114 array (
115 'match' => '00D1 0C20',
116 'replace' => 'E037',
117 ),
118 23 =>
119 array (
120 'match' => '00D1 0C21',
121 'replace' => 'E038',
122 ),
123 24 =>
124 array (
125 'match' => '00D1 0C22',
126 'replace' => 'E039',
127 ),
128 25 =>
129 array (
130 'match' => '00D1 0C23',
131 'replace' => 'E03A',
132 ),
133 26 =>
134 array (
135 'match' => '00D1 0C24',
136 'replace' => 'E03B',
137 ),
138 27 =>
139 array (
140 'match' => '00D1 0C25',
141 'replace' => 'E03C',
142 ),
143 28 =>
144 array (
145 'match' => '00D1 0C26',
146 'replace' => 'E03D',
147 ),
148 29 =>
149 array (
150 'match' => '00D1 0C27',
151 'replace' => 'E03E',
152 ),
153 30 =>
154 array (
155 'match' => '00D1 0C28',
156 'replace' => 'E03F',
157 ),
158 31 =>
159 array (
160 'match' => '00D1 0C2A',
161 'replace' => 'E040',
162 ),
163 32 =>
164 array (
165 'match' => '00D1 0C2B',
166 'replace' => 'E041',
167 ),
168 33 =>
169 array (
170 'match' => '00D1 0C2C',
171 'replace' => 'E042',
172 ),
173 34 =>
174 array (
175 'match' => '00D1 0C2D',
176 'replace' => 'E043',
177 ),
178 35 =>
179 array (
180 'match' => '00D1 0C2E',
181 'replace' => 'E044',
182 ),
183 36 =>
184 array (
185 'match' => '00D1 0C2F',
186 'replace' => 'E045',
187 ),
188 37 =>
189 array (
190 'match' => '00D1 0C30',
191 'replace' => 'E046',
192 ),
193 38 =>
194 array (
195 'match' => '00D1 0C31',
196 'replace' => 'E047',
197 ),
198 39 =>
199 array (
200 'match' => '00D1 0C32',
201 'replace' => 'E048',
202 ),
203 40 =>
204 array (
205 'match' => '00D1 0C33',
206 'replace' => 'E049',
207 ),
208 41 =>
209 array (
210 'match' => '00D1 0C35',
211 'replace' => 'E04A',
212 ),
213 42 =>
214 array (
215 'match' => '00D1 0C36',
216 'replace' => 'E04B',
217 ),
218 43 =>
219 array (
220 'match' => '00D1 0C37',
221 'replace' => 'E04C',
222 ),
223 44 =>
224 array (
225 'match' => '00D1 0C38',
226 'replace' => 'E04D',
227 ),
228 45 =>
229 array (
230 'match' => '00D1 0C39',
231 'replace' => 'E04E',
232 ),
233 46 =>
234 array (
235 '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',
236 'replace' => '\\1 E04F',
237 ),
238 47 =>
239 array (
240 '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',
241 'replace' => '\\1 E050',
242 ),
243 48 =>
244 array (
245 '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',
246 'replace' => '\\1 E051',
247 ),
248 49 =>
249 array (
250 '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',
251 'replace' => '\\1 E052',
252 ),
253 50 =>
254 array (
255 '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',
256 'replace' => '\\1 E053',
257 ),
258 51 =>
259 array (
260 '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',
261 'replace' => '\\1 E054',
262 ),
263 52 =>
264 array (
265 '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',
266 'replace' => '\\1 E055',
267 ),
268 53 =>
269 array (
270 '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',
271 'replace' => '\\1 E056',
272 ),
273 54 =>
274 array (
275 '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',
276 'replace' => '\\1 E057',
277 ),
278 55 =>
279 array (
280 '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',
281 'replace' => '\\1 E058',
282 ),
283 56 =>
284 array (
285 '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',
286 'replace' => '\\1 E059',
287 ),
288 57 =>
289 array (
290 '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',
291 'replace' => '\\1 E05A',
292 ),
293 58 =>
294 array (
295 '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',
296 'replace' => '\\1 E05B',
297 ),
298 59 =>
299 array (
300 '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',
301 'replace' => '\\1 E05C',
302 ),
303 60 =>
304 array (
305 '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',
306 'replace' => '\\1 E05D',
307 ),
308 61 =>
309 array (
310 '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',
311 'replace' => '\\1 E05E',
312 ),
313 62 =>
314 array (
315 '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',
316 'replace' => '\\1 E05F',
317 ),
318 63 =>
319 array (
320 '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',
321 'replace' => '\\1 E060',
322 ),
323 64 =>
324 array (
325 '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',
326 'replace' => '\\1 E061',
327 ),
328 65 =>
329 array (
330 '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',
331 'replace' => '\\1 E062',
332 ),
333 66 =>
334 array (
335 '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',
336 'replace' => '\\1 E063',
337 ),
338 67 =>
339 array (
340 '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',
341 'replace' => '\\1 E064',
342 ),
343 68 =>
344 array (
345 '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',
346 'replace' => '\\1 E065',
347 ),
348 69 =>
349 array (
350 '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',
351 'replace' => '\\1 E066',
352 ),
353 70 =>
354 array (
355 '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',
356 'replace' => '\\1 E067',
357 ),
358 71 =>
359 array (
360 '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',
361 'replace' => '\\1 E068',
362 ),
363 72 =>
364 array (
365 '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',
366 'replace' => '\\1 E069',
367 ),
368 73 =>
369 array (
370 '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',
371 'replace' => '\\1 E06A',
372 ),
373 74 =>
374 array (
375 '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',
376 'replace' => '\\1 E06B',
377 ),
378 75 =>
379 array (
380 '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',
381 'replace' => '\\1 E06C',
382 ),
383 76 =>
384 array (
385 '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',
386 'replace' => '\\1 E06D',
387 ),
388 77 =>
389 array (
390 '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',
391 'replace' => '\\1 E06E',
392 ),
393 78 =>
394 array (
395 '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',
396 'replace' => '\\1 E06F',
397 ),
398 79 =>
399 array (
400 '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',
401 'replace' => '\\1 E070',
402 ),
403 80 =>
404 array (
405 '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',
406 'replace' => '\\1 E071',
407 ),
408 81 =>
409 array (
410 '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',
411 'replace' => '\\1 E072',
412 ),
413 82 =>
414 array (
415 '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',
416 'replace' => '\\1 E073',
417 ),
418 83 =>
419 array (
420 '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',
421 'replace' => '\\1 E074',
422 ),
423 84 =>
424 array (
425 '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',
426 'replace' => '\\1 E075',
427 ),
428 85 =>
429 array (
430 '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',
431 'replace' => '\\1 E076',
432 ),
433 86 =>
434 array (
435 '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',
436 'replace' => '\\1 E077',
437 ),
438 87 =>
439 array (
440 'match' => '00C9',
441 'replace' => '0C4D',
442 ),
443 88 =>
444 array (
445 'match' => '00D0',
446 'replace' => '0C4D',
447 ),
448 89 =>
449 array (
450 'match' => '00D1',
451 'replace' => '0C4D',
452 ),
453 90 =>
454 array (
455 'match' => '0C2A ((0C3E|0C4A|0C4B|0C4C))',
456 'replace' => 'E028 \\1',
457 ),
458 91 =>
459 array (
460 'match' => '0C2B ((0C3E|0C4A|0C4B|0C4C))',
461 'replace' => 'E029 \\1',
462 ),
463 92 =>
464 array (
465 'match' => '0C37 ((0C3E|0C4A|0C4B|0C4C))',
466 'replace' => 'E02A \\1',
467 ),
468 93 =>
469 array (
470 'match' => '0C38 ((0C3E|0C4A|0C4B|0C4C))',
471 'replace' => 'E02B \\1',
472 ),
473 94 =>
474 array (
475 'match' => 'E07B ((0C3E|0C4A|0C4B|0C4C))',
476 'replace' => 'E0B2 \\1',
477 ),
478 95 =>
479 array (
480 'match' => '((E028|E029|E02A|E02B)) 0C4A',
481 'replace' => '\\1 E009',
482 ),
483 96 =>
484 array (
485 'match' => '((E028|E029|E02A|E02B)) 0C4B',
486 'replace' => '\\1 E00A',
487 ),
488 97 =>
489 array (
490 'match' => '((E028|E029|E02A|E02B)) 0C4C',
491 'replace' => '\\1 E00B',
492 ),
493 98 =>
494 array (
495 'match' => '0C15 0C41',
496 'replace' => 'E07F',
497 ),
498 99 =>
499 array (
500 'match' => '0C15 0C42',
501 'replace' => 'E080',
502 ),
503 100 =>
504 array (
505 'match' => '0C16 0C3F',
506 'replace' => 'E081',
507 ),
508 101 =>
509 array (
510 'match' => '0C16 0C40',
511 'replace' => 'E082',
512 ),
513 102 =>
514 array (
515 'match' => '0C18 0C4A',
516 'replace' => 'E083',
517 ),
518 103 =>
519 array (
520 'match' => '0C18 0C4B',
521 'replace' => 'E084',
522 ),
523 104 =>
524 array (
525 'match' => '0C19 0C41',
526 'replace' => 'E085',
527 ),
528 105 =>
529 array (
530 'match' => '0C19 0C42',
531 'replace' => 'E086',
532 ),
533 106 =>
534 array (
535 'match' => '0C1A 0C3F',
536 'replace' => 'E087',
537 ),
538 107 =>
539 array (
540 'match' => '0C1A 0C40',
541 'replace' => 'E088',
542 ),
543 108 =>
544 array (
545 'match' => '0C1B 0C3F',
546 'replace' => 'E089',
547 ),
548 109 =>
549 array (
550 'match' => '0C1B 0C40',
551 'replace' => 'E08A',
552 ),
553 110 =>
554 array (
555 'match' => '0C1C 0C3F',
556 'replace' => 'E08B',
557 ),
558 111 =>
559 array (
560 'match' => '0C1C 0C40',
561 'replace' => 'E08C',
562 ),
563 112 =>
564 array (
565 'match' => '0C1C 0C41',
566 'replace' => 'E08D',
567 ),
568 113 =>
569 array (
570 'match' => '0C1C 0C42',
571 'replace' => 'E08E',
572 ),
573 114 =>
574 array (
575 'match' => '0C1D 0C4A',
576 'replace' => 'E08F',
577 ),
578 115 =>
579 array (
580 'match' => '0C1D 0C4B',
581 'replace' => 'E090',
582 ),
583 116 =>
584 array (
585 'match' => '0C24 0C3F',
586 'replace' => 'E091',
587 ),
588 117 =>
589 array (
590 'match' => '0C24 0C40',
591 'replace' => 'E092',
592 ),
593 118 =>
594 array (
595 'match' => '0C28 0C3F',
596 'replace' => 'E093',
597 ),
598 119 =>
599 array (
600 'match' => '0C28 0C40',
601 'replace' => 'E094',
602 ),
603 120 =>
604 array (
605 'match' => '0C2C 0C3F',
606 'replace' => 'E095',
607 ),
608 121 =>
609 array (
610 'match' => '0C2C 0C40',
611 'replace' => 'E096',
612 ),
613 122 =>
614 array (
615 'match' => '0C2D 0C3F',
616 'replace' => 'E097',
617 ),
618 123 =>
619 array (
620 'match' => '0C2D 0C40',
621 'replace' => 'E098',
622 ),
623 124 =>
624 array (
625 'match' => '0C2E 0C3F',
626 'replace' => 'E099',
627 ),
628 125 =>
629 array (
630 'match' => '0C2E 0C40',
631 'replace' => 'E09A',
632 ),
633 126 =>
634 array (
635 'match' => '0C2E 0C4A',
636 'replace' => 'E09B',
637 ),
638 127 =>
639 array (
640 'match' => '0C2E 0C4B',
641 'replace' => 'E09C',
642 ),
643 128 =>
644 array (
645 'match' => '0C2F 0C3F',
646 'replace' => 'E09D',
647 ),
648 129 =>
649 array (
650 'match' => '0C2F 0C40',
651 'replace' => 'E09E',
652 ),
653 130 =>
654 array (
655 'match' => '0C2F 0C4A',
656 'replace' => 'E09F',
657 ),
658 131 =>
659 array (
660 'match' => '0C2F 0C4B',
661 'replace' => 'E0A0',
662 ),
663 132 =>
664 array (
665 'match' => '0C32 0C3F',
666 'replace' => 'E0A1',
667 ),
668 133 =>
669 array (
670 'match' => '0C32 0C40',
671 'replace' => 'E0A2',
672 ),
673 134 =>
674 array (
675 'match' => '0C33 0C3F',
676 'replace' => 'E0A3',
677 ),
678 135 =>
679 array (
680 'match' => '0C33 0C40',
681 'replace' => 'E0A4',
682 ),
683 136 =>
684 array (
685 'match' => '0C35 0C3F',
686 'replace' => 'E0A5',
687 ),
688 137 =>
689 array (
690 'match' => '0C35 0C40',
691 'replace' => 'E0A6',
692 ),
693 138 =>
694 array (
695 'match' => '0C36 0C41',
696 'replace' => 'E0A7',
697 ),
698 139 =>
699 array (
700 'match' => '0C36 0C42',
701 'replace' => 'E0A8',
702 ),
703 140 =>
704 array (
705 'match' => '0C36 0C3F',
706 'replace' => 'E0A9',
707 ),
708 141 =>
709 array (
710 'match' => '0C36 0C40',
711 'replace' => 'E0AA',
712 ),
713 142 =>
714 array (
715 'match' => '0C39 0C3E',
716 'replace' => 'E0AB',
717 ),
718 143 =>
719 array (
720 'match' => '0C39 0C41',
721 'replace' => 'E0AC',
722 ),
723 144 =>
724 array (
725 'match' => '0C39 0C42',
726 'replace' => 'E0AD',
727 ),
728 145 =>
729 array (
730 'match' => 'E078 0C41',
731 'replace' => 'E0AE',
732 ),
733 146 =>
734 array (
735 'match' => 'E078 0C42',
736 'replace' => 'E0AF',
737 ),
738 147 =>
739 array (
740 'match' => 'E07A 0C48',
741 'replace' => 'E0B0',
742 ),
743 148 =>
744 array (
745 'match' => 'E07B 0C48',
746 'replace' => 'E0B1',
747 ),
748 149 =>
749 array (
750 'match' => 'E07A 0C3F',
751 'replace' => 'E0DA',
752 ),
753 150 =>
754 array (
755 'match' => 'E07A 0C40',
756 'replace' => 'E0DB',
757 ),
758 151 =>
759 array (
760 'match' => 'E07B 0C3F',
761 'replace' => 'E0DC',
762 ),
763 152 =>
764 array (
765 'match' => 'E07B 0C40',
766 'replace' => 'E0DD',
767 ),
768 153 =>
769 array (
770 'match' => '0C15 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
771 'replace' => 'E00D \\1',
772 ),
773 154 =>
774 array (
775 'match' => '0C17 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
776 'replace' => 'E00E \\1',
777 ),
778 155 =>
779 array (
780 'match' => '0C18 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
781 'replace' => 'E00F \\1',
782 ),
783 156 =>
784 array (
785 'match' => '0C1A ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
786 'replace' => 'E010 \\1',
787 ),
788 157 =>
789 array (
790 'match' => '0C1B ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
791 'replace' => 'E011 \\1',
792 ),
793 158 =>
794 array (
795 'match' => '0C1C ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
796 'replace' => 'E012 \\1',
797 ),
798 159 =>
799 array (
800 'match' => '0C1D ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
801 'replace' => 'E013 \\1',
802 ),
803 160 =>
804 array (
805 'match' => '0C20 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
806 'replace' => 'E014 \\1',
807 ),
808 161 =>
809 array (
810 'match' => '0C21 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
811 'replace' => 'E015 \\1',
812 ),
813 162 =>
814 array (
815 'match' => '0C22 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
816 'replace' => 'E016 \\1',
817 ),
818 163 =>
819 array (
820 'match' => '0C24 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
821 'replace' => 'E017 \\1',
822 ),
823 164 =>
824 array (
825 'match' => '0C25 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
826 'replace' => 'E018 \\1',
827 ),
828 165 =>
829 array (
830 'match' => '0C26 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
831 'replace' => 'E019 \\1',
832 ),
833 166 =>
834 array (
835 'match' => '0C27 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
836 'replace' => 'E01A \\1',
837 ),
838 167 =>
839 array (
840 'match' => '0C28 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
841 'replace' => 'E01B \\1',
842 ),
843 168 =>
844 array (
845 'match' => '0C2A ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
846 'replace' => 'E01C \\1',
847 ),
848 169 =>
849 array (
850 'match' => '0C2B ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
851 'replace' => 'E01D \\1',
852 ),
853 170 =>
854 array (
855 'match' => '0C2D ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
856 'replace' => 'E01E \\1',
857 ),
858 171 =>
859 array (
860 'match' => '0C2E ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
861 'replace' => 'E01F \\1',
862 ),
863 172 =>
864 array (
865 'match' => '0C2F ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
866 'replace' => 'E020 \\1',
867 ),
868 173 =>
869 array (
870 'match' => '0C30 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
871 'replace' => 'E021 \\1',
872 ),
873 174 =>
874 array (
875 'match' => '0C33 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
876 'replace' => 'E022 \\1',
877 ),
878 175 =>
879 array (
880 'match' => '0C35 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
881 'replace' => 'E023 \\1',
882 ),
883 176 =>
884 array (
885 'match' => '0C36 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
886 'replace' => 'E024 \\1',
887 ),
888 177 =>
889 array (
890 'match' => '0C37 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
891 'replace' => 'E025 \\1',
892 ),
893 178 =>
894 array (
895 'match' => '0C38 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
896 'replace' => 'E026 \\1',
897 ),
898 179 =>
899 array (
900 'match' => '0C39 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
901 'replace' => 'E027 \\1',
902 ),
903 180 =>
904 array (
905 'match' => 'E078 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
906 'replace' => 'E07C \\1',
907 ),
908 181 =>
909 array (
910 'match' => 'E07A ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
911 'replace' => 'E07D \\1',
912 ),
913 182 =>
914 array (
915 'match' => 'E07B ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
916 'replace' => 'E07E \\1',
917 ),
918 183 =>
919 array (
920 'match' => '0C15 (0C3E)',
921 'replace' => 'E00D \\1',
922 ),
923 184 =>
924 array (
925 'match' => '0C17 (0C3E)',
926 'replace' => 'E00E \\1',
927 ),
928 185 =>
929 array (
930 'match' => '0C18 (0C3E)',
931 'replace' => 'E00F \\1',
932 ),
933 186 =>
934 array (
935 'match' => '0C1A (0C3E)',
936 'replace' => 'E010 \\1',
937 ),
938 187 =>
939 array (
940 'match' => '0C1B (0C3E)',
941 'replace' => 'E011 \\1',
942 ),
943 188 =>
944 array (
945 'match' => '0C1C (0C3E)',
946 'replace' => 'E012 \\1',
947 ),
948 189 =>
949 array (
950 'match' => '0C1D (0C3E)',
951 'replace' => 'E013 \\1',
952 ),
953 190 =>
954 array (
955 'match' => '0C20 (0C3E)',
956 'replace' => 'E014 \\1',
957 ),
958 191 =>
959 array (
960 'match' => '0C21 (0C3E)',
961 'replace' => 'E015 \\1',
962 ),
963 192 =>
964 array (
965 'match' => '0C22 (0C3E)',
966 'replace' => 'E016 \\1',
967 ),
968 193 =>
969 array (
970 'match' => '0C24 (0C3E)',
971 'replace' => 'E017 \\1',
972 ),
973 194 =>
974 array (
975 'match' => '0C25 (0C3E)',
976 'replace' => 'E018 \\1',
977 ),
978 195 =>
979 array (
980 'match' => '0C26 (0C3E)',
981 'replace' => 'E019 \\1',
982 ),
983 196 =>
984 array (
985 'match' => '0C27 (0C3E)',
986 'replace' => 'E01A \\1',
987 ),
988 197 =>
989 array (
990 'match' => '0C28 (0C3E)',
991 'replace' => 'E01B \\1',
992 ),
993 198 =>
994 array (
995 'match' => '0C2A (0C3E)',
996 'replace' => 'E01C \\1',
997 ),
998 199 =>
999 array (
1000 'match' => '0C2B (0C3E)',
1001 'replace' => 'E01D \\1',
1002 ),
1003 200 =>
1004 array (
1005 'match' => '0C2D (0C3E)',
1006 'replace' => 'E01E \\1',
1007 ),
1008 201 =>
1009 array (
1010 'match' => '0C2E (0C3E)',
1011 'replace' => 'E01F \\1',
1012 ),
1013 202 =>
1014 array (
1015 'match' => '0C2F (0C3E)',
1016 'replace' => 'E020 \\1',
1017 ),
1018 203 =>
1019 array (
1020 'match' => '0C30 (0C3E)',
1021 'replace' => 'E021 \\1',
1022 ),
1023 204 =>
1024 array (
1025 'match' => '0C33 (0C3E)',
1026 'replace' => 'E022 \\1',
1027 ),
1028 205 =>
1029 array (
1030 'match' => '0C35 (0C3E)',
1031 'replace' => 'E023 \\1',
1032 ),
1033 206 =>
1034 array (
1035 'match' => '0C36 (0C3E)',
1036 'replace' => 'E024 \\1',
1037 ),
1038 207 =>
1039 array (
1040 'match' => '0C37 (0C3E)',
1041 'replace' => 'E025 \\1',
1042 ),
1043 208 =>
1044 array (
1045 'match' => '0C38 (0C3E)',
1046 'replace' => 'E026 \\1',
1047 ),
1048 209 =>
1049 array (
1050 'match' => '0C39 (0C3E)',
1051 'replace' => 'E027 \\1',
1052 ),
1053 210 =>
1054 array (
1055 'match' => 'E078 (0C3E)',
1056 'replace' => 'E07C \\1',
1057 ),
1058 211 =>
1059 array (
1060 'match' => 'E07A (0C3E)',
1061 'replace' => 'E07D \\1',
1062 ),
1063 212 =>
1064 array (
1065 'match' => 'E07B (0C3E)',
1066 'replace' => 'E07E \\1',
1067 ),
1068 213 =>
1069 array (
1070 'match' => '0C15 (0C4C)',
1071 'replace' => 'E00D \\1',
1072 ),
1073 214 =>
1074 array (
1075 'match' => '0C17 (0C4C)',
1076 'replace' => 'E00E \\1',
1077 ),
1078 215 =>
1079 array (
1080 'match' => '0C18 (0C4C)',
1081 'replace' => 'E00F \\1',
1082 ),
1083 216 =>
1084 array (
1085 'match' => '0C1A (0C4C)',
1086 'replace' => 'E010 \\1',
1087 ),
1088 217 =>
1089 array (
1090 'match' => '0C1B (0C4C)',
1091 'replace' => 'E011 \\1',
1092 ),
1093 218 =>
1094 array (
1095 'match' => '0C1C (0C4C)',
1096 'replace' => 'E012 \\1',
1097 ),
1098 219 =>
1099 array (
1100 'match' => '0C1D (0C4C)',
1101 'replace' => 'E013 \\1',
1102 ),
1103 220 =>
1104 array (
1105 'match' => '0C20 (0C4C)',
1106 'replace' => 'E014 \\1',
1107 ),
1108 221 =>
1109 array (
1110 'match' => '0C21 (0C4C)',
1111 'replace' => 'E015 \\1',
1112 ),
1113 222 =>
1114 array (
1115 'match' => '0C22 (0C4C)',
1116 'replace' => 'E016 \\1',
1117 ),
1118 223 =>
1119 array (
1120 'match' => '0C24 (0C4C)',
1121 'replace' => 'E017 \\1',
1122 ),
1123 224 =>
1124 array (
1125 'match' => '0C25 (0C4C)',
1126 'replace' => 'E018 \\1',
1127 ),
1128 225 =>
1129 array (
1130 'match' => '0C26 (0C4C)',
1131 'replace' => 'E019 \\1',
1132 ),
1133 226 =>
1134 array (
1135 'match' => '0C27 (0C4C)',
1136 'replace' => 'E01A \\1',
1137 ),
1138 227 =>
1139 array (
1140 'match' => '0C28 (0C4C)',
1141 'replace' => 'E01B \\1',
1142 ),
1143 228 =>
1144 array (
1145 'match' => '0C2A (0C4C)',
1146 'replace' => 'E01C \\1',
1147 ),
1148 229 =>
1149 array (
1150 'match' => '0C2B (0C4C)',
1151 'replace' => 'E01D \\1',
1152 ),
1153 230 =>
1154 array (
1155 'match' => '0C2D (0C4C)',
1156 'replace' => 'E01E \\1',
1157 ),
1158 231 =>
1159 array (
1160 'match' => '0C2E (0C4C)',
1161 'replace' => 'E01F \\1',
1162 ),
1163 232 =>
1164 array (
1165 'match' => '0C2F (0C4C)',
1166 'replace' => 'E020 \\1',
1167 ),
1168 233 =>
1169 array (
1170 'match' => '0C30 (0C4C)',
1171 'replace' => 'E021 \\1',
1172 ),
1173 234 =>
1174 array (
1175 'match' => '0C33 (0C4C)',
1176 'replace' => 'E022 \\1',
1177 ),
1178 235 =>
1179 array (
1180 'match' => '0C35 (0C4C)',
1181 'replace' => 'E023 \\1',
1182 ),
1183 236 =>
1184 array (
1185 'match' => '0C36 (0C4C)',
1186 'replace' => 'E024 \\1',
1187 ),
1188 237 =>
1189 array (
1190 'match' => '0C37 (0C4C)',
1191 'replace' => 'E025 \\1',
1192 ),
1193 238 =>
1194 array (
1195 'match' => '0C38 (0C4C)',
1196 'replace' => 'E026 \\1',
1197 ),
1198 239 =>
1199 array (
1200 'match' => '0C39 (0C4C)',
1201 'replace' => 'E027 \\1',
1202 ),
1203 240 =>
1204 array (
1205 'match' => 'E078 (0C4C)',
1206 'replace' => 'E07C \\1',
1207 ),
1208 241 =>
1209 array (
1210 'match' => 'E07A (0C4C)',
1211 'replace' => 'E07D \\1',
1212 ),
1213 242 =>
1214 array (
1215 'match' => 'E07B (0C4C)',
1216 'replace' => 'E07E \\1',
1217 ),
1218 243 =>
1219 array (
1220 'match' => '0C15 (0C4D)',
1221 'replace' => 'E00D \\1',
1222 ),
1223 244 =>
1224 array (
1225 'match' => '0C17 (0C4D)',
1226 'replace' => 'E00E \\1',
1227 ),
1228 245 =>
1229 array (
1230 'match' => '0C18 (0C4D)',
1231 'replace' => 'E00F \\1',
1232 ),
1233 246 =>
1234 array (
1235 'match' => '0C1A (0C4D)',
1236 'replace' => 'E010 \\1',
1237 ),
1238 247 =>
1239 array (
1240 'match' => '0C1B (0C4D)',
1241 'replace' => 'E011 \\1',
1242 ),
1243 248 =>
1244 array (
1245 'match' => '0C1C (0C4D)',
1246 'replace' => 'E012 \\1',
1247 ),
1248 249 =>
1249 array (
1250 'match' => '0C1D (0C4D)',
1251 'replace' => 'E013 \\1',
1252 ),
1253 250 =>
1254 array (
1255 'match' => '0C20 (0C4D)',
1256 'replace' => 'E014 \\1',
1257 ),
1258 251 =>
1259 array (
1260 'match' => '0C21 (0C4D)',
1261 'replace' => 'E015 \\1',
1262 ),
1263 252 =>
1264 array (
1265 'match' => '0C22 (0C4D)',
1266 'replace' => 'E016 \\1',
1267 ),
1268 253 =>
1269 array (
1270 'match' => '0C24 (0C4D)',
1271 'replace' => 'E017 \\1',
1272 ),
1273 254 =>
1274 array (
1275 'match' => '0C25 (0C4D)',
1276 'replace' => 'E018 \\1',
1277 ),
1278 255 =>
1279 array (
1280 'match' => '0C26 (0C4D)',
1281 'replace' => 'E019 \\1',
1282 ),
1283 256 =>
1284 array (
1285 'match' => '0C27 (0C4D)',
1286 'replace' => 'E01A \\1',
1287 ),
1288 257 =>
1289 array (
1290 'match' => '0C28 (0C4D)',
1291 'replace' => 'E01B \\1',
1292 ),
1293 258 =>
1294 array (
1295 'match' => '0C2A (0C4D)',
1296 'replace' => 'E01C \\1',
1297 ),
1298 259 =>
1299 array (
1300 'match' => '0C2B (0C4D)',
1301 'replace' => 'E01D \\1',
1302 ),
1303 260 =>
1304 array (
1305 'match' => '0C2D (0C4D)',
1306 'replace' => 'E01E \\1',
1307 ),
1308 261 =>
1309 array (
1310 'match' => '0C2E (0C4D)',
1311 'replace' => 'E01F \\1',
1312 ),
1313 262 =>
1314 array (
1315 'match' => '0C2F (0C4D)',
1316 'replace' => 'E020 \\1',
1317 ),
1318 263 =>
1319 array (
1320 'match' => '0C30 (0C4D)',
1321 'replace' => 'E021 \\1',
1322 ),
1323 264 =>
1324 array (
1325 'match' => '0C33 (0C4D)',
1326 'replace' => 'E022 \\1',
1327 ),
1328 265 =>
1329 array (
1330 'match' => '0C35 (0C4D)',
1331 'replace' => 'E023 \\1',
1332 ),
1333 266 =>
1334 array (
1335 'match' => '0C36 (0C4D)',
1336 'replace' => 'E024 \\1',
1337 ),
1338 267 =>
1339 array (
1340 'match' => '0C37 (0C4D)',
1341 'replace' => 'E025 \\1',
1342 ),
1343 268 =>
1344 array (
1345 'match' => '0C38 (0C4D)',
1346 'replace' => 'E026 \\1',
1347 ),
1348 269 =>
1349 array (
1350 'match' => '0C39 (0C4D)',
1351 'replace' => 'E027 \\1',
1352 ),
1353 270 =>
1354 array (
1355 'match' => 'E078 (0C4D)',
1356 'replace' => 'E07C \\1',
1357 ),
1358 271 =>
1359 array (
1360 'match' => 'E07A (0C4D)',
1361 'replace' => 'E07D \\1',
1362 ),
1363 272 =>
1364 array (
1365 'match' => 'E07B (0C4D)',
1366 'replace' => 'E07E \\1',
1367 ),
1368 273 =>
1369 array (
1370 'match' => 'E00F (0C3E)',
1371 'replace' => '0C18 \\1',
1372 ),
1373 274 =>
1374 array (
1375 'match' => 'E013 (0C3E)',
1376 'replace' => '0C1D \\1',
1377 ),
1378 275 =>
1379 array (
1380 'match' => 'E01F (0C3E)',
1381 'replace' => '0C2E \\1',
1382 ),
1383 276 =>
1384 array (
1385 'match' => 'E020 (0C3E)',
1386 'replace' => '0C2F \\1',
1387 ),
1388 277 =>
1389 array (
1390 'match' => 'E027 (0C3E)',
1391 'replace' => '0C39 \\1',
1392 ),
1393 278 =>
1394 array (
1395 'match' => 'E00F (0C4C)',
1396 'replace' => '0C18 \\1',
1397 ),
1398 279 =>
1399 array (
1400 'match' => 'E013 (0C4C)',
1401 'replace' => '0C1D \\1',
1402 ),
1403 280 =>
1404 array (
1405 'match' => 'E01F (0C4C)',
1406 'replace' => '0C2E \\1',
1407 ),
1408 281 =>
1409 array (
1410 'match' => 'E020 (0C4C)',
1411 'replace' => '0C2F \\1',
1412 ),
1413 282 =>
1414 array (
1415 'match' => 'E027 (0C4C)',
1416 'replace' => '0C39 \\1',
1417 ),
1418 283 =>
1419 array (
1420 'match' => '((E00F|0C1F|E01C|E01D|E025|E026|E027)) 0C46',
1421 'replace' => '\\1 E007',
1422 ),
1423 284 =>
1424 array (
1425 'match' => '((E00F|0C1F|E01C|E01D|E025|E026|E027)) 0C47',
1426 'replace' => '\\1 E008',
1427 ),
1428 285 =>
1429 array (
1430 'match' => '((0C16|0C18|0C1F|0C2C|E01E|0C2E|0C2F|0C32|0C1D)) 0C3E',
1431 'replace' => '\\1 E002',
1432 ),
1433 286 =>
1434 array (
1435 'match' => '((0C19|0C1C)) 0C3E',
1436 'replace' => '\\1 E003',
1437 ),
1438 287 =>
1439 array (
1440 'match' => '((0C1E|E022)) 0C3E',
1441 'replace' => '\\1 E004',
1442 ),
1443 288 =>
1444 array (
1445 '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',
1446 'replace' => '\\1 E00C',
1447 ),
1448 289 =>
1449 array (
1450 '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',
1451 'replace' => '\\1 E00C',
1452 ),
1453 290 =>
1454 array (
1455 'match' => '(0C33) 0C41',
1456 'replace' => '\\1 E005',
1457 ),
1458 291 =>
1459 array (
1460 'match' => '(0C33) 0C42',
1461 'replace' => '\\1 E0DE',
1462 ),
1463 292 =>
1464 array (
1465 'match' => '((0C2A|0C2B|0C35)) 0C41',
1466 'replace' => '\\1 E006',
1467 ),
1468 293 =>
1469 array (
1470 'match' => '((0C2A|0C2B|0C35)) 0C42',
1471 'replace' => '\\1 E0DF',
1472 ),
1473 294 =>
1474 array (
1475 'match' => 'E046 (E07C 0C46 0C56)',
1476 'replace' => 'E077 \\1',
1477 ),
1478 295 =>
1479 array (
1480 '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)',
1481 'replace' => 'E069 \\1',
1482 ),
1483 296 =>
1484 array (
1485 'match' => '0C4D',
1486 'replace' => 'E0E0',
1487 ),
1488);
1489?> \ 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
index a690485e..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/no_image.jpg
+++ /dev/null
Binary files differ
diff --git a/inc/3rdparty/libraries/mpdf/includes/out.php b/inc/3rdparty/libraries/mpdf/includes/out.php
deleted file mode 100644
index 75da4553..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/out.php
+++ /dev/null
@@ -1,59 +0,0 @@
1<?php
2
3$path = '../tmp/';
4
5$tempfilename = $_REQUEST['filename'].'.pdf';
6if (strstr($tempfilename,'/') || strstr($tempfilename,'\\')) { die("Filename should not contain \ or / "); }
7$opname = $_REQUEST['opname'];
8$dest = $_REQUEST['dest'];
9 if ($tempfilename && file_exists($path.$tempfilename)) {
10 // mPDF 5.3.17
11 if ($dest=='I') {
12 if(PHP_SAPI!='cli') {
13 header('Content-Type: application/pdf');
14 header('Content-disposition: inline; filename="'.$name.'"');
15 header('Cache-Control: public, must-revalidate, max-age=0');
16 header('Pragma: public');
17 header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
18 header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
19 }
20 }
21
22 else if ($dest=='D') {
23 header('Content-Description: File Transfer');
24 if (headers_sent())
25 $this->Error('Some data has already been output to browser, can\'t send PDF file');
26 header('Content-Transfer-Encoding: binary');
27 header('Cache-Control: public, must-revalidate, max-age=0');
28 header('Pragma: public');
29 header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
30 header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
31 header('Content-Type: application/force-download');
32 header('Content-Type: application/octet-stream', false);
33 header('Content-Type: application/download', false);
34 header('Content-Type: application/pdf', false);
35 header('Content-disposition: attachment; filename="'.$name.'"');
36 }
37 $filesize = filesize($path.$tempfilename);
38 if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
39 // don't use length if server using compression
40 header('Content-Length: '.$filesize);
41 }
42 $fd=fopen($path.$tempfilename,'rb');
43 fpassthru($fd);
44 fclose($fd);
45 unlink($path.$tempfilename);
46 // ====================== DELETE OLD FILES - Housekeeping =========================================
47 // Clear any files in directory that are >24 hrs old
48 $interval = 86400;
49 if ($handle = opendir(dirname($path.'dummy'))) {
50 while (false !== ($file = readdir($handle))) {
51 if (((filemtime($path.$file)+$interval) < time()) && ($file != "..") && ($file != ".") && substr($file, -3)=='pdf') {
52 unlink($path.$file);
53 }
54 }
55 closedir($handle);
56 }
57 exit;
58 }
59?> \ 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
index 326a3f4b..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/subs_core.php
+++ /dev/null
@@ -1,454 +0,0 @@
1<?php
2$aarr = array(
3160 => 160,
4161 => 161,
5162 => 162,
6163 => 163,
7164 => 164,
8165 => 165,
9166 => 166,
10167 => 167,
11168 => 168,
12169 => 169,
13170 => 170,
14171 => 171,
15172 => 172,
16173 => 173,
17174 => 174,
18175 => 175,
19176 => 176,
20177 => 177,
21178 => 178,
22179 => 179,
23180 => 180,
24181 => 181,
25182 => 182,
26183 => 183,
27184 => 184,
28185 => 185,
29186 => 186,
30187 => 187,
31188 => 188,
32189 => 189,
33190 => 190,
34191 => 191,
35192 => 192,
36193 => 193,
37194 => 194,
38195 => 195,
39196 => 196,
40197 => 197,
41198 => 198,
42199 => 199,
43200 => 200,
44201 => 201,
45202 => 202,
46203 => 203,
47204 => 204,
48205 => 205,
49206 => 206,
50207 => 207,
51208 => 208,
52209 => 209,
53210 => 210,
54211 => 211,
55212 => 212,
56213 => 213,
57214 => 214,
58215 => 215,
59216 => 216,
60217 => 217,
61218 => 218,
62219 => 219,
63220 => 220,
64221 => 221,
65222 => 222,
66223 => 223,
67224 => 224,
68225 => 225,
69226 => 226,
70227 => 227,
71228 => 228,
72229 => 229,
73230 => 230,
74231 => 231,
75232 => 232,
76233 => 233,
77234 => 234,
78235 => 235,
79236 => 236,
80237 => 237,
81238 => 238,
82239 => 239,
83240 => 240,
84241 => 241,
85242 => 242,
86243 => 243,
87244 => 244,
88245 => 245,
89246 => 246,
90247 => 247,
91248 => 248,
92249 => 249,
93250 => 250,
94251 => 251,
95252 => 252,
96253 => 253,
97254 => 254,
98255 => 255,
99338 => 140,
100339 => 156,
101352 => 138,
102353 => 154,
103376 => 159,
104381 => 142,
105382 => 158,
106402 => 131,
107710 => 136,
108732 => 152,
1098211 => 150,
1108212 => 151,
1118216 => 145,
1128217 => 146,
1138218 => 130,
1148220 => 147,
1158221 => 148,
1168222 => 132,
1178224 => 134,
1188225 => 135,
1198226 => 149,
1208230 => 133,
1218240 => 137,
1228249 => 139,
1238250 => 155,
1248364 => 128,
1258482 => 153
126);
127
128$zarr = array(
1298594 => 213,
1308596 => 214,
1318597 => 215,
1329312 => 172,
1339313 => 173,
1349314 => 174,
1359315 => 175,
1369316 => 176,
1379317 => 177,
1389318 => 178,
1399319 => 179,
1409320 => 180,
1419321 => 181,
1429632 => 110,
1439650 => 115,
1449660 => 116,
1459670 => 117,
1469679 => 108,
1479687 => 119,
1489733 => 72,
1499742 => 37,
1509755 => 42,
1519758 => 43,
1529824 => 171,
1539827 => 168,
1549829 => 170,
1559830 => 169,
1569985 => 33,
1579986 => 34,
1589987 => 35,
1599988 => 36,
1609990 => 38,
1619991 => 39,
1629992 => 40,
1639993 => 41,
1649996 => 44,
1659997 => 45,
1669998 => 46,
1679999 => 47,
16810000 => 48,
16910001 => 49,
17010002 => 50,
17110003 => 51,
17210004 => 52,
17310005 => 53,
17410006 => 54,
17510007 => 55,
17610008 => 56,
17710009 => 57,
17810010 => 58,
17910011 => 59,
18010012 => 60,
18110013 => 61,
18210014 => 62,
18310015 => 63,
18410016 => 64,
18510017 => 65,
18610018 => 66,
18710019 => 67,
18810020 => 68,
18910021 => 69,
19010022 => 70,
19110023 => 71,
19210025 => 73,
19310026 => 74,
19410027 => 75,
19510028 => 76,
19610029 => 77,
19710030 => 78,
19810031 => 79,
19910032 => 80,
20010033 => 81,
20110034 => 82,
20210035 => 83,
20310036 => 84,
20410037 => 85,
20510038 => 86,
20610039 => 87,
20710040 => 88,
20810041 => 89,
20910042 => 90,
21010043 => 91,
21110044 => 92,
21210045 => 93,
21310046 => 94,
21410047 => 95,
21510048 => 96,
21610049 => 97,
21710050 => 98,
21810051 => 99,
21910052 => 100,
22010053 => 101,
22110054 => 102,
22210055 => 103,
22310056 => 104,
22410057 => 105,
22510058 => 106,
22610059 => 107,
22710061 => 109,
22810063 => 111,
22910064 => 112,
23010065 => 113,
23110066 => 114,
23210070 => 118,
23310072 => 120,
23410073 => 121,
23510074 => 122,
23610075 => 123,
23710076 => 124,
23810077 => 125,
23910078 => 126,
24010081 => 161,
24110082 => 162,
24210083 => 163,
24310084 => 164,
24410085 => 165,
24510086 => 166,
24610087 => 167,
24710102 => 182,
24810103 => 183,
24910104 => 184,
25010105 => 185,
25110106 => 186,
25210107 => 187,
25310108 => 188,
25410109 => 189,
25510110 => 190,
25610111 => 191,
25710112 => 192,
25810113 => 193,
25910114 => 194,
26010115 => 195,
26110116 => 196,
26210117 => 197,
26310118 => 198,
26410119 => 199,
26510120 => 200,
26610121 => 201,
26710122 => 202,
26810123 => 203,
26910124 => 204,
27010125 => 205,
27110126 => 206,
27210127 => 207,
27310128 => 208,
27410129 => 209,
27510130 => 210,
27610131 => 211,
27710132 => 212,
27810136 => 216,
27910137 => 217,
28010138 => 218,
28110139 => 219,
28210140 => 220,
28310141 => 221,
28410142 => 222,
28510143 => 223,
28610144 => 224,
28710145 => 225,
28810146 => 226,
28910147 => 227,
29010148 => 228,
29110149 => 229,
29210150 => 230,
29310151 => 231,
29410152 => 232,
29510153 => 233,
29610154 => 234,
29710155 => 235,
29810156 => 236,
29910157 => 237,
30010158 => 238,
30110159 => 239,
30210161 => 241,
30310162 => 242,
30410163 => 243,
30510164 => 244,
30610165 => 245,
30710166 => 246,
30810167 => 247,
30910168 => 248,
31010169 => 249,
31110170 => 250,
31210171 => 251,
31310172 => 252,
31410173 => 253,
31510174 => 254
316);
317
318$sarr = array(
319169 => 227,
320172 => 216,
321174 => 226,
322176 => 176,
323177 => 177,
324181 => 109,
325215 => 180,
326247 => 184,
327402 => 166,
328913 => 65,
329914 => 66,
330915 => 71,
331916 => 68,
332917 => 69,
333918 => 90,
334919 => 72,
335920 => 81,
336921 => 73,
337922 => 75,
338923 => 76,
339924 => 77,
340925 => 78,
341926 => 88,
342927 => 79,
343928 => 80,
344929 => 82,
345931 => 83,
346932 => 84,
347933 => 85,
348934 => 70,
349935 => 67,
350936 => 89,
351937 => 87,
352945 => 97,
353946 => 98,
354947 => 103,
355948 => 100,
356949 => 101,
357950 => 122,
358951 => 104,
359952 => 113,
360953 => 105,
361954 => 107,
362955 => 108,
363956 => 109,
364957 => 110,
365958 => 120,
366959 => 111,
367960 => 112,
368961 => 114,
369962 => 86,
370963 => 115,
371964 => 116,
372965 => 117,
373966 => 102,
374967 => 99,
375968 => 121,
376969 => 119,
377977 => 74,
378978 => 161,
379981 => 106,
380982 => 118,
3818226 => 183,
3828230 => 188,
3838242 => 162,
3848243 => 178,
3858260 => 164,
3868465 => 193,
3878472 => 195,
3888476 => 194,
3898482 => 228,
3908486 => 87,
3918501 => 192,
3928592 => 172,
3938593 => 173,
3948594 => 174,
3958595 => 175,
3968596 => 171,
3978629 => 191,
3988656 => 220,
3998657 => 221,
4008658 => 222,
4018659 => 223,
4028660 => 219,
4038704 => 34,
4048706 => 182,
4058707 => 36,
4068709 => 198,
4078710 => 68,
4088711 => 209,
4098712 => 206,
4108713 => 207,
4118715 => 39,
4128719 => 213,
4138721 => 229,
4148722 => 45,
4158725 => 164,
4168727 => 42,
4178730 => 214,
4188733 => 181,
4198734 => 165,
4208736 => 208,
4218743 => 217,
4228744 => 218,
4238745 => 199,
4248746 => 200,
4258747 => 242,
4268756 => 92,
4278764 => 126,
4288773 => 64,
4298776 => 187,
4308800 => 185,
4318801 => 186,
4328804 => 163,
4338805 => 179,
4348834 => 204,
4358835 => 201,
4368836 => 203,
4378838 => 205,
4388839 => 202,
4398853 => 197,
4408855 => 196,
4418869 => 94,
4428901 => 215,
4438992 => 243,
4448993 => 245,
4459001 => 225,
4469002 => 241,
4479674 => 224,
4489824 => 170,
4499827 => 167,
4509829 => 169,
4519830 => 168
452);
453
454?> \ 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
index 6658ff72..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/subs_win-1252.php
+++ /dev/null
@@ -1,308 +0,0 @@
1<?php
2
3$subsarray = array (
4 913 => '<tts>65</tts>',
5 914 => '<tts>66</tts>',
6 915 => '<tts>71</tts>',
7 916 => '<tts>68</tts>',
8 917 => '<tts>69</tts>',
9 918 => '<tts>90</tts>',
10 919 => '<tts>72</tts>',
11 920 => '<tts>81</tts>',
12 921 => '<tts>73</tts>',
13 922 => '<tts>75</tts>',
14 923 => '<tts>76</tts>',
15 924 => '<tts>77</tts>',
16 925 => '<tts>78</tts>',
17 926 => '<tts>88</tts>',
18 927 => '<tts>79</tts>',
19 928 => '<tts>80</tts>',
20 929 => '<tts>82</tts>',
21 931 => '<tts>83</tts>',
22 932 => '<tts>84</tts>',
23 933 => '<tts>85</tts>',
24 934 => '<tts>70</tts>',
25 935 => '<tts>67</tts>',
26 936 => '<tts>89</tts>',
27 937 => '<tts>87</tts>',
28 945 => '<tts>97</tts>',
29 946 => '<tts>98</tts>',
30 947 => '<tts>103</tts>',
31 948 => '<tts>100</tts>',
32 949 => '<tts>101</tts>',
33 950 => '<tts>122</tts>',
34 951 => '<tts>104</tts>',
35 952 => '<tts>113</tts>',
36 953 => '<tts>105</tts>',
37 954 => '<tts>107</tts>',
38 955 => '<tts>108</tts>',
39 956 => '<tts>109</tts>',
40 957 => '<tts>110</tts>',
41 958 => '<tts>120</tts>',
42 959 => '<tts>111</tts>',
43 960 => '<tts>112</tts>',
44 961 => '<tts>114</tts>',
45 962 => '<tts>86</tts>',
46 963 => '<tts>115</tts>',
47 964 => '<tts>116</tts>',
48 965 => '<tts>117</tts>',
49 966 => '<tts>102</tts>',
50 967 => '<tts>99</tts>',
51 968 => '<tts>121</tts>',
52 969 => '<tts>119</tts>',
53 977 => '<tts>74</tts>',
54 978 => '<tts>161</tts>',
55 981 => '<tts>106</tts>',
56 982 => '<tts>118</tts>',
57 8242 => '<tts>162</tts>',
58 8243 => '<tts>178</tts>',
59 8260 => '<tts>164</tts>',
60 8465 => '<tts>193</tts>',
61 8472 => '<tts>195</tts>',
62 8476 => '<tts>194</tts>',
63 8486 => '<tts>87</tts>',
64 8501 => '<tts>192</tts>',
65 8592 => '<tts>172</tts>',
66 8593 => '<tts>173</tts>',
67 8594 => '<tts>174</tts>',
68 8595 => '<tts>175</tts>',
69 8596 => '<tts>171</tts>',
70 8597 => '<ttz>215</ttz>',
71 8629 => '<tts>191</tts>',
72 8656 => '<tts>220</tts>',
73 8657 => '<tts>221</tts>',
74 8658 => '<tts>222</tts>',
75 8659 => '<tts>223</tts>',
76 8660 => '<tts>219</tts>',
77 8704 => '<tts>34</tts>',
78 8706 => '<tts>182</tts>',
79 8707 => '<tts>36</tts>',
80 8709 => '<tts>198</tts>',
81 8710 => '<tts>68</tts>',
82 8711 => '<tts>209</tts>',
83 8712 => '<tts>206</tts>',
84 8713 => '<tts>207</tts>',
85 8715 => '<tts>39</tts>',
86 8719 => '<tts>213</tts>',
87 8721 => '<tts>229</tts>',
88 8722 => '<tts>45</tts>',
89 8725 => '<tts>164</tts>',
90 8727 => '<tts>42</tts>',
91 8730 => '<tts>214</tts>',
92 8733 => '<tts>181</tts>',
93 8734 => '<tts>165</tts>',
94 8736 => '<tts>208</tts>',
95 8743 => '<tts>217</tts>',
96 8744 => '<tts>218</tts>',
97 8745 => '<tts>199</tts>',
98 8746 => '<tts>200</tts>',
99 8747 => '<tts>242</tts>',
100 8756 => '<tts>92</tts>',
101 8764 => '<tts>126</tts>',
102 8773 => '<tts>64</tts>',
103 8776 => '<tts>187</tts>',
104 8800 => '<tts>185</tts>',
105 8801 => '<tts>186</tts>',
106 8804 => '<tts>163</tts>',
107 8805 => '<tts>179</tts>',
108 8834 => '<tts>204</tts>',
109 8835 => '<tts>201</tts>',
110 8836 => '<tts>203</tts>',
111 8838 => '<tts>205</tts>',
112 8839 => '<tts>202</tts>',
113 8853 => '<tts>197</tts>',
114 8855 => '<tts>196</tts>',
115 8869 => '<tts>94</tts>',
116 8901 => '<tts>215</tts>',
117 8992 => '<tts>243</tts>',
118 8993 => '<tts>245</tts>',
119 9001 => '<tts>225</tts>',
120 9002 => '<tts>241</tts>',
121 9312 => '<ttz>172</ttz>',
122 9313 => '<ttz>173</ttz>',
123 9314 => '<ttz>174</ttz>',
124 9315 => '<ttz>175</ttz>',
125 9316 => '<ttz>176</ttz>',
126 9317 => '<ttz>177</ttz>',
127 9318 => '<ttz>178</ttz>',
128 9319 => '<ttz>179</ttz>',
129 9320 => '<ttz>180</ttz>',
130 9321 => '<ttz>181</ttz>',
131 9632 => '<ttz>110</ttz>',
132 9650 => '<ttz>115</ttz>',
133 9660 => '<ttz>116</ttz>',
134 9670 => '<ttz>117</ttz>',
135 9674 => '<tts>224</tts>',
136 9679 => '<ttz>108</ttz>',
137 9687 => '<ttz>119</ttz>',
138 9733 => '<ttz>72</ttz>',
139 9742 => '<ttz>37</ttz>',
140 9755 => '<ttz>42</ttz>',
141 9758 => '<ttz>43</ttz>',
142 9824 => '<tts>170</tts>',
143 9827 => '<tts>167</tts>',
144 9829 => '<tts>169</tts>',
145 9830 => '<tts>168</tts>',
146 9985 => '<ttz>33</ttz>',
147 9986 => '<ttz>34</ttz>',
148 9987 => '<ttz>35</ttz>',
149 9988 => '<ttz>36</ttz>',
150 9990 => '<ttz>38</ttz>',
151 9991 => '<ttz>39</ttz>',
152 9992 => '<ttz>40</ttz>',
153 9993 => '<ttz>41</ttz>',
154 9996 => '<ttz>44</ttz>',
155 9997 => '<ttz>45</ttz>',
156 9998 => '<ttz>46</ttz>',
157 9999 => '<ttz>47</ttz>',
158 10000 => '<ttz>48</ttz>',
159 10001 => '<ttz>49</ttz>',
160 10002 => '<ttz>50</ttz>',
161 10003 => '<ttz>51</ttz>',
162 10004 => '<ttz>52</ttz>',
163 10005 => '<ttz>53</ttz>',
164 10006 => '<ttz>54</ttz>',
165 10007 => '<ttz>55</ttz>',
166 10008 => '<ttz>56</ttz>',
167 10009 => '<ttz>57</ttz>',
168 10010 => '<ttz>58</ttz>',
169 10011 => '<ttz>59</ttz>',
170 10012 => '<ttz>60</ttz>',
171 10013 => '<ttz>61</ttz>',
172 10014 => '<ttz>62</ttz>',
173 10015 => '<ttz>63</ttz>',
174 10016 => '<ttz>64</ttz>',
175 10017 => '<ttz>65</ttz>',
176 10018 => '<ttz>66</ttz>',
177 10019 => '<ttz>67</ttz>',
178 10020 => '<ttz>68</ttz>',
179 10021 => '<ttz>69</ttz>',
180 10022 => '<ttz>70</ttz>',
181 10023 => '<ttz>71</ttz>',
182 10025 => '<ttz>73</ttz>',
183 10026 => '<ttz>74</ttz>',
184 10027 => '<ttz>75</ttz>',
185 10028 => '<ttz>76</ttz>',
186 10029 => '<ttz>77</ttz>',
187 10030 => '<ttz>78</ttz>',
188 10031 => '<ttz>79</ttz>',
189 10032 => '<ttz>80</ttz>',
190 10033 => '<ttz>81</ttz>',
191 10034 => '<ttz>82</ttz>',
192 10035 => '<ttz>83</ttz>',
193 10036 => '<ttz>84</ttz>',
194 10037 => '<ttz>85</ttz>',
195 10038 => '<ttz>86</ttz>',
196 10039 => '<ttz>87</ttz>',
197 10040 => '<ttz>88</ttz>',
198 10041 => '<ttz>89</ttz>',
199 10042 => '<ttz>90</ttz>',
200 10043 => '<ttz>91</ttz>',
201 10044 => '<ttz>92</ttz>',
202 10045 => '<ttz>93</ttz>',
203 10046 => '<ttz>94</ttz>',
204 10047 => '<ttz>95</ttz>',
205 10048 => '<ttz>96</ttz>',
206 10049 => '<ttz>97</ttz>',
207 10050 => '<ttz>98</ttz>',
208 10051 => '<ttz>99</ttz>',
209 10052 => '<ttz>100</ttz>',
210 10053 => '<ttz>101</ttz>',
211 10054 => '<ttz>102</ttz>',
212 10055 => '<ttz>103</ttz>',
213 10056 => '<ttz>104</ttz>',
214 10057 => '<ttz>105</ttz>',
215 10058 => '<ttz>106</ttz>',
216 10059 => '<ttz>107</ttz>',
217 10061 => '<ttz>109</ttz>',
218 10063 => '<ttz>111</ttz>',
219 10064 => '<ttz>112</ttz>',
220 10065 => '<ttz>113</ttz>',
221 10066 => '<ttz>114</ttz>',
222 10070 => '<ttz>118</ttz>',
223 10072 => '<ttz>120</ttz>',
224 10073 => '<ttz>121</ttz>',
225 10074 => '<ttz>122</ttz>',
226 10075 => '<ttz>123</ttz>',
227 10076 => '<ttz>124</ttz>',
228 10077 => '<ttz>125</ttz>',
229 10078 => '<ttz>126</ttz>',
230 10081 => '<ttz>161</ttz>',
231 10082 => '<ttz>162</ttz>',
232 10083 => '<ttz>163</ttz>',
233 10084 => '<ttz>164</ttz>',
234 10085 => '<ttz>165</ttz>',
235 10086 => '<ttz>166</ttz>',
236 10087 => '<ttz>167</ttz>',
237 10102 => '<ttz>182</ttz>',
238 10103 => '<ttz>183</ttz>',
239 10104 => '<ttz>184</ttz>',
240 10105 => '<ttz>185</ttz>',
241 10106 => '<ttz>186</ttz>',
242 10107 => '<ttz>187</ttz>',
243 10108 => '<ttz>188</ttz>',
244 10109 => '<ttz>189</ttz>',
245 10110 => '<ttz>190</ttz>',
246 10111 => '<ttz>191</ttz>',
247 10112 => '<ttz>192</ttz>',
248 10113 => '<ttz>193</ttz>',
249 10114 => '<ttz>194</ttz>',
250 10115 => '<ttz>195</ttz>',
251 10116 => '<ttz>196</ttz>',
252 10117 => '<ttz>197</ttz>',
253 10118 => '<ttz>198</ttz>',
254 10119 => '<ttz>199</ttz>',
255 10120 => '<ttz>200</ttz>',
256 10121 => '<ttz>201</ttz>',
257 10122 => '<ttz>202</ttz>',
258 10123 => '<ttz>203</ttz>',
259 10124 => '<ttz>204</ttz>',
260 10125 => '<ttz>205</ttz>',
261 10126 => '<ttz>206</ttz>',
262 10127 => '<ttz>207</ttz>',
263 10128 => '<ttz>208</ttz>',
264 10129 => '<ttz>209</ttz>',
265 10130 => '<ttz>210</ttz>',
266 10131 => '<ttz>211</ttz>',
267 10132 => '<ttz>212</ttz>',
268 10136 => '<ttz>216</ttz>',
269 10137 => '<ttz>217</ttz>',
270 10138 => '<ttz>218</ttz>',
271 10139 => '<ttz>219</ttz>',
272 10140 => '<ttz>220</ttz>',
273 10141 => '<ttz>221</ttz>',
274 10142 => '<ttz>222</ttz>',
275 10143 => '<ttz>223</ttz>',
276 10144 => '<ttz>224</ttz>',
277 10145 => '<ttz>225</ttz>',
278 10146 => '<ttz>226</ttz>',
279 10147 => '<ttz>227</ttz>',
280 10148 => '<ttz>228</ttz>',
281 10149 => '<ttz>229</ttz>',
282 10150 => '<ttz>230</ttz>',
283 10151 => '<ttz>231</ttz>',
284 10152 => '<ttz>232</ttz>',
285 10153 => '<ttz>233</ttz>',
286 10154 => '<ttz>234</ttz>',
287 10155 => '<ttz>235</ttz>',
288 10156 => '<ttz>236</ttz>',
289 10157 => '<ttz>237</ttz>',
290 10158 => '<ttz>238</ttz>',
291 10159 => '<ttz>239</ttz>',
292 10161 => '<ttz>241</ttz>',
293 10162 => '<ttz>242</ttz>',
294 10163 => '<ttz>243</ttz>',
295 10164 => '<ttz>244</ttz>',
296 10165 => '<ttz>245</ttz>',
297 10166 => '<ttz>246</ttz>',
298 10167 => '<ttz>247</ttz>',
299 10168 => '<ttz>248</ttz>',
300 10169 => '<ttz>249</ttz>',
301 10170 => '<ttz>250</ttz>',
302 10171 => '<ttz>251</ttz>',
303 10172 => '<ttz>252</ttz>',
304 10173 => '<ttz>253</ttz>',
305 10174 => '<ttz>254</ttz>',
306);
307
308?> \ 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
index 020f4264..00000000
--- a/inc/3rdparty/libraries/mpdf/includes/upperCase.php
+++ /dev/null
@@ -1,975 +0,0 @@
1<?php
2$this->upperCase=array (
3 97 => 65,
4 98 => 66,
5 99 => 67,
6 100 => 68,
7 101 => 69,
8 102 => 70,
9 103 => 71,
10 104 => 72,
11 105 => 73,
12 106 => 74,
13 107 => 75,
14 108 => 76,
15 109 => 77,
16 110 => 78,
17 111 => 79,
18 112 => 80,
19 113 => 81,
20 114 => 82,
21 115 => 83,
22 116 => 84,
23 117 => 85,
24 118 => 86,
25 119 => 87,
26 120 => 88,
27 121 => 89,
28 122 => 90,
29 181 => 924,
30 224 => 192,
31 225 => 193,
32 226 => 194,
33 227 => 195,
34 228 => 196,
35 229 => 197,
36 230 => 198,
37 231 => 199,
38 232 => 200,
39 233 => 201,
40 234 => 202,
41 235 => 203,
42 236 => 204,
43 237 => 205,
44 238 => 206,
45 239 => 207,
46 240 => 208,
47 241 => 209,
48 242 => 210,
49 243 => 211,
50 244 => 212,
51 245 => 213,
52 246 => 214,
53 248 => 216,
54 249 => 217,
55 250 => 218,
56 251 => 219,
57 252 => 220,
58 253 => 221,
59 254 => 222,
60 255 => 376,
61 257 => 256,
62 259 => 258,
63 261 => 260,
64 263 => 262,
65 265 => 264,
66 267 => 266,
67 269 => 268,
68 271 => 270,
69 273 => 272,
70 275 => 274,
71 277 => 276,
72 279 => 278,
73 281 => 280,
74 283 => 282,
75 285 => 284,
76 287 => 286,
77 289 => 288,
78 291 => 290,
79 293 => 292,
80 295 => 294,
81 297 => 296,
82 299 => 298,
83 301 => 300,
84 303 => 302,
85 305 => 73,
86 307 => 306,
87 309 => 308,
88 311 => 310,
89 314 => 313,
90 316 => 315,
91 318 => 317,
92 320 => 319,
93 322 => 321,
94 324 => 323,
95 326 => 325,
96 328 => 327,
97 331 => 330,
98 333 => 332,
99 335 => 334,
100 337 => 336,
101 339 => 338,
102 341 => 340,
103 343 => 342,
104 345 => 344,
105 347 => 346,
106 349 => 348,
107 351 => 350,
108 353 => 352,
109 355 => 354,
110 357 => 356,
111 359 => 358,
112 361 => 360,
113 363 => 362,
114 365 => 364,
115 367 => 366,
116 369 => 368,
117 371 => 370,
118 373 => 372,
119 375 => 374,
120 378 => 377,
121 380 => 379,
122 382 => 381,
123 383 => 83,
124 384 => 579,
125 387 => 386,
126 389 => 388,
127 392 => 391,
128 396 => 395,
129 402 => 401,
130 405 => 502,
131 409 => 408,
132 410 => 573,
133 414 => 544,
134 417 => 416,
135 419 => 418,
136 421 => 420,
137 424 => 423,
138 429 => 428,
139 432 => 431,
140 436 => 435,
141 438 => 437,
142 441 => 440,
143 445 => 444,
144 447 => 503,
145 453 => 452,
146 454 => 452,
147 456 => 455,
148 457 => 455,
149 459 => 458,
150 460 => 458,
151 462 => 461,
152 464 => 463,
153 466 => 465,
154 468 => 467,
155 470 => 469,
156 472 => 471,
157 474 => 473,
158 476 => 475,
159 477 => 398,
160 479 => 478,
161 481 => 480,
162 483 => 482,
163 485 => 484,
164 487 => 486,
165 489 => 488,
166 491 => 490,
167 493 => 492,
168 495 => 494,
169 498 => 497,
170 499 => 497,
171 501 => 500,
172 505 => 504,
173 507 => 506,
174 509 => 508,
175 511 => 510,
176 513 => 512,
177 515 => 514,
178 517 => 516,
179 519 => 518,
180 521 => 520,
181 523 => 522,
182 525 => 524,
183 527 => 526,
184 529 => 528,
185 531 => 530,
186 533 => 532,
187 535 => 534,
188 537 => 536,
189 539 => 538,
190 541 => 540,
191 543 => 542,
192 547 => 546,
193 549 => 548,
194 551 => 550,
195 553 => 552,
196 555 => 554,
197 557 => 556,
198 559 => 558,
199 561 => 560,
200 563 => 562,
201 572 => 571,
202 575 => 11390,
203 576 => 11391,
204 578 => 577,
205 583 => 582,
206 585 => 584,
207 587 => 586,
208 589 => 588,
209 591 => 590,
210 592 => 11375,
211 593 => 11373,
212 594 => 11376,
213 595 => 385,
214 596 => 390,
215 598 => 393,
216 599 => 394,
217 601 => 399,
218 603 => 400,
219 608 => 403,
220 611 => 404,
221 616 => 407,
222 617 => 406,
223 619 => 11362,
224 623 => 412,
225 625 => 11374,
226 626 => 413,
227 629 => 415,
228 637 => 11364,
229 640 => 422,
230 643 => 425,
231 648 => 430,
232 649 => 580,
233 650 => 433,
234 651 => 434,
235 652 => 581,
236 658 => 439,
237 837 => 921,
238 881 => 880,
239 883 => 882,
240 887 => 886,
241 891 => 1021,
242 892 => 1022,
243 893 => 1023,
244 940 => 902,
245 941 => 904,
246 942 => 905,
247 943 => 906,
248 945 => 913,
249 946 => 914,
250 947 => 915,
251 948 => 916,
252 949 => 917,
253 950 => 918,
254 951 => 919,
255 952 => 920,
256 953 => 921,
257 954 => 922,
258 955 => 923,
259 956 => 924,
260 957 => 925,
261 958 => 926,
262 959 => 927,
263 960 => 928,
264 961 => 929,
265 962 => 931,
266 963 => 931,
267 964 => 932,
268 965 => 933,
269 966 => 934,
270 967 => 935,
271 968 => 936,
272 969 => 937,
273 970 => 938,
274 971 => 939,
275 972 => 908,
276 973 => 910,
277 974 => 911,
278 976 => 914,
279 977 => 920,
280 981 => 934,
281 982 => 928,
282 983 => 975,
283 985 => 984,
284 987 => 986,
285 989 => 988,
286 991 => 990,
287 993 => 992,
288 995 => 994,
289 997 => 996,
290 999 => 998,
291 1001 => 1000,
292 1003 => 1002,
293 1005 => 1004,
294 1007 => 1006,
295 1008 => 922,
296 1009 => 929,
297 1010 => 1017,
298 1013 => 917,
299 1016 => 1015,
300 1019 => 1018,
301 1072 => 1040,
302 1073 => 1041,
303 1074 => 1042,
304 1075 => 1043,
305 1076 => 1044,
306 1077 => 1045,
307 1078 => 1046,
308 1079 => 1047,
309 1080 => 1048,
310 1081 => 1049,
311 1082 => 1050,
312 1083 => 1051,
313 1084 => 1052,
314 1085 => 1053,
315 1086 => 1054,
316 1087 => 1055,
317 1088 => 1056,
318 1089 => 1057,
319 1090 => 1058,
320 1091 => 1059,
321 1092 => 1060,
322 1093 => 1061,
323 1094 => 1062,
324 1095 => 1063,
325 1096 => 1064,
326 1097 => 1065,
327 1098 => 1066,
328 1099 => 1067,
329 1100 => 1068,
330 1101 => 1069,
331 1102 => 1070,
332 1103 => 1071,
333 1104 => 1024,
334 1105 => 1025,
335 1106 => 1026,
336 1107 => 1027,
337 1108 => 1028,
338 1109 => 1029,
339 1110 => 1030,
340 1111 => 1031,
341 1112 => 1032,
342 1113 => 1033,
343 1114 => 1034,
344 1115 => 1035,
345 1116 => 1036,
346 1117 => 1037,
347 1118 => 1038,
348 1119 => 1039,
349 1121 => 1120,
350 1123 => 1122,
351 1125 => 1124,
352 1127 => 1126,
353 1129 => 1128,
354 1131 => 1130,
355 1133 => 1132,
356 1135 => 1134,
357 1137 => 1136,
358 1139 => 1138,
359 1141 => 1140,
360 1143 => 1142,
361 1145 => 1144,
362 1147 => 1146,
363 1149 => 1148,
364 1151 => 1150,
365 1153 => 1152,
366 1163 => 1162,
367 1165 => 1164,
368 1167 => 1166,
369 1169 => 1168,
370 1171 => 1170,
371 1173 => 1172,
372 1175 => 1174,
373 1177 => 1176,
374 1179 => 1178,
375 1181 => 1180,
376 1183 => 1182,
377 1185 => 1184,
378 1187 => 1186,
379 1189 => 1188,
380 1191 => 1190,
381 1193 => 1192,
382 1195 => 1194,
383 1197 => 1196,
384 1199 => 1198,
385 1201 => 1200,
386 1203 => 1202,
387 1205 => 1204,
388 1207 => 1206,
389 1209 => 1208,
390 1211 => 1210,
391 1213 => 1212,
392 1215 => 1214,
393 1218 => 1217,
394 1220 => 1219,
395 1222 => 1221,
396 1224 => 1223,
397 1226 => 1225,
398 1228 => 1227,
399 1230 => 1229,
400 1231 => 1216,
401 1233 => 1232,
402 1235 => 1234,
403 1237 => 1236,
404 1239 => 1238,
405 1241 => 1240,
406 1243 => 1242,
407 1245 => 1244,
408 1247 => 1246,
409 1249 => 1248,
410 1251 => 1250,
411 1253 => 1252,
412 1255 => 1254,
413 1257 => 1256,
414 1259 => 1258,
415 1261 => 1260,
416 1263 => 1262,
417 1265 => 1264,
418 1267 => 1266,
419 1269 => 1268,
420 1271 => 1270,
421 1273 => 1272,
422 1275 => 1274,
423 1277 => 1276,
424 1279 => 1278,
425 1281 => 1280,
426 1283 => 1282,
427 1285 => 1284,
428 1287 => 1286,
429 1289 => 1288,
430 1291 => 1290,
431 1293 => 1292,
432 1295 => 1294,
433 1297 => 1296,
434 1299 => 1298,
435 1301 => 1300,
436 1303 => 1302,
437 1305 => 1304,
438 1307 => 1306,
439 1309 => 1308,
440 1311 => 1310,
441 1313 => 1312,
442 1315 => 1314,
443 1317 => 1316,
444 1377 => 1329,
445 1378 => 1330,
446 1379 => 1331,
447 1380 => 1332,
448 1381 => 1333,
449 1382 => 1334,
450 1383 => 1335,
451 1384 => 1336,
452 1385 => 1337,
453 1386 => 1338,
454 1387 => 1339,
455 1388 => 1340,
456 1389 => 1341,
457 1390 => 1342,
458 1391 => 1343,
459 1392 => 1344,
460 1393 => 1345,
461 1394 => 1346,
462 1395 => 1347,
463 1396 => 1348,
464 1397 => 1349,
465 1398 => 1350,
466 1399 => 1351,
467 1400 => 1352,
468 1401 => 1353,
469 1402 => 1354,
470 1403 => 1355,
471 1404 => 1356,
472 1405 => 1357,
473 1406 => 1358,
474 1407 => 1359,
475 1408 => 1360,
476 1409 => 1361,
477 1410 => 1362,
478 1411 => 1363,
479 1412 => 1364,
480 1413 => 1365,
481 1414 => 1366,
482 7545 => 42877,
483 7549 => 11363,
484 7681 => 7680,
485 7683 => 7682,
486 7685 => 7684,
487 7687 => 7686,
488 7689 => 7688,
489 7691 => 7690,
490 7693 => 7692,
491 7695 => 7694,
492 7697 => 7696,
493 7699 => 7698,
494 7701 => 7700,
495 7703 => 7702,
496 7705 => 7704,
497 7707 => 7706,
498 7709 => 7708,
499 7711 => 7710,
500 7713 => 7712,
501 7715 => 7714,
502 7717 => 7716,
503 7719 => 7718,
504 7721 => 7720,
505 7723 => 7722,
506 7725 => 7724,
507 7727 => 7726,
508 7729 => 7728,
509 7731 => 7730,
510 7733 => 7732,
511 7735 => 7734,
512 7737 => 7736,
513 7739 => 7738,
514 7741 => 7740,
515 7743 => 7742,
516 7745 => 7744,
517 7747 => 7746,
518 7749 => 7748,
519 7751 => 7750,
520 7753 => 7752,
521 7755 => 7754,
522 7757 => 7756,
523 7759 => 7758,
524 7761 => 7760,
525 7763 => 7762,
526 7765 => 7764,
527 7767 => 7766,
528 7769 => 7768,
529 7771 => 7770,
530 7773 => 7772,
531 7775 => 7774,
532 7777 => 7776,
533 7779 => 7778,
534 7781 => 7780,
535 7783 => 7782,
536 7785 => 7784,
537 7787 => 7786,
538 7789 => 7788,
539 7791 => 7790,
540 7793 => 7792,
541 7795 => 7794,
542 7797 => 7796,
543 7799 => 7798,
544 7801 => 7800,
545 7803 => 7802,
546 7805 => 7804,
547 7807 => 7806,
548 7809 => 7808,
549 7811 => 7810,
550 7813 => 7812,
551 7815 => 7814,
552 7817 => 7816,
553 7819 => 7818,
554 7821 => 7820,
555 7823 => 7822,
556 7825 => 7824,
557 7827 => 7826,
558 7829 => 7828,
559 7835 => 7776,
560 7841 => 7840,
561 7843 => 7842,
562 7845 => 7844,
563 7847 => 7846,
564 7849 => 7848,
565 7851 => 7850,
566 7853 => 7852,
567 7855 => 7854,
568 7857 => 7856,
569 7859 => 7858,
570 7861 => 7860,
571 7863 => 7862,
572 7865 => 7864,
573 7867 => 7866,
574 7869 => 7868,
575 7871 => 7870,
576 7873 => 7872,
577 7875 => 7874,
578 7877 => 7876,
579 7879 => 7878,
580 7881 => 7880,
581 7883 => 7882,
582 7885 => 7884,
583 7887 => 7886,
584 7889 => 7888,
585 7891 => 7890,
586 7893 => 7892,
587 7895 => 7894,
588 7897 => 7896,
589 7899 => 7898,
590 7901 => 7900,
591 7903 => 7902,
592 7905 => 7904,
593 7907 => 7906,
594 7909 => 7908,
595 7911 => 7910,
596 7913 => 7912,
597 7915 => 7914,
598 7917 => 7916,
599 7919 => 7918,
600 7921 => 7920,
601 7923 => 7922,
602 7925 => 7924,
603 7927 => 7926,
604 7929 => 7928,
605 7931 => 7930,
606 7933 => 7932,
607 7935 => 7934,
608 7936 => 7944,
609 7937 => 7945,
610 7938 => 7946,
611 7939 => 7947,
612 7940 => 7948,
613 7941 => 7949,
614 7942 => 7950,
615 7943 => 7951,
616 7952 => 7960,
617 7953 => 7961,
618 7954 => 7962,
619 7955 => 7963,
620 7956 => 7964,
621 7957 => 7965,
622 7968 => 7976,
623 7969 => 7977,
624 7970 => 7978,
625 7971 => 7979,
626 7972 => 7980,
627 7973 => 7981,
628 7974 => 7982,
629 7975 => 7983,
630 7984 => 7992,
631 7985 => 7993,
632 7986 => 7994,
633 7987 => 7995,
634 7988 => 7996,
635 7989 => 7997,
636 7990 => 7998,
637 7991 => 7999,
638 8000 => 8008,
639 8001 => 8009,
640 8002 => 8010,
641 8003 => 8011,
642 8004 => 8012,
643 8005 => 8013,
644 8017 => 8025,
645 8019 => 8027,
646 8021 => 8029,
647 8023 => 8031,
648 8032 => 8040,
649 8033 => 8041,
650 8034 => 8042,
651 8035 => 8043,
652 8036 => 8044,
653 8037 => 8045,
654 8038 => 8046,
655 8039 => 8047,
656 8048 => 8122,
657 8049 => 8123,
658 8050 => 8136,
659 8051 => 8137,
660 8052 => 8138,
661 8053 => 8139,
662 8054 => 8154,
663 8055 => 8155,
664 8056 => 8184,
665 8057 => 8185,
666 8058 => 8170,
667 8059 => 8171,
668 8060 => 8186,
669 8061 => 8187,
670 8064 => 8072,
671 8065 => 8073,
672 8066 => 8074,
673 8067 => 8075,
674 8068 => 8076,
675 8069 => 8077,
676 8070 => 8078,
677 8071 => 8079,
678 8080 => 8088,
679 8081 => 8089,
680 8082 => 8090,
681 8083 => 8091,
682 8084 => 8092,
683 8085 => 8093,
684 8086 => 8094,
685 8087 => 8095,
686 8096 => 8104,
687 8097 => 8105,
688 8098 => 8106,
689 8099 => 8107,
690 8100 => 8108,
691 8101 => 8109,
692 8102 => 8110,
693 8103 => 8111,
694 8112 => 8120,
695 8113 => 8121,
696 8115 => 8124,
697 8126 => 921,
698 8131 => 8140,
699 8144 => 8152,
700 8145 => 8153,
701 8160 => 8168,
702 8161 => 8169,
703 8165 => 8172,
704 8179 => 8188,
705 8526 => 8498,
706 8560 => 8544,
707 8561 => 8545,
708 8562 => 8546,
709 8563 => 8547,
710 8564 => 8548,
711 8565 => 8549,
712 8566 => 8550,
713 8567 => 8551,
714 8568 => 8552,
715 8569 => 8553,
716 8570 => 8554,
717 8571 => 8555,
718 8572 => 8556,
719 8573 => 8557,
720 8574 => 8558,
721 8575 => 8559,
722 8580 => 8579,
723 9424 => 9398,
724 9425 => 9399,
725 9426 => 9400,
726 9427 => 9401,
727 9428 => 9402,
728 9429 => 9403,
729 9430 => 9404,
730 9431 => 9405,
731 9432 => 9406,
732 9433 => 9407,
733 9434 => 9408,
734 9435 => 9409,
735 9436 => 9410,
736 9437 => 9411,
737 9438 => 9412,
738 9439 => 9413,
739 9440 => 9414,
740 9441 => 9415,
741 9442 => 9416,
742 9443 => 9417,
743 9444 => 9418,
744 9445 => 9419,
745 9446 => 9420,
746 9447 => 9421,
747 9448 => 9422,
748 9449 => 9423,
749 11312 => 11264,
750 11313 => 11265,
751 11314 => 11266,
752 11315 => 11267,
753 11316 => 11268,
754 11317 => 11269,
755 11318 => 11270,
756 11319 => 11271,
757 11320 => 11272,
758 11321 => 11273,
759 11322 => 11274,
760 11323 => 11275,
761 11324 => 11276,
762 11325 => 11277,
763 11326 => 11278,
764 11327 => 11279,
765 11328 => 11280,
766 11329 => 11281,
767 11330 => 11282,
768 11331 => 11283,
769 11332 => 11284,
770 11333 => 11285,
771 11334 => 11286,
772 11335 => 11287,
773 11336 => 11288,
774 11337 => 11289,
775 11338 => 11290,
776 11339 => 11291,
777 11340 => 11292,
778 11341 => 11293,
779 11342 => 11294,
780 11343 => 11295,
781 11344 => 11296,
782 11345 => 11297,
783 11346 => 11298,
784 11347 => 11299,
785 11348 => 11300,
786 11349 => 11301,
787 11350 => 11302,
788 11351 => 11303,
789 11352 => 11304,
790 11353 => 11305,
791 11354 => 11306,
792 11355 => 11307,
793 11356 => 11308,
794 11357 => 11309,
795 11358 => 11310,
796 11361 => 11360,
797 11365 => 570,
798 11366 => 574,
799 11368 => 11367,
800 11370 => 11369,
801 11372 => 11371,
802 11379 => 11378,
803 11382 => 11381,
804 11393 => 11392,
805 11395 => 11394,
806 11397 => 11396,
807 11399 => 11398,
808 11401 => 11400,
809 11403 => 11402,
810 11405 => 11404,
811 11407 => 11406,
812 11409 => 11408,
813 11411 => 11410,
814 11413 => 11412,
815 11415 => 11414,
816 11417 => 11416,
817 11419 => 11418,
818 11421 => 11420,
819 11423 => 11422,
820 11425 => 11424,
821 11427 => 11426,
822 11429 => 11428,
823 11431 => 11430,
824 11433 => 11432,
825 11435 => 11434,
826 11437 => 11436,
827 11439 => 11438,
828 11441 => 11440,
829 11443 => 11442,
830 11445 => 11444,
831 11447 => 11446,
832 11449 => 11448,
833 11451 => 11450,
834 11453 => 11452,
835 11455 => 11454,
836 11457 => 11456,
837 11459 => 11458,
838 11461 => 11460,
839 11463 => 11462,
840 11465 => 11464,
841 11467 => 11466,
842 11469 => 11468,
843 11471 => 11470,
844 11473 => 11472,
845 11475 => 11474,
846 11477 => 11476,
847 11479 => 11478,
848 11481 => 11480,
849 11483 => 11482,
850 11485 => 11484,
851 11487 => 11486,
852 11489 => 11488,
853 11491 => 11490,
854 11500 => 11499,
855 11502 => 11501,
856 11520 => 4256,
857 11521 => 4257,
858 11522 => 4258,
859 11523 => 4259,
860 11524 => 4260,
861 11525 => 4261,
862 11526 => 4262,
863 11527 => 4263,
864 11528 => 4264,
865 11529 => 4265,
866 11530 => 4266,
867 11531 => 4267,
868 11532 => 4268,
869 11533 => 4269,
870 11534 => 4270,
871 11535 => 4271,
872 11536 => 4272,
873 11537 => 4273,
874 11538 => 4274,
875 11539 => 4275,
876 11540 => 4276,
877 11541 => 4277,
878 11542 => 4278,
879 11543 => 4279,
880 11544 => 4280,
881 11545 => 4281,
882 11546 => 4282,
883 11547 => 4283,
884 11548 => 4284,
885 11549 => 4285,
886 11550 => 4286,
887 11551 => 4287,
888 11552 => 4288,
889 11553 => 4289,
890 11554 => 4290,
891 11555 => 4291,
892 11556 => 4292,
893 11557 => 4293,
894 42561 => 42560,
895 42563 => 42562,
896 42565 => 42564,
897 42567 => 42566,
898 42569 => 42568,
899 42571 => 42570,
900 42573 => 42572,
901 42575 => 42574,
902 42577 => 42576,
903 42579 => 42578,
904 42581 => 42580,
905 42583 => 42582,
906 42585 => 42584,
907 42587 => 42586,
908 42589 => 42588,
909 42591 => 42590,
910 42595 => 42594,
911 42597 => 42596,
912 42599 => 42598,
913 42601 => 42600,
914 42603 => 42602,
915 42605 => 42604,
916 42625 => 42624,
917 42627 => 42626,
918 42629 => 42628,
919 42631 => 42630,
920 42633 => 42632,
921 42635 => 42634,
922 42637 => 42636,
923 42639 => 42638,
924 42641 => 42640,
925 42643 => 42642,
926 42645 => 42644,
927 42647 => 42646,
928 42787 => 42786,
929 42789 => 42788,
930 42791 => 42790,
931 42793 => 42792,
932 42795 => 42794,
933 42797 => 42796,
934 42799 => 42798,
935 42803 => 42802,
936 42805 => 42804,
937 42807 => 42806,
938 42809 => 42808,
939 42811 => 42810,
940 42813 => 42812,
941 42815 => 42814,
942 42817 => 42816,
943 42819 => 42818,
944 42821 => 42820,
945 42823 => 42822,
946 42825 => 42824,
947 42827 => 42826,
948 42829 => 42828,
949 42831 => 42830,
950 42833 => 42832,
951 42835 => 42834,
952 42837 => 42836,
953 42839 => 42838,
954 42841 => 42840,
955 42843 => 42842,
956 42845 => 42844,
957 42847 => 42846,
958 42849 => 42848,
959 42851 => 42850,
960 42853 => 42852,
961 42855 => 42854,
962 42857 => 42856,
963 42859 => 42858,
964 42861 => 42860,
965 42863 => 42862,
966 42874 => 42873,
967 42876 => 42875,
968 42879 => 42878,
969 42881 => 42880,
970 42883 => 42882,
971 42885 => 42884,
972 42887 => 42886,
973 42892 => 42891,
974);
975?> \ 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
index b46d0d63..00000000
--- a/inc/3rdparty/libraries/mpdf/mpdf.css
+++ /dev/null
@@ -1,20 +0,0 @@
1/*
2 This is a secondary default stylesheet for mPDF
3 It will only parse element-level CSS here
4 Remove the comment marks below and edit as required
5*/
6
7
8
9/*
10 These values used to be the default prior to mPDF 4.2
11 Altered to make appearance closer to that of browsers
12 Uncomment these lines to return to behaviour prior to v4.2
13*/
14
15
16/*
17img { margin: 0.83em 0; vertical-align: bottom; }
18table { margin: 0.5em; }
19textarea { vertical-align: top; }
20*/
diff --git a/inc/3rdparty/libraries/mpdf/mpdf.php b/inc/3rdparty/libraries/mpdf/mpdf.php
deleted file mode 100644
index fd4f57b3..00000000
--- a/inc/3rdparty/libraries/mpdf/mpdf.php
+++ /dev/null
@@ -1,32805 +0,0 @@
1<?php
2
3// ******************************************************************************
4// Software: mPDF, Unicode-HTML Free PDF generator *
5// Version: 5.7.2 based on *
6// FPDF by Olivier PLATHEY *
7// HTML2FPDF by Renato Coelho *
8// Date: 2013-09-01 *
9// Author: Ian Back <ianb@bpm1.com> *
10// License: GPL *
11// *
12// Changes: See changelog.txt *
13// ******************************************************************************
14
15
16define('mPDF_VERSION','5.7.2');
17
18//Scale factor
19define('_MPDFK', (72/25.4));
20
21/*-- HTML-CSS --*/
22define('AUTOFONT_CJK',1);
23define('AUTOFONT_THAIVIET',2);
24define('AUTOFONT_RTL',4);
25define('AUTOFONT_INDIC',8);
26define('AUTOFONT_ALL',15);
27
28define('_BORDER_ALL',15);
29define('_BORDER_TOP',8);
30define('_BORDER_RIGHT',4);
31define('_BORDER_BOTTOM',2);
32define('_BORDER_LEFT',1);
33/*-- END HTML-CSS --*/
34
35if (!defined('_MPDF_PATH')) define('_MPDF_PATH', dirname(preg_replace('/\\\\/','/',__FILE__)) . '/');
36if (!defined('_MPDF_URI')) define('_MPDF_URI',_MPDF_PATH);
37
38require_once(_MPDF_PATH.'includes/functions.php');
39require_once(_MPDF_PATH.'config_cp.php');
40
41if (!defined('_JPGRAPH_PATH')) define("_JPGRAPH_PATH", _MPDF_PATH.'jpgraph/');
42
43if (!defined('_MPDF_TEMP_PATH')) define("_MPDF_TEMP_PATH", _MPDF_PATH.'tmp/');
44
45if (!defined('_MPDF_TTFONTPATH')) { define('_MPDF_TTFONTPATH',_MPDF_PATH.'ttfonts/'); }
46if (!defined('_MPDF_TTFONTDATAPATH')) { define('_MPDF_TTFONTDATAPATH',_MPDF_PATH.'ttfontdata/'); }
47
48$errorlevel=error_reporting();
49$errorlevel=error_reporting($errorlevel & ~E_NOTICE);
50
51//error_reporting(E_ALL);
52
53if(function_exists("date_default_timezone_set")) {
54 if (ini_get("date.timezone")=="") { date_default_timezone_set("Europe/London"); }
55}
56if (!function_exists("mb_strlen")) { die("Error - mPDF requires mb_string functions. Ensure that PHP is compiled with php_mbstring.dll enabled."); }
57
58if (!defined('PHP_VERSION_ID')) {
59 $version = explode('.', PHP_VERSION);
60 define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2]));
61}
62// Machine dependent number of bytes used to pack "double" into binary (used in cacheTables)
63$test = pack("d", 134455.474557333333666);
64define("_DSIZE", strlen($test));
65
66class mPDF
67{
68
69///////////////////////////////
70// EXTERNAL (PUBLIC) VARIABLES
71// Define these in config.php
72///////////////////////////////
73var $CJKforceend; // mPDF 5.6.40
74// mPDF 5.6.34
75var $h2bookmarks;
76var $h2toc;
77var $decimal_align; // mPDF 5.6.13
78var $margBuffer; // mPDF 5.4.04
79var $splitTableBorderWidth; // mPDF 5.4.16
80
81var $cacheTables;
82var $bookmarkStyles;
83var $useActiveForms;
84
85var $repackageTTF;
86var $allowCJKorphans;
87var $allowCJKoverflow;
88
89var $useKerning;
90var $restrictColorSpace;
91var $bleedMargin;
92var $crossMarkMargin;
93var $cropMarkMargin;
94var $cropMarkLength;
95var $nonPrintMargin;
96
97var $PDFX;
98var $PDFXauto;
99
100var $PDFA;
101var $PDFAauto;
102var $ICCProfile;
103
104var $printers_info;
105var $iterationCounter;
106var $smCapsScale;
107var $smCapsStretch;
108
109var $backupSubsFont;
110var $backupSIPFont;
111var $debugfonts;
112var $useAdobeCJK;
113var $percentSubset;
114var $maxTTFFilesize;
115var $BMPonly;
116
117var $tableMinSizePriority;
118
119var $dpi;
120var $watermarkImgAlphaBlend;
121var $watermarkImgBehind;
122var $justifyB4br;
123var $packTableData;
124var $pgsIns;
125var $simpleTables;
126var $enableImports;
127
128var $debug;
129var $showStats;
130var $setAutoTopMargin;
131var $setAutoBottomMargin;
132var $autoMarginPadding;
133var $collapseBlockMargins;
134var $falseBoldWeight;
135var $normalLineheight;
136var $progressBar;
137var $incrementFPR1;
138var $incrementFPR2;
139var $incrementFPR3;
140var $incrementFPR4;
141
142var $SHYlang;
143var $SHYleftmin;
144var $SHYrightmin;
145var $SHYcharmin;
146var $SHYcharmax;
147var $SHYlanguages;
148// PageNumber Conditional Text
149var $pagenumPrefix;
150var $pagenumSuffix;
151var $nbpgPrefix;
152var $nbpgSuffix;
153var $showImageErrors;
154var $allow_output_buffering;
155var $autoPadding;
156var $useGraphs;
157var $autoFontGroupSize;
158var $tabSpaces;
159var $useLang;
160var $restoreBlockPagebreaks;
161var $watermarkTextAlpha;
162var $watermarkImageAlpha;
163var $watermark_size;
164var $watermark_pos;
165var $annotSize;
166var $annotMargin;
167var $annotOpacity;
168var $title2annots;
169var $keepColumns;
170var $keep_table_proportions;
171var $ignore_table_widths;
172var $ignore_table_percents;
173var $list_align_style;
174var $list_number_suffix;
175var $useSubstitutions;
176var $CSSselectMedia;
177
178var $forcePortraitHeaders;
179var $forcePortraitMargins;
180var $displayDefaultOrientation;
181var $ignore_invalid_utf8;
182var $allowedCSStags;
183var $onlyCoreFonts;
184var $allow_charset_conversion;
185
186var $jSWord;
187var $jSmaxChar;
188var $jSmaxCharLast;
189var $jSmaxWordLast;
190
191var $max_colH_correction;
192
193
194var $table_error_report;
195var $table_error_report_param;
196var $biDirectional;
197var $text_input_as_HTML;
198var $anchor2Bookmark;
199var $list_indent_first_level;
200var $shrink_tables_to_fit;
201
202var $allow_html_optional_endtags;
203
204var $img_dpi;
205
206var $defaultheaderfontsize;
207var $defaultheaderfontstyle;
208var $defaultheaderline;
209var $defaultfooterfontsize;
210var $defaultfooterfontstyle;
211var $defaultfooterline;
212var $header_line_spacing;
213var $footer_line_spacing;
214
215var $pregUHCchars;
216var $pregSJISchars;
217var $pregCJKchars;
218var $pregASCIIchars1;
219var $pregASCIIchars2;
220var $pregASCIIchars3;
221var $pregVIETchars;
222var $pregVIETPluschars;
223
224var $pregRTLchars;
225var $pregHEBchars;
226var $pregARABICchars;
227var $pregNonARABICchars;
228// INDIC
229var $pregHIchars;
230var $pregBNchars;
231var $pregPAchars;
232var $pregGUchars;
233var $pregORchars;
234var $pregTAchars;
235var $pregTEchars;
236var $pregKNchars;
237var $pregMLchars;
238var $pregSHchars;
239var $pregINDextra;
240
241var $mirrorMargins;
242var $default_lineheight_correction;
243var $watermarkText;
244var $watermarkImage;
245var $showWatermarkText;
246var $showWatermarkImage;
247
248var $fontsizes;
249
250// Aliases for backward compatability
251var $UnvalidatedText; // alias = $watermarkText
252var $TopicIsUnvalidated; // alias = $showWatermarkText
253var $useOddEven; // alias = $mirrorMargins
254var $useSubstitutionsMB; // alias = $useSubstitutions
255
256
257
258//////////////////////
259// CLASS OBJECTS
260//////////////////////
261var $cssmgr;
262var $grad;
263var $bmp;
264var $wmf;
265var $tocontents;
266var $form;
267var $directw;
268
269//////////////////////
270// INTERNAL VARIABLES
271//////////////////////
272var $uniqstr; // mPDF 5.7.2
273var $writingToC; // mPDF 5.6.38
274// mPDF 5.6.01
275var $layers;
276var $current_layer;
277var $open_layer_pane;
278var $decimal_offset; // mPDF 5.6.13
279var $inMeter; // mPDF 5.5.09
280
281var $CJKleading;
282var $CJKfollowing;
283var $CJKoverflow;
284
285var $textshadow;
286
287var $colsums;
288var $spanborder;
289var $spanborddet;
290
291var $visibility;
292
293var $useRC128encryption;
294var $uniqid;
295
296var $kerning;
297var $fixedlSpacing;
298var $minwSpacing;
299var $lSpacingCSS;
300var $wSpacingCSS;
301
302var $listDir;
303var $spotColorIDs;
304var $SVGcolors;
305var $spotColors;
306var $defTextColor;
307var $defDrawColor;
308var $defFillColor;
309
310var $tableBackgrounds;
311var $inlineDisplayOff;
312var $kt_y00;
313var $kt_p00;
314var $upperCase;
315var $checkSIP;
316var $checkSMP;
317var $checkCJK;
318var $tableCJK;
319
320var $watermarkImgAlpha;
321var $PDFAXwarnings;
322var $MetadataRoot;
323var $OutputIntentRoot;
324var $InfoRoot;
325var $current_filename;
326var $parsers;
327var $current_parser;
328var $_obj_stack;
329var $_don_obj_stack;
330var $_current_obj_id;
331var $tpls;
332var $tpl;
333var $tplprefix;
334var $_res;
335
336var $pdf_version;
337var $noImageFile;
338var $lastblockbottommargin;
339var $baselineC;
340var $subPos;
341var $subArrMB;
342var $ReqFontStyle;
343var $tableClipPath ;
344var $forceExactLineheight;
345var $listOcc;
346
347var $fullImageHeight;
348var $inFixedPosBlock; // Internal flag for position:fixed block
349var $fixedPosBlock; // Buffer string for position:fixed block
350var $fixedPosBlockDepth;
351var $fixedPosBlockBBox;
352var $fixedPosBlockSave;
353var $maxPosL;
354var $maxPosR;
355
356var $loaded;
357
358var $extraFontSubsets;
359var $docTemplateStart; // Internal flag for page (page no. -1) that docTemplate starts on
360var $time0;
361
362// Classes
363var $indic;
364var $barcode;
365
366var $SHYpatterns;
367var $loadedSHYpatterns;
368var $loadedSHYdictionary;
369var $SHYdictionary;
370var $SHYdictionaryWords;
371
372var $spanbgcolorarray;
373var $default_font;
374var $list_lineheight;
375var $headerbuffer;
376var $lastblocklevelchange;
377var $nestedtablejustfinished;
378var $linebreakjustfinished;
379var $cell_border_dominance_L;
380var $cell_border_dominance_R;
381var $cell_border_dominance_T;
382var $cell_border_dominance_B;
383var $table_keep_together;
384var $plainCell_properties;
385var $inherit_lineheight;
386var $listitemtype;
387var $shrin_k1;
388var $outerfilled;
389
390var $blockContext;
391var $floatDivs;
392
393
394var $patterns;
395var $pageBackgrounds;
396
397var $bodyBackgroundGradient;
398var $bodyBackgroundImage;
399var $bodyBackgroundColor;
400
401var $writingHTMLheader; // internal flag - used both for writing HTMLHeaders/Footers and FixedPos block
402var $writingHTMLfooter;
403var $autoFontGroups;
404var $angle;
405
406var $gradients;
407
408var $kwt_Reference;
409var $kwt_BMoutlines;
410var $kwt_toc;
411
412var $tbrot_Reference;
413var $tbrot_BMoutlines;
414var $tbrot_toc;
415
416var $col_Reference;
417var $col_BMoutlines;
418var $col_toc;
419
420var $currentGraphId;
421var $graphs;
422
423var $floatbuffer;
424var $floatmargins;
425
426var $bullet;
427var $bulletarray;
428
429var $rtlAsArabicFarsi; // DEPRACATED
430
431var $currentLang;
432var $default_lang;
433var $default_available_fonts;
434var $pageTemplate;
435var $docTemplate;
436var $docTemplateContinue;
437
438var $arabGlyphs;
439var $arabHex;
440var $persianGlyphs;
441var $persianHex;
442var $arabVowels;
443var $arabPrevLink;
444var $arabNextLink;
445
446
447var $formobjects; // array of Form Objects for WMF
448var $InlineProperties;
449var $InlineAnnots;
450var $ktAnnots;
451var $tbrot_Annots;
452var $kwt_Annots;
453var $columnAnnots;
454var $columnForms;
455
456var $PageAnnots;
457
458var $pageDim; // Keep track of page wxh for orientation changes - set in _beginpage, used in _putannots
459
460var $breakpoints;
461
462var $tableLevel;
463var $tbctr;
464var $innermostTableLevel;
465var $saveTableCounter;
466var $cellBorderBuffer;
467
468var $saveHTMLFooter_height;
469var $saveHTMLFooterE_height;
470
471var $firstPageBoxHeader;
472var $firstPageBoxHeaderEven;
473var $firstPageBoxFooter;
474var $firstPageBoxFooterEven;
475
476var $page_box;
477var $show_marks; // crop or cross marks
478
479var $basepathIsLocal;
480
481var $use_kwt;
482var $kwt;
483var $kwt_height;
484var $kwt_y0;
485var $kwt_x0;
486var $kwt_buffer;
487var $kwt_Links;
488var $kwt_moved;
489var $kwt_saved;
490
491var $PageNumSubstitutions;
492
493var $table_borders_separate;
494var $base_table_properties;
495var $borderstyles;
496
497var $listjustfinished;
498var $blockjustfinished;
499
500var $orig_bMargin;
501var $orig_tMargin;
502var $orig_lMargin;
503var $orig_rMargin;
504var $orig_hMargin;
505var $orig_fMargin;
506
507var $pageheaders;
508var $pagefooters;
509
510var $pageHTMLheaders;
511var $pageHTMLfooters;
512
513var $saveHTMLHeader;
514var $saveHTMLFooter;
515
516var $HTMLheaderPageLinks;
517var $HTMLheaderPageAnnots;
518var $HTMLheaderPageForms;
519
520// See config_fonts.php for these next 5 values
521var $available_unifonts;
522var $sans_fonts;
523var $serif_fonts;
524var $mono_fonts;
525var $defaultSubsFont;
526
527// List of ALL available CJK fonts (incl. styles) (Adobe add-ons) hw removed
528var $available_CJK_fonts;
529
530var $HTMLHeader;
531var $HTMLFooter;
532var $HTMLHeaderE;
533var $HTMLFooterE;
534var $bufferoutput;
535
536var $showdefaultpagenos; // DEPRACATED -left for backward compatability
537
538
539// CJK fonts
540var $Big5_widths;
541var $GB_widths;
542var $SJIS_widths;
543var $UHC_widths;
544
545// SetProtection
546var $encrypted; //whether document is protected
547var $Uvalue; //U entry in pdf document
548var $Ovalue; //O entry in pdf document
549var $Pvalue; //P entry in pdf document
550var $enc_obj_id; //encryption object id
551var $last_rc4_key; //last RC4 key encrypted (cached for optimisation)
552var $last_rc4_key_c; //last RC4 computed key
553var $encryption_key;
554var $padding; //used for encryption
555
556
557// Bookmark
558var $BMoutlines;
559var $OutlineRoot;
560// INDEX
561var $ColActive;
562var $Reference;
563var $CurrCol;
564var $NbCol;
565var $y0; //Top ordinate of columns
566var $ColL;
567var $ColWidth;
568var $ColGap;
569// COLUMNS
570var $ColR;
571var $ChangeColumn;
572var $columnbuffer;
573var $ColDetails;
574var $columnLinks;
575var $colvAlign;
576// Substitutions
577var $substitute; // Array of substitution strings e.g. <ttz>112</ttz>
578var $entsearch; // Array of HTML entities (>ASCII 127) to substitute
579var $entsubstitute; // Array of substitution decimal unicode for the Hi entities
580
581
582// Default values if no style sheet offered (cf. http://www.w3.org/TR/CSS21/sample.html)
583var $defaultCSS;
584
585var $linemaxfontsize;
586var $lineheight_correction;
587var $lastoptionaltag; // Save current block item which HTML specifies optionsl endtag
588var $pageoutput;
589var $charset_in;
590var $blk;
591var $blklvl;
592var $ColumnAdjust;
593var $ws; // Word spacing
594var $HREF;
595var $pgwidth;
596var $fontlist;
597var $oldx;
598var $oldy;
599var $B;
600var $U; //underlining flag
601var $S; // SmallCaps flag
602var $I;
603
604var $tdbegin;
605var $table;
606var $cell;
607var $col;
608var $row;
609
610var $divbegin;
611var $divalign;
612var $divwidth;
613var $divheight;
614var $divrevert;
615var $spanbgcolor;
616
617var $spanlvl;
618var $listlvl;
619var $listnum;
620var $listtype;
621var $listoccur;
622var $listlist;
623var $listitem;
624
625var $pjustfinished;
626var $ignorefollowingspaces;
627var $SUP;
628var $SUB;
629var $SMALL;
630var $BIG;
631var $toupper;
632var $tolower;
633var $capitalize;
634var $dash_on;
635var $dotted_on;
636var $strike;
637
638var $textbuffer;
639var $currentfontstyle;
640var $currentfontfamily;
641var $currentfontsize;
642var $colorarray;
643var $bgcolorarray;
644var $internallink;
645var $enabledtags;
646
647var $lineheight;
648var $basepath;
649var $textparam;
650
651var $specialcontent;
652var $selectoption;
653var $objectbuffer;
654
655// Table Rotation
656var $table_rotate;
657var $tbrot_maxw;
658var $tbrot_maxh;
659var $tablebuffer;
660var $tbrot_align;
661var $tbrot_Links;
662
663var $divbuffer; // Buffer used when keeping DIV on one page
664var $keep_block_together; // Keep a Block from page-break-inside: avoid
665var $ktLinks; // Keep-together Block links array
666var $ktBlock; // Keep-together Block array
667var $ktForms;
668var $ktReference;
669var $ktBMoutlines;
670var $_kttoc;
671
672var $tbrot_y0;
673var $tbrot_x0;
674var $tbrot_w;
675var $tbrot_h;
676
677var $mb_enc;
678var $directionality;
679
680var $extgstates; // Used for alpha channel - Transparency (Watermark)
681var $mgl;
682var $mgt;
683var $mgr;
684var $mgb;
685
686var $tts;
687var $ttz;
688var $tta;
689
690var $headerDetails;
691var $footerDetails;
692
693// Best to alter the below variables using default stylesheet above
694var $page_break_after_avoid;
695var $margin_bottom_collapse;
696var $list_indent;
697var $list_align;
698var $list_margin_bottom;
699var $default_font_size; // in pts
700var $original_default_font_size; // used to save default sizes when using table default
701var $original_default_font;
702var $watermark_font;
703var $defaultAlign;
704
705// TABLE
706var $defaultTableAlign;
707var $tablethead;
708var $thead_font_weight;
709var $thead_font_style;
710var $thead_font_smCaps;
711var $thead_valign_default;
712var $thead_textalign_default;
713var $tabletfoot;
714var $tfoot_font_weight;
715var $tfoot_font_style;
716var $tfoot_font_smCaps;
717var $tfoot_valign_default;
718var $tfoot_textalign_default;
719
720var $trow_text_rotate;
721
722var $cellPaddingL;
723var $cellPaddingR;
724var $cellPaddingT;
725var $cellPaddingB;
726var $table_lineheight;
727var $table_border_attr_set;
728var $table_border_css_set;
729
730var $shrin_k; // factor with which to shrink tables - used internally - do not change
731var $shrink_this_table_to_fit; // 0 or false to disable; value (if set) gives maximum factor to reduce fontsize
732var $MarginCorrection; // corrects for OddEven Margins
733var $margin_footer;
734var $margin_header;
735
736var $tabletheadjustfinished;
737var $usingCoreFont;
738var $charspacing;
739
740//Private properties FROM FPDF
741var $DisplayPreferences;
742var $flowingBlockAttr;
743var $page; //current page number
744var $n; //current object number
745var $offsets; //array of object offsets
746var $buffer; //buffer holding in-memory PDF
747var $pages; //array containing pages
748var $state; //current document state
749var $compress; //compression flag
750var $DefOrientation; //default orientation
751var $CurOrientation; //current orientation
752var $OrientationChanges; //array indicating orientation changes
753var $k; //scale factor (number of points in user unit)
754var $fwPt;
755var $fhPt; //dimensions of page format in points
756var $fw;
757var $fh; //dimensions of page format in user unit
758var $wPt;
759var $hPt; //current dimensions of page in points
760var $w;
761var $h; //current dimensions of page in user unit
762var $lMargin; //left margin
763var $tMargin; //top margin
764var $rMargin; //right margin
765var $bMargin; //page break margin
766var $cMarginL; //cell margin Left
767var $cMarginR; //cell margin Right
768var $cMarginT; //cell margin Left
769var $cMarginB; //cell margin Right
770var $DeflMargin; //Default left margin
771var $DefrMargin; //Default right margin
772var $x;
773var $y; //current position in user unit for cell positioning
774var $lasth; //height of last cell printed
775var $LineWidth; //line width in user unit
776var $CoreFonts; //array of standard font names
777var $fonts; //array of used fonts
778var $FontFiles; //array of font files
779var $images; //array of used images
780var $PageLinks; //array of links in pages
781var $links; //array of internal links
782var $FontFamily; //current font family
783var $FontStyle; //current font style
784var $CurrentFont; //current font info
785var $FontSizePt; //current font size in points
786var $FontSize; //current font size in user unit
787var $DrawColor; //commands for drawing color
788var $FillColor; //commands for filling color
789var $TextColor; //commands for text color
790var $ColorFlag; //indicates whether fill and text colors are different
791var $autoPageBreak; //automatic page breaking
792var $PageBreakTrigger; //threshold used to trigger page breaks
793var $InFooter; //flag set when processing footer
794var $InHTMLFooter;
795
796var $processingFooter; //flag set when processing footer - added for columns
797var $processingHeader; //flag set when processing header - added for columns
798var $ZoomMode; //zoom display mode
799var $LayoutMode; //layout display mode
800var $title; //title
801var $subject; //subject
802var $author; //author
803var $keywords; //keywords
804var $creator; //creator
805
806var $aliasNbPg; //alias for total number of pages
807var $aliasNbPgGp; //alias for total number of pages in page group
808var $aliasNbPgHex;
809var $aliasNbPgGpHex;
810
811var $ispre;
812
813var $outerblocktags;
814var $innerblocktags;
815
816
817// **********************************
818// **********************************
819// **********************************
820// **********************************
821// **********************************
822// **********************************
823// **********************************
824// **********************************
825// **********************************
826
827function mPDF($mode='',$format='A4',$default_font_size=0,$default_font='',$mgl=15,$mgr=15,$mgt=16,$mgb=16,$mgh=9,$mgf=9, $orientation='P') {
828
829/*-- BACKGROUNDS --*/
830 if (!class_exists('grad', false)) { include(_MPDF_PATH.'classes/grad.php'); }
831 if (empty($this->grad)) { $this->grad = new grad($this); }
832/*-- END BACKGROUNDS --*/
833/*-- FORMS --*/
834 if (!class_exists('form', false)) { include(_MPDF_PATH.'classes/form.php'); }
835 if (empty($this->form)) { $this->form = new form($this); }
836/*-- END FORMS --*/
837
838 $this->time0 = microtime(true);
839 //Some checks
840 $this->_dochecks();
841
842 // Set up Aliases for backwards compatability
843 $this->UnvalidatedText =& $this->watermarkText;
844 $this->TopicIsUnvalidated =& $this->showWatermarkText;
845 $this->AliasNbPg =& $this->aliasNbPg;
846 $this->AliasNbPgGp =& $this->aliasNbPgGp;
847 $this->BiDirectional =& $this->biDirectional;
848 $this->Anchor2Bookmark =& $this->anchor2Bookmark;
849 $this->KeepColumns =& $this->keepColumns;
850 $this->useOddEven =& $this->mirrorMargins;
851 $this->useSubstitutionsMB =& $this->useSubstitutions;
852
853 $this->writingToC = false; // mPDF 5.6.38
854 $this->uniqstr = '20110230'; // mPDF 5.7.2
855 // mPDF 5.6.01
856 $this->layers = array();
857 $this->current_layer = 0;
858 $this->open_layer_pane = false;
859
860 $this->visibility='visible';
861
862 //Initialization of properties
863 $this->spotColors=array();
864 $this->spotColorIDs = array();
865 $this->tableBackgrounds = array();
866
867 $this->kt_y00 = '';
868 $this->kt_p00 = '';
869 $this->iterationCounter = false;
870 $this->BMPonly = array();
871 $this->page=0;
872 $this->n=2;
873 $this->buffer='';
874 $this->objectbuffer = array();
875 $this->pages=array();
876 $this->OrientationChanges=array();
877 $this->state=0;
878 $this->fonts=array();
879 $this->FontFiles=array();
880 $this->images=array();
881 $this->links=array();
882 $this->InFooter=false;
883 $this->processingFooter=false;
884 $this->processingHeader=false;
885 $this->lasth=0;
886 $this->FontFamily='';
887 $this->FontStyle='';
888 $this->FontSizePt=9;
889 $this->U=false;
890 // Small Caps
891 $this->upperCase = array();
892 $this->S = false;
893 $this->smCapsScale = 1;
894 $this->smCapsStretch = 100;
895 $this->margBuffer = 0; // mPDF 5.4.04
896 $this->inMeter = false; // mPDF 5.5.09
897 $this->decimal_offset = 0;
898
899 $this->defTextColor = $this->TextColor = $this->SetTColor($this->ConvertColor(0),true);
900 $this->defDrawColor = $this->DrawColor = $this->SetDColor($this->ConvertColor(0),true);
901 $this->defFillColor = $this->FillColor = $this->SetFColor($this->ConvertColor(255),true);
902
903 //SVG color names array
904 //http://www.w3schools.com/css/css_colornames.asp
905 $this->SVGcolors = array('antiquewhite'=>'#FAEBD7','aqua'=>'#00FFFF','aquamarine'=>'#7FFFD4','beige'=>'#F5F5DC','black'=>'#000000',
906'blue'=>'#0000FF','brown'=>'#A52A2A','cadetblue'=>'#5F9EA0','chocolate'=>'#D2691E','cornflowerblue'=>'#6495ED','crimson'=>'#DC143C',
907'darkblue'=>'#00008B','darkgoldenrod'=>'#B8860B','darkgreen'=>'#006400','darkmagenta'=>'#8B008B','darkorange'=>'#FF8C00',
908'darkred'=>'#8B0000','darkseagreen'=>'#8FBC8F','darkslategray'=>'#2F4F4F','darkviolet'=>'#9400D3','deepskyblue'=>'#00BFFF',
909'dodgerblue'=>'#1E90FF','firebrick'=>'#B22222','forestgreen'=>'#228B22','fuchsia'=>'#FF00FF','gainsboro'=>'#DCDCDC','gold'=>'#FFD700',
910'gray'=>'#808080','green'=>'#008000','greenyellow'=>'#ADFF2F','hotpink'=>'#FF69B4','indigo'=>'#4B0082','khaki'=>'#F0E68C',
911'lavenderblush'=>'#FFF0F5','lemonchiffon'=>'#FFFACD','lightcoral'=>'#F08080','lightgoldenrodyellow'=>'#FAFAD2','lightgreen'=>'#90EE90',
912'lightsalmon'=>'#FFA07A','lightskyblue'=>'#87CEFA','lightslategray'=>'#778899','lightyellow'=>'#FFFFE0','lime'=>'#00FF00','limegreen'=>'#32CD32',
913'magenta'=>'#FF00FF','maroon'=>'#800000','mediumaquamarine'=>'#66CDAA','mediumorchid'=>'#BA55D3','mediumseagreen'=>'#3CB371',
914'mediumspringgreen'=>'#00FA9A','mediumvioletred'=>'#C71585','midnightblue'=>'#191970','mintcream'=>'#F5FFFA','moccasin'=>'#FFE4B5','navy'=>'#000080',
915'olive'=>'#808000','orange'=>'#FFA500','orchid'=>'#DA70D6','palegreen'=>'#98FB98',
916'palevioletred'=>'#D87093','peachpuff'=>'#FFDAB9','pink'=>'#FFC0CB','powderblue'=>'#B0E0E6','purple'=>'#800080',
917'red'=>'#FF0000','royalblue'=>'#4169E1','salmon'=>'#FA8072','seagreen'=>'#2E8B57','sienna'=>'#A0522D','silver'=>'#C0C0C0','skyblue'=>'#87CEEB',
918'slategray'=>'#708090','springgreen'=>'#00FF7F','steelblue'=>'#4682B4','tan'=>'#D2B48C','teal'=>'#008080','thistle'=>'#D8BFD8','turquoise'=>'#40E0D0',
919'violetred'=>'#D02090','white'=>'#FFFFFF','yellow'=>'#FFFF00',
920'aliceblue'=>'#f0f8ff', 'azure'=>'#f0ffff', 'bisque'=>'#ffe4c4', 'blanchedalmond'=>'#ffebcd', 'blueviolet'=>'#8a2be2', 'burlywood'=>'#deb887',
921'chartreuse'=>'#7fff00', 'coral'=>'#ff7f50', 'cornsilk'=>'#fff8dc', 'cyan'=>'#00ffff', 'darkcyan'=>'#008b8b', 'darkgray'=>'#a9a9a9',
922'darkgrey'=>'#a9a9a9', 'darkkhaki'=>'#bdb76b', 'darkolivegreen'=>'#556b2f', 'darkorchid'=>'#9932cc', 'darksalmon'=>'#e9967a',
923'darkslateblue'=>'#483d8b', 'darkslategrey'=>'#2f4f4f', 'darkturquoise'=>'#00ced1', 'deeppink'=>'#ff1493', 'dimgray'=>'#696969',
924'dimgrey'=>'#696969', 'floralwhite'=>'#fffaf0', 'ghostwhite'=>'#f8f8ff', 'goldenrod'=>'#daa520', 'grey'=>'#808080', 'honeydew'=>'#f0fff0',
925'indianred'=>'#cd5c5c', 'ivory'=>'#fffff0', 'lavender'=>'#e6e6fa', 'lawngreen'=>'#7cfc00', 'lightblue'=>'#add8e6', 'lightcyan'=>'#e0ffff',
926'lightgray'=>'#d3d3d3', 'lightgrey'=>'#d3d3d3', 'lightpink'=>'#ffb6c1', 'lightseagreen'=>'#20b2aa', 'lightslategrey'=>'#778899',
927'lightsteelblue'=>'#b0c4de', 'linen'=>'#faf0e6', 'mediumblue'=>'#0000cd', 'mediumpurple'=>'#9370db', 'mediumslateblue'=>'#7b68ee',
928'mediumturquoise'=>'#48d1cc', 'mistyrose'=>'#ffe4e1', 'navajowhite'=>'#ffdead', 'oldlace'=>'#fdf5e6', 'olivedrab'=>'#6b8e23', 'orangered'=>'#ff4500',
929'palegoldenrod'=>'#eee8aa', 'paleturquoise'=>'#afeeee', 'papayawhip'=>'#ffefd5', 'peru'=>'#cd853f', 'plum'=>'#dda0dd', 'rosybrown'=>'#bc8f8f',
930'saddlebrown'=>'#8b4513', 'sandybrown'=>'#f4a460', 'seashell'=>'#fff5ee', 'slateblue'=>'#6a5acd', 'slategrey'=>'#708090', 'snow'=>'#fffafa',
931'tomato'=>'#ff6347', 'violet'=>'#ee82ee', 'wheat'=>'#f5deb3', 'whitesmoke'=>'#f5f5f5', 'yellowgreen'=>'#9acd32');
932
933 $this->ColorFlag=false;
934 $this->extgstates = array();
935
936 $this->mb_enc='windows-1252';
937 $this->directionality='ltr';
938 $this->defaultAlign = 'L';
939 $this->defaultTableAlign = 'L';
940
941 $this->fixedPosBlockSave = array();
942 $this->extraFontSubsets = 0;
943
944 $this->SHYpatterns = array();
945 $this->loadedSHYdictionary = false;
946 $this->SHYdictionary = array();
947 $this->SHYdictionaryWords = array();
948 $this->blockContext = 1;
949 $this->floatDivs = array();
950 $this->DisplayPreferences='';
951
952 $this->patterns = array(); // Tiling patterns used for backgrounds
953 $this->pageBackgrounds = array();
954 $this->writingHTMLheader = false; // internal flag - used both for writing HTMLHeaders/Footers and FixedPos block
955 $this->writingHTMLfooter = false; // internal flag - used both for writing HTMLHeaders/Footers and FixedPos block
956 $this->gradients = array();
957
958 $this->kwt_Reference = array();
959 $this->kwt_BMoutlines = array();
960 $this->kwt_toc = array();
961
962 $this->tbrot_Reference = array();
963 $this->tbrot_BMoutlines = array();
964 $this->tbrot_toc = array();
965
966 $this->col_Reference = array();
967 $this->col_BMoutlines = array();
968 $this->col_toc = array();
969 $this->graphs = array();
970
971 $this->pgsIns = array();
972 $this->PDFAXwarnings = array();
973 $this->inlineDisplayOff = false;
974 $this->kerning = false;
975 $this->lSpacingCSS = '';
976 $this->wSpacingCSS = '';
977 $this->fixedlSpacing = false;
978 $this->minwSpacing = 0;
979
980
981 $this->baselineC = 0.35; // Baseline for text
982 $this->noImageFile = str_replace("\\","/",dirname(__FILE__)) . '/includes/no_image.jpg';
983 $this->subPos = 0;
984 $this->forceExactLineheight = false;
985 $this->listOcc = 0;
986 $this->normalLineheight = 1.3;
987 // These are intended as configuration variables, and should be set in config.php - which will override these values;
988 // set here as failsafe as will cause an error if not defined
989 $this->incrementFPR1 = 10;
990 $this->incrementFPR2 = 10;
991 $this->incrementFPR3 = 10;
992 $this->incrementFPR4 = 10;
993
994 $this->fullImageHeight = false;
995 $this->floatbuffer = array();
996 $this->floatmargins = array();
997 $this->autoFontGroups = 0;
998 $this->formobjects=array(); // array of Form Objects for WMF
999 $this->InlineProperties=array();
1000 $this->InlineAnnots=array();
1001 $this->ktAnnots=array();
1002 $this->tbrot_Annots=array();
1003 $this->kwt_Annots=array();
1004 $this->columnAnnots=array();
1005 $this->pageDim=array();
1006 $this->breakpoints = array(); // used in columnbuffer
1007 $this->tableLevel=0;
1008 $this->tbctr=array(); // counter for nested tables at each level
1009 $this->page_box = array();
1010 $this->show_marks = ''; // crop or cross marks
1011 $this->kwt = false;
1012 $this->kwt_height = 0;
1013 $this->kwt_y0 = 0;
1014 $this->kwt_x0 = 0;
1015 $this->kwt_buffer = array();
1016 $this->kwt_Links = array();
1017 $this->kwt_moved = false;
1018 $this->kwt_saved = false;
1019 $this->PageNumSubstitutions = array();
1020 $this->base_table_properties=array();
1021 $this->borderstyles = array('inset','groove','outset','ridge','dotted','dashed','solid','double');
1022 $this->tbrot_align = 'C';
1023 $this->pageheaders=array();
1024 $this->pagefooters=array();
1025
1026 $this->pageHTMLheaders=array();
1027 $this->pageHTMLfooters=array();
1028 $this->HTMLheaderPageLinks = array();
1029 $this->HTMLheaderPageAnnots = array();
1030
1031 $this->ktForms = array();
1032 $this->HTMLheaderPageForms = array();
1033 $this->columnForms = array();
1034 $this->tbrotForms = array();
1035 $this->useRC128encryption = false;
1036 $this->uniqid = '';
1037
1038 $this->bufferoutput = false;
1039 $this->encrypted=false; //whether document is protected
1040 $this->BMoutlines=array();
1041 $this->ColActive=0; //Flag indicating that columns are on (the index is being processed)
1042 $this->Reference=array(); //Array containing the references
1043 $this->CurrCol=0; //Current column number
1044 $this->ColL = array(0); // Array of Left pos of columns - absolute - needs Margin correction for Odd-Even
1045 $this->ColR = array(0); // Array of Right pos of columns - absolute pos - needs Margin correction for Odd-Even
1046 $this->ChangeColumn = 0;
1047 $this->columnbuffer = array();
1048 $this->ColDetails = array(); // Keeps track of some column details
1049 $this->columnLinks = array(); // Cross references PageLinks
1050 $this->substitute = array(); // Array of substitution strings e.g. <ttz>112</ttz>
1051 $this->entsearch = array(); // Array of HTML entities (>ASCII 127) to substitute
1052 $this->entsubstitute = array(); // Array of substitution decimal unicode for the Hi entities
1053 $this->lastoptionaltag = '';
1054 $this->charset_in = '';
1055 $this->blk = array();
1056 $this->blklvl = 0;
1057 $this->tts = false;
1058 $this->ttz = false;
1059 $this->tta = false;
1060 $this->ispre=false;
1061
1062 $this->checkSIP = false;
1063 $this->checkSMP = false;
1064 $this->checkCJK = false;
1065 $this->tableCJK = false;
1066
1067 $this->headerDetails=array();
1068 $this->footerDetails=array();
1069 $this->page_break_after_avoid = false;
1070 $this->margin_bottom_collapse = false;
1071 $this->tablethead = 0;
1072 $this->tabletfoot = 0;
1073 $this->table_border_attr_set = 0;
1074 $this->table_border_css_set = 0;
1075 $this->shrin_k = 1.0;
1076 $this->shrink_this_table_to_fit = 0;
1077 $this->MarginCorrection = 0;
1078
1079 $this->tabletheadjustfinished = false;
1080 $this->usingCoreFont = false;
1081 $this->charspacing=0;
1082
1083 $this->autoPageBreak = true;
1084
1085 require(_MPDF_PATH.'config.php'); // config data
1086
1087 $this->_setPageSize($format, $orientation);
1088 $this->DefOrientation=$orientation;
1089
1090 $this->margin_header=$mgh;
1091 $this->margin_footer=$mgf;
1092
1093 $bmargin=$mgb;
1094
1095 $this->DeflMargin = $mgl;
1096 $this->DefrMargin = $mgr;
1097
1098 $this->orig_tMargin = $mgt;
1099 $this->orig_bMargin = $bmargin;
1100 $this->orig_lMargin = $this->DeflMargin;
1101 $this->orig_rMargin = $this->DefrMargin;
1102 $this->orig_hMargin = $this->margin_header;
1103 $this->orig_fMargin = $this->margin_footer;
1104
1105 if ($this->setAutoTopMargin=='pad') { $mgt += $this->margin_header; }
1106 if ($this->setAutoBottomMargin=='pad') { $mgb += $this->margin_footer; }
1107 $this->SetMargins($this->DeflMargin,$this->DefrMargin,$mgt); // sets l r t margin
1108 //Automatic page break
1109 $this->SetAutoPageBreak($this->autoPageBreak,$bmargin); // sets $this->bMargin & PageBreakTrigger
1110
1111 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
1112
1113 //Interior cell margin (1 mm) ? not used
1114 $this->cMarginL = 1;
1115 $this->cMarginR = 1;
1116 //Line width (0.2 mm)
1117 $this->LineWidth=.567/_MPDFK;
1118
1119 //To make the function Footer() work - replaces {nb} with page number
1120 $this->AliasNbPages();
1121 $this->AliasNbPageGroups();
1122
1123 $this->aliasNbPgHex = '{nbHEXmarker}';
1124 $this->aliasNbPgGpHex = '{nbpgHEXmarker}';
1125
1126 //Enable all tags as default
1127 $this->DisableTags();
1128 //Full width display mode
1129 $this->SetDisplayMode(100); // fullwidth? 'fullpage'
1130 //Compression
1131 $this->SetCompression(true);
1132 //Set default display preferences
1133 $this->SetDisplayPreferences('');
1134
1135 // Font data
1136 require(_MPDF_PATH.'config_fonts.php');
1137 // Available fonts
1138 $this->available_unifonts = array();
1139 foreach ($this->fontdata AS $f => $fs) {
1140 if (isset($fs['R']) && $fs['R']) { $this->available_unifonts[] = $f; }
1141 if (isset($fs['B']) && $fs['B']) { $this->available_unifonts[] = $f.'B'; }
1142 if (isset($fs['I']) && $fs['I']) { $this->available_unifonts[] = $f.'I'; }
1143 if (isset($fs['BI']) && $fs['BI']) { $this->available_unifonts[] = $f.'BI'; }
1144 }
1145
1146 $this->default_available_fonts = $this->available_unifonts;
1147
1148 $optcore = false;
1149 $onlyCoreFonts = false;
1150 if (preg_match('/([\-+])aCJK/i',$mode, $m)) {
1151 $mode = preg_replace('/([\-+])aCJK/i','',$mode);
1152 if ($m[1]=='+') { $this->useAdobeCJK = true; }
1153 else { $this->useAdobeCJK = false; }
1154 }
1155
1156 if (strlen($mode)==1) {
1157 if ($mode=='s') { $this->percentSubset = 100; $mode = ''; }
1158 else if ($mode=='c') { $onlyCoreFonts = true; $mode = ''; }
1159 }
1160 else if (substr($mode,-2)=='-s') {
1161 $this->percentSubset = 100;
1162 $mode = substr($mode,0,strlen($mode)-2);
1163 }
1164 else if (substr($mode,-2)=='-c') {
1165 $onlyCoreFonts = true;
1166 $mode = substr($mode,0,strlen($mode)-2);
1167 }
1168 else if (substr($mode,-2)=='-x') {
1169 $optcore = true;
1170 $mode = substr($mode,0,strlen($mode)-2);
1171 }
1172
1173 // Autodetect if mode is a language_country string (en-GB or en_GB or en)
1174 if ((strlen($mode) == 5 && $mode != 'UTF-8') || strlen($mode) == 2) {
1175 list ($coreSuitable,$mpdf_pdf_unifonts) = GetLangOpts($mode, $this->useAdobeCJK);
1176 if ($coreSuitable && $optcore) { $onlyCoreFonts = true; }
1177 if ($mpdf_pdf_unifonts) {
1178 $this->RestrictUnicodeFonts($mpdf_pdf_unifonts);
1179 $this->default_available_fonts = $mpdf_pdf_unifonts;
1180 }
1181 $this->currentLang = $mode;
1182 $this->default_lang = $mode;
1183 }
1184
1185 $this->onlyCoreFonts = $onlyCoreFonts;
1186
1187 if ($this->onlyCoreFonts) {
1188 $this->setMBencoding('windows-1252'); // sets $this->mb_enc
1189 }
1190 else {
1191 $this->setMBencoding('UTF-8'); // sets $this->mb_enc
1192 }
1193 @mb_regex_encoding('UTF-8'); // required only for mb_ereg... and mb_split functions
1194
1195
1196 // Adobe CJK fonts
1197 $this->available_CJK_fonts = array('gb','big5','sjis','uhc','gbB','big5B','sjisB','uhcB','gbI','big5I','sjisI','uhcI',
1198 'gbBI','big5BI','sjisBI','uhcBI');
1199
1200
1201 //Standard fonts
1202 $this->CoreFonts=array('ccourier'=>'Courier','ccourierB'=>'Courier-Bold','ccourierI'=>'Courier-Oblique','ccourierBI'=>'Courier-BoldOblique',
1203 'chelvetica'=>'Helvetica','chelveticaB'=>'Helvetica-Bold','chelveticaI'=>'Helvetica-Oblique','chelveticaBI'=>'Helvetica-BoldOblique',
1204 'ctimes'=>'Times-Roman','ctimesB'=>'Times-Bold','ctimesI'=>'Times-Italic','ctimesBI'=>'Times-BoldItalic',
1205 'csymbol'=>'Symbol','czapfdingbats'=>'ZapfDingbats');
1206 $this->fontlist=array("ctimes","ccourier","chelvetica","csymbol","czapfdingbats");
1207
1208 // Substitutions
1209 $this->setHiEntitySubstitutions();
1210
1211 if ($this->onlyCoreFonts) {
1212 $this->useSubstitutions = true;
1213 $this->SetSubstitutions();
1214 }
1215 else { $this->useSubstitutions = false; }
1216
1217/*-- HTML-CSS --*/
1218
1219 if (!class_exists('cssmgr', false)) { include(_MPDF_PATH .'classes/cssmgr.php'); }
1220 $this->cssmgr = new cssmgr($this);
1221 if (file_exists(_MPDF_PATH.'mpdf.css')) {
1222 $css = file_get_contents(_MPDF_PATH.'mpdf.css');
1223 $css2 = $this->cssmgr->ReadDefaultCSS($css);
1224 $this->defaultCSS = $this->cssmgr->array_merge_recursive_unique($this->defaultCSS,$css2);
1225 }
1226/*-- END HTML-CSS --*/
1227
1228 if ($default_font=='') {
1229 if ($this->onlyCoreFonts) {
1230 if (in_array(strtolower($this->defaultCSS['BODY']['FONT-FAMILY']),$this->mono_fonts)) { $default_font = 'ccourier'; }
1231 else if (in_array(strtolower($this->defaultCSS['BODY']['FONT-FAMILY']),$this->sans_fonts)) { $default_font = 'chelvetica'; }
1232 else { $default_font = 'ctimes'; }
1233 }
1234 else { $default_font = $this->defaultCSS['BODY']['FONT-FAMILY']; }
1235 }
1236 if (!$default_font_size) {
1237 $mmsize = $this->ConvertSize($this->defaultCSS['BODY']['FONT-SIZE']);
1238 $default_font_size = $mmsize*(_MPDFK);
1239 }
1240
1241 if ($default_font) { $this->SetDefaultFont($default_font); }
1242 if ($default_font_size) { $this->SetDefaultFontSize($default_font_size); }
1243
1244 $this->SetLineHeight(); // lineheight is in mm
1245
1246 $this->SetFColor($this->ConvertColor(255));
1247 $this->HREF='';
1248 $this->oldy=-1;
1249 $this->B=0;
1250 $this->U=false;
1251 $this->S=false;
1252 $this->I=0;
1253
1254 $this->listlvl=0;
1255 $this->listnum=0;
1256 $this->listtype='';
1257 $this->listoccur=array();
1258 $this->listlist=array();
1259 $this->listitem=array();
1260
1261 $this->tdbegin=false;
1262 $this->table=array();
1263 $this->cell=array();
1264 $this->col=-1;
1265 $this->row=-1;
1266 $this->cellBorderBuffer = array();
1267
1268 $this->divbegin=false;
1269 $this->divalign='';
1270 $this->divwidth=0;
1271 $this->divheight=0;
1272 $this->spanbgcolor=false;
1273 $this->divrevert=false;
1274 $this->spanborder=false;
1275 $this->spanborddet=array();
1276
1277 $this->blockjustfinished=false;
1278 $this->listjustfinished=false;
1279 $this->ignorefollowingspaces = true; //in order to eliminate exceeding left-side spaces
1280 $this->toupper=false;
1281 $this->tolower=false;
1282 $this->capitalize=false;
1283 $this->dash_on=false;
1284 $this->dotted_on=false;
1285 $this->SUP=false;
1286 $this->SUB=false;
1287 $this->strike=false;
1288 $this->textshadow='';
1289
1290 $this->currentfontfamily='';
1291 $this->currentfontsize='';
1292 $this->currentfontstyle='';
1293 $this->colorarray=array();
1294 $this->spanbgcolorarray=array();
1295 $this->textbuffer=array();
1296 $this->internallink=array();
1297 $this->basepath = "";
1298
1299 $this->SetBasePath('');
1300
1301 $this->textparam = array();
1302
1303 $this->specialcontent = '';
1304 $this->selectoption = array();
1305
1306/*-- IMPORTS --*/
1307
1308 $this->tpls = array();
1309 $this->tpl = 0;
1310 $this->tplprefix = "/TPL";
1311 $this->res = array();
1312 if ($this->enableImports) {
1313 $this->SetImportUse();
1314 }
1315/*-- END IMPORTS --*/
1316
1317 if ($this->progressBar) { $this->StartProgressBarOutput($this->progressBar) ; } // *PROGRESS-BAR*
1318}
1319
1320
1321function _setPageSize($format, &$orientation) {
1322 //Page format
1323 if(is_string($format))
1324 {
1325 if ($format=='') { $format = 'A4'; }
1326 $pfo = 'P';
1327 if(preg_match('/([0-9a-zA-Z]*)-L/i',$format,$m)) { // e.g. A4-L = A4 landscape
1328 $format=$m[1];
1329 $pfo='L';
1330 }
1331 $format = $this->_getPageFormat($format);
1332 if (!$format) { $this->Error('Unknown page format: '.$format); }
1333 else { $orientation = $pfo; }
1334
1335 $this->fwPt=$format[0];
1336 $this->fhPt=$format[1];
1337 }
1338 else
1339 {
1340 if (!$format[0] || !$format[1]) { $this->Error('Invalid page format: '.$format[0].' '.$format[1]); }
1341 $this->fwPt=$format[0]*_MPDFK;
1342 $this->fhPt=$format[1]*_MPDFK;
1343 }
1344 $this->fw=$this->fwPt/_MPDFK;
1345 $this->fh=$this->fhPt/_MPDFK;
1346 //Page orientation
1347 $orientation=strtolower($orientation);
1348 if($orientation=='p' or $orientation=='portrait')
1349 {
1350 $orientation='P';
1351 $this->wPt=$this->fwPt;
1352 $this->hPt=$this->fhPt;
1353 }
1354 elseif($orientation=='l' or $orientation=='landscape')
1355 {
1356 $orientation='L';
1357 $this->wPt=$this->fhPt;
1358 $this->hPt=$this->fwPt;
1359 }
1360 else $this->Error('Incorrect orientation: '.$orientation);
1361 $this->CurOrientation=$orientation;
1362
1363 $this->w=$this->wPt/_MPDFK;
1364 $this->h=$this->hPt/_MPDFK;
1365}
1366
1367function _getPageFormat($format) {
1368 switch (strtoupper($format)) {
1369 case '4A0': {$format = array(4767.87,6740.79); break;}
1370 case '2A0': {$format = array(3370.39,4767.87); break;}
1371 case 'A0': {$format = array(2383.94,3370.39); break;}
1372 case 'A1': {$format = array(1683.78,2383.94); break;}
1373 case 'A2': {$format = array(1190.55,1683.78); break;}
1374 case 'A3': {$format = array(841.89,1190.55); break;}
1375 case 'A4': default: {$format = array(595.28,841.89); break;}
1376 case 'A5': {$format = array(419.53,595.28); break;}
1377 case 'A6': {$format = array(297.64,419.53); break;}
1378 case 'A7': {$format = array(209.76,297.64); break;}
1379 case 'A8': {$format = array(147.40,209.76); break;}
1380 case 'A9': {$format = array(104.88,147.40); break;}
1381 case 'A10': {$format = array(73.70,104.88); break;}
1382 case 'B0': {$format = array(2834.65,4008.19); break;}
1383 case 'B1': {$format = array(2004.09,2834.65); break;}
1384 case 'B2': {$format = array(1417.32,2004.09); break;}
1385 case 'B3': {$format = array(1000.63,1417.32); break;}
1386 case 'B4': {$format = array(708.66,1000.63); break;}
1387 case 'B5': {$format = array(498.90,708.66); break;}
1388 case 'B6': {$format = array(354.33,498.90); break;}
1389 case 'B7': {$format = array(249.45,354.33); break;}
1390 case 'B8': {$format = array(175.75,249.45); break;}
1391 case 'B9': {$format = array(124.72,175.75); break;}
1392 case 'B10': {$format = array(87.87,124.72); break;}
1393 case 'C0': {$format = array(2599.37,3676.54); break;}
1394 case 'C1': {$format = array(1836.85,2599.37); break;}
1395 case 'C2': {$format = array(1298.27,1836.85); break;}
1396 case 'C3': {$format = array(918.43,1298.27); break;}
1397 case 'C4': {$format = array(649.13,918.43); break;}
1398 case 'C5': {$format = array(459.21,649.13); break;}
1399 case 'C6': {$format = array(323.15,459.21); break;}
1400 case 'C7': {$format = array(229.61,323.15); break;}
1401 case 'C8': {$format = array(161.57,229.61); break;}
1402 case 'C9': {$format = array(113.39,161.57); break;}
1403 case 'C10': {$format = array(79.37,113.39); break;}
1404 case 'RA0': {$format = array(2437.80,3458.27); break;}
1405 case 'RA1': {$format = array(1729.13,2437.80); break;}
1406 case 'RA2': {$format = array(1218.90,1729.13); break;}
1407 case 'RA3': {$format = array(864.57,1218.90); break;}
1408 case 'RA4': {$format = array(609.45,864.57); break;}
1409 case 'SRA0': {$format = array(2551.18,3628.35); break;}
1410 case 'SRA1': {$format = array(1814.17,2551.18); break;}
1411 case 'SRA2': {$format = array(1275.59,1814.17); break;}
1412 case 'SRA3': {$format = array(907.09,1275.59); break;}
1413 case 'SRA4': {$format = array(637.80,907.09); break;}
1414 case 'LETTER': {$format = array(612.00,792.00); break;}
1415 case 'LEGAL': {$format = array(612.00,1008.00); break;}
1416 case 'LEDGER': {$format = array(279.00,432.00); break;}
1417 case 'TABLOID': {$format = array(279.00,432.00); break;}
1418 case 'EXECUTIVE': {$format = array(521.86,756.00); break;}
1419 case 'FOLIO': {$format = array(612.00,936.00); break;}
1420 case 'B': {$format=array(362.83,561.26 ); break;} // 'B' format paperback size 128x198mm
1421 case 'A': {$format=array(314.65,504.57 ); break;} // 'A' format paperback size 111x178mm
1422 case 'DEMY': {$format=array(382.68,612.28 ); break;} // 'Demy' format paperback size 135x216mm
1423 case 'ROYAL': {$format=array(433.70,663.30 ); break;} // 'Royal' format paperback size 153x234mm
1424 default: $format = false;
1425 }
1426 return $format;
1427}
1428
1429
1430/*-- PROGRESS-BAR --*/
1431function StartProgressBarOutput($mode=1) {
1432 // must be relative path, or URI (not a file system path)
1433 if (!defined('_MPDF_URI')) {
1434 $this->progressBar = false;
1435 if ($this->debug) { $this->Error("You need to define _MPDF_URI to use the progress bar!"); }
1436 else return false;
1437 }
1438 $this->progressBar = $mode;
1439 if ($this->progbar_altHTML) {
1440 echo $this->progbar_altHTML;
1441 }
1442 else {
1443 echo '<html>
1444 <head>
1445 <title>mPDF File Progress</title>
1446 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
1447 <link rel="stylesheet" type="text/css" href="'._MPDF_URI.'progbar.css" />
1448 </head>
1449 <body>
1450 <div class="main">
1451 <div class="heading">'.$this->progbar_heading.'</div>
1452 <div class="demo">
1453 ';
1454 if ($this->progressBar==2) { echo ' <table width="100%"><tr><td style="width: 50%;">
1455 <span class="barheading">Writing HTML code</span> <br/>
1456
1457 <div class="progressBar">
1458 <div id="element1" class="innerBar">&nbsp;</div>
1459 </div>
1460 <span class="code" id="box1"></span>
1461 </td><td style="width: 50%;">
1462 <span class="barheading">Autosizing elements</span> <br/>
1463 <div class="progressBar">
1464 <div id="element4" class="innerBar">&nbsp;</div>
1465 </div>
1466 <span class="code" id="box4"></span>
1467 <br/><br/>
1468 <span class="barheading">Writing Tables</span> <br/>
1469 <div class="progressBar">
1470 <div id="element7" class="innerBar">&nbsp;</div>
1471 </div>
1472 <span class="code" id="box7"></span>
1473 </td></tr>
1474 <tr><td><br /><br /></td><td></td></tr>
1475 <tr><td style="width: 50%;">
1476 '; }
1477 echo ' <span class="barheading">Writing PDF file</span> <br/>
1478 <div class="progressBar">
1479 <div id="element2" class="innerBar">&nbsp;</div>
1480 </div>
1481 <span class="code" id="box2"></span>
1482 ';
1483 if ($this->progressBar==2) { echo '
1484 </td><td style="width: 50%;">
1485 <span class="barheading">Memory usage</span> <br/>
1486 <div class="progressBar">
1487 <div id="element5" class="innerBar">&nbsp;</div>
1488 </div>
1489 <span id="box5">0</span> '.ini_get("memory_limit").'<br />
1490 <br/><br/>
1491 <span class="barheading">Memory usage (peak)</span> <br/>
1492 <div class="progressBar">
1493 <div id="element6" class="innerBar">&nbsp;</div>
1494 </div>
1495 <span id="box6">0</span> '.ini_get("memory_limit").'<br />
1496 </td></tr>
1497 </table>
1498 '; }
1499 echo ' <br/><br/>
1500 <span id="box3"></span>
1501
1502 </div>
1503 ';
1504 }
1505 ob_flush();
1506 flush();
1507}
1508
1509function UpdateProgressBar($el,$val,$txt='') {
1510 // $val should be a string - 5 = actual value, +15 = increment
1511
1512 if ($this->progressBar<2) {
1513 if ($el>3) { return; }
1514 else if ($el ==1) { $el = 2; }
1515 }
1516 echo '<script type="text/javascript">';
1517 if ($val) { echo ' document.getElementById(\'element'.$el.'\').style.width=\''.$val.'%\'; '; }
1518 if ($txt) { echo ' document.getElementById(\'box'.$el.'\').innerHTML=\''.$txt.'\'; '; }
1519 if ($this->progressBar==2) {
1520 $m = round(memory_get_usage(true)/1048576);
1521 $m2 = round(memory_get_peak_usage(true)/1048576);
1522 $mem = $m * 100 / (ini_get("memory_limit")+0);
1523 $mem2 = $m2 * 100 / (ini_get("memory_limit")+0);
1524 echo ' document.getElementById(\'element5\').style.width=\''.$mem.'%\'; ';
1525 echo ' document.getElementById(\'element6\').style.width=\''.$mem2.'%\'; ';
1526 echo ' document.getElementById(\'box5\').innerHTML=\''.$m.'MB / \'; ';
1527 echo ' document.getElementById(\'box6\').innerHTML=\''.$m2.'MB / \'; ';
1528 }
1529 echo '</script>'."\n";
1530 ob_flush();
1531 flush();
1532}
1533/*-- END PROGRESS-BAR --*/
1534
1535
1536
1537function RestrictUnicodeFonts($res) {
1538 // $res = array of (Unicode) fonts to restrict to: e.g. norasi|norasiB - language specific
1539 if (count($res)) { // Leave full list of available fonts if passed blank array
1540 $this->available_unifonts = $res;
1541 }
1542 else { $this->available_unifonts = $this->default_available_fonts; }
1543 if (count($this->available_unifonts) == 0) { $this->available_unifonts[] = $this->default_available_fonts[0]; }
1544 $this->available_unifonts = array_values($this->available_unifonts);
1545}
1546
1547
1548function setMBencoding($enc) {
1549 if ($this->mb_enc != $enc) {
1550 $this->mb_enc = $enc;
1551 mb_internal_encoding($this->mb_enc);
1552 }
1553}
1554
1555
1556function SetMargins($left,$right,$top) {
1557 //Set left, top and right margins
1558 $this->lMargin=$left;
1559 $this->rMargin=$right;
1560 $this->tMargin=$top;
1561}
1562
1563function ResetMargins() {
1564 //ReSet left, top margins
1565 if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation=='P' && $this->CurOrientation=='L') {
1566 if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN
1567 $this->tMargin=$this->orig_rMargin;
1568 $this->bMargin=$this->orig_lMargin;
1569 }
1570 else { // ODD // OR NOT MIRRORING MARGINS/FOOTERS
1571 $this->tMargin=$this->orig_lMargin;
1572 $this->bMargin=$this->orig_rMargin;
1573 }
1574 $this->lMargin=$this->DeflMargin;
1575 $this->rMargin=$this->DefrMargin;
1576 $this->MarginCorrection = 0;
1577 $this->PageBreakTrigger=$this->h-$this->bMargin;
1578 }
1579 else if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN
1580 $this->lMargin=$this->DefrMargin;
1581 $this->rMargin=$this->DeflMargin;
1582 $this->MarginCorrection = $this->DefrMargin-$this->DeflMargin;
1583
1584 }
1585 else { // ODD // OR NOT MIRRORING MARGINS/FOOTERS
1586 $this->lMargin=$this->DeflMargin;
1587 $this->rMargin=$this->DefrMargin;
1588 if ($this->mirrorMargins) { $this->MarginCorrection = $this->DeflMargin-$this->DefrMargin; }
1589 }
1590 $this->x=$this->lMargin;
1591
1592}
1593
1594function SetLeftMargin($margin) {
1595 //Set left margin
1596 $this->lMargin=$margin;
1597 if($this->page>0 and $this->x<$margin) $this->x=$margin;
1598}
1599
1600function SetTopMargin($margin) {
1601 //Set top margin
1602 $this->tMargin=$margin;
1603}
1604
1605function SetRightMargin($margin) {
1606 //Set right margin
1607 $this->rMargin=$margin;
1608}
1609
1610function SetAutoPageBreak($auto,$margin=0) {
1611 //Set auto page break mode and triggering margin
1612 $this->autoPageBreak=$auto;
1613 $this->bMargin=$margin;
1614 $this->PageBreakTrigger=$this->h-$margin;
1615}
1616
1617function SetDisplayMode($zoom,$layout='continuous') {
1618 //Set display mode in viewer
1619 if($zoom=='fullpage' or $zoom=='fullwidth' or $zoom=='real' or $zoom=='default' or !is_string($zoom))
1620 $this->ZoomMode=$zoom;
1621 else
1622 $this->Error('Incorrect zoom display mode: '.$zoom);
1623 if($layout=='single' or $layout=='continuous' or $layout=='two' or $layout=='twoleft' or $layout=='tworight' or $layout=='default')
1624 $this->LayoutMode=$layout;
1625 else
1626 $this->Error('Incorrect layout display mode: '.$layout);
1627}
1628
1629function SetCompression($compress) {
1630 //Set page compression
1631 if(function_exists('gzcompress')) $this->compress=$compress;
1632 else $this->compress=false;
1633}
1634
1635function SetTitle($title) {
1636 //Title of document // Arrives as UTF-8
1637 $this->title = $title;
1638}
1639
1640function SetSubject($subject) {
1641 //Subject of document
1642 $this->subject= $subject;
1643}
1644
1645function SetAuthor($author) {
1646 //Author of document
1647 $this->author= $author;
1648}
1649
1650function SetKeywords($keywords) {
1651 //Keywords of document
1652 $this->keywords= $keywords;
1653}
1654
1655function SetCreator($creator) {
1656 //Creator of document
1657 $this->creator= $creator;
1658}
1659
1660
1661function SetAnchor2Bookmark($x) {
1662 $this->anchor2Bookmark = $x;
1663}
1664
1665function AliasNbPages($alias='{nb}') {
1666 //Define an alias for total number of pages
1667 $this->aliasNbPg=$alias;
1668}
1669
1670function AliasNbPageGroups($alias='{nbpg}') {
1671 //Define an alias for total number of pages in a group
1672 $this->aliasNbPgGp=$alias;
1673}
1674
1675function SetAlpha($alpha, $bm='Normal', $return=false, $mode='B') {
1676// alpha: real value from 0 (transparent) to 1 (opaque)
1677// bm: blend mode, one of the following:
1678// Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn,
1679// HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity
1680// set alpha for stroking (CA) and non-stroking (ca) operations
1681// mode determines F (fill) S (stroke) B (both)
1682 if (($this->PDFA || $this->PDFX) && $alpha!=1) {
1683 if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "Image opacity must be 100% (Opacity changed to 100%)"; }
1684 $alpha = 1;
1685 }
1686 $a = array('BM'=>'/'.$bm);
1687 if ($mode=='F' || $mode=='B') $a['ca'] = $alpha; // mPDF 5.7.2
1688 if ($mode=='S' || $mode=='B') $a['CA'] = $alpha; // mPDF 5.7.2
1689 $gs = $this->AddExtGState($a);
1690 if ($return) { return sprintf('/GS%d gs', $gs); }
1691 else { $this->_out(sprintf('/GS%d gs', $gs)); }
1692}
1693
1694function AddExtGState($parms) {
1695 $n = count($this->extgstates);
1696 // check if graphics state already exists
1697 for ($i=1; $i<=$n; $i++) {
1698 if (count($this->extgstates[$i]['parms']) == count($parms)) {
1699 $same = true;
1700 foreach($this->extgstates[$i]['parms'] AS $k=>$v) {
1701 if (!isset($parms[$k]) || $parms[$k] != $v) { $same = false; break; }
1702 }
1703 if ($same) { return $i; }
1704 }
1705 }
1706 $n++;
1707 $this->extgstates[$n]['parms'] = $parms;
1708 return $n;
1709}
1710
1711function SetVisibility($v) {
1712 if (($this->PDFA || $this->PDFX) && $this->visibility!='visible') { $this->PDFAXwarnings[] = "Cannot set visibility to anything other than full when using PDFA or PDFX"; return ''; }
1713 else if (!$this->PDFA && !$this->PDFX)
1714 $this->pdf_version='1.5';
1715 if($this->visibility!='visible') {
1716 $this->_out('EMC');
1717 $this->hasOC=intval($this->hasOC ); // mPDF 5.6.01
1718 }
1719 if($v=='printonly') {
1720 $this->_out('/OC /OC1 BDC');
1721 $this->hasOC=($this->hasOC | 1); // mPDF 5.6.01
1722 }
1723 elseif($v=='screenonly') {
1724 $this->_out('/OC /OC2 BDC');
1725 $this->hasOC=($this->hasOC | 2); // mPDF 5.6.01
1726 }
1727 elseif($v=='hidden') {
1728 $this->_out('/OC /OC3 BDC');
1729 $this->hasOC=($this->hasOC | 4); // mPDF 5.6.01
1730 }
1731 elseif($v!='visible')
1732 $this->Error('Incorrect visibility: '.$v);
1733 $this->visibility=$v;
1734}
1735
1736function Error($msg) {
1737 //Fatal error
1738 header('Content-Type: text/html; charset=utf-8');
1739 die('<B>mPDF error: </B>'.$msg);
1740}
1741
1742function Open() {
1743 //Begin document
1744 if($this->state==0) $this->_begindoc();
1745}
1746
1747function Close() {
1748 if ($this->progressBar) { $this->UpdateProgressBar(2,'2','Closing last page'); } // *PROGRESS-BAR*
1749 //Terminate document
1750 if($this->state==3) return;
1751 if($this->page==0) $this->AddPage($this->CurOrientation);
1752 if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); } // *TABLES*
1753 if ($this->tablebuffer) { $this->printtablebuffer(); } // *TABLES*
1754/*-- COLUMNS --*/
1755
1756 if ($this->ColActive) {
1757 $this->SetColumns(0);
1758 $this->ColActive = 0;
1759 if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
1760 }
1761/*-- END COLUMNS --*/
1762 if (count($this->divbuffer)) { $this->printdivbuffer(); }
1763
1764 // BODY Backgrounds
1765 $s = '';
1766
1767 $s .= $this->PrintBodyBackgrounds();
1768
1769 $s .= $this->PrintPageBackgrounds();
1770 $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', "\n".$s."\n".'\\1', $this->pages[$this->page]);
1771 $this->pageBackgrounds = array();
1772
1773 if($this->visibility!='visible')
1774 $this->SetVisibility('visible');
1775 // mPDF 5.6.01 - LAYERS
1776 $this->EndLayer();
1777
1778 if (!$this->tocontents || !$this->tocontents->TOCmark) { //Page footer
1779 $this->InFooter=true;
1780 $this->Footer();
1781 $this->InFooter=false;
1782 }
1783 if ($this->tocontents && ($this->tocontents->TOCmark || count($this->tocontents->m_TOC))) { $this->tocontents->insertTOC(); } // *TOC*
1784
1785 //Close page
1786 $this->_endpage();
1787
1788 //Close document
1789 $this->_enddoc();
1790}
1791
1792/*-- BACKGROUNDS --*/
1793function _resizeBackgroundImage($imw, $imh, $cw, $ch, $resize=0, $repx, $repy, $pba=array(), $size=array()) { // mPDF 5.6.10
1794 // pba is background positioning area (from CSS background-origin) may not always be set [x,y,w,h]
1795 // size is from CSS3 background-size - takes precendence over old resize
1796 // $w - absolute length or % or auto or cover | contain
1797 // $h - absolute length or % or auto or cover | contain
1798 // mPDF 5.6.10
1799 if (isset($pba['w'])) $cw = $pba['w'];
1800 if (isset($pba['h'])) $ch = $pba['h'];
1801
1802 $cw = $cw*_MPDFK;
1803 $ch = $ch*_MPDFK;
1804 if (empty($size) && !$resize) { return array($imw, $imh, $repx, $repy); }
1805
1806 // mPDF 5.6.10
1807 if (isset($size['w']) && $size['w']) {
1808 if ($size['w']=='contain') {
1809 // 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.
1810 // Same as resize==3
1811 $h = $imh * $cw/$imw;
1812 $w = $cw;
1813 if ($h > $ch) {
1814 $w = $w * $ch/$h;
1815 $h = $ch;
1816 }
1817 }
1818 else if ($size['w']=='cover') {
1819 // 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.
1820 $h = $imh * $cw/$imw;
1821 $w = $cw;
1822 if ($h < $ch) {
1823 $w = $w * $h/$ch;
1824 $h = $ch;
1825 }
1826 }
1827 else {
1828 if (stristr($size['w'] ,'%')) {
1829 $size['w'] += 0;
1830 $size['w'] /= 100;
1831 $size['w'] = ($cw * $size['w']);
1832 }
1833 if (stristr($size['h'] ,'%')) {
1834 $size['h'] += 0;
1835 $size['h'] /= 100;
1836 $size['h'] = ($ch * $size['h']);
1837 }
1838 if ($size['w']=='auto' && $size['h']=='auto') {
1839 $w = $imw;
1840 $h = $imh;
1841 }
1842 else if ($size['w']=='auto' && $size['h']!='auto') {
1843 $w = $imw * $size['h']/$imh;
1844 $h = $size['h'];
1845 }
1846 else if ($size['w']!='auto' && $size['h']=='auto') {
1847 $h = $imh * $size['w']/$imw;
1848 $w = $size['w'];
1849 }
1850 else {
1851 $w = $size['w'];
1852 $h = $size['h'];
1853 }
1854 }
1855 return array($w, $h, $repx, $repy);
1856 }
1857 else if ($resize==1 && $imw > $cw) {
1858 $h = $imh * $cw/$imw;
1859 return array($cw, $h, $repx, $repy);
1860 }
1861 else if ($resize==2 && $imh > $ch) {
1862 $w = $imw * $ch/$imh;
1863 return array($w, $ch, $repx, $repy);
1864 }
1865 else if ($resize==3) {
1866 $w = $imw;
1867 $h = $imh;
1868 if ($w > $cw) {
1869 $h = $h * $cw/$w;
1870 $w = $cw;
1871 }
1872 if ($h > $ch) {
1873 $w = $w * $ch/$h;
1874 $h = $ch;
1875 }
1876 return array($w, $h, $repx, $repy);
1877 }
1878 else if ($resize==4) {
1879 $h = $imh * $cw/$imw;
1880 return array($cw, $h, $repx, $repy);
1881 }
1882 else if ($resize==5) {
1883 $w = $imw * $ch/$imh;
1884 return array($w, $ch, $repx, $repy);
1885 }
1886 else if ($resize==6) {
1887 return array($cw, $ch, $repx, $repy);
1888 }
1889 return array($imw, $imh, $repx, $repy);
1890}
1891
1892
1893function SetBackground(&$properties, &$maxwidth) {
1894 // mPDF 5.6.10 5.6.11
1895 if (isset($properties['BACKGROUND-ORIGIN']) && ($properties['BACKGROUND-ORIGIN']=='border-box' || $properties['BACKGROUND-ORIGIN']== 'content-box')) { $origin = $properties['BACKGROUND-ORIGIN']; }
1896 else { $origin = 'padding-box'; }
1897 // mPDF 5.6.10
1898 if (isset($properties['BACKGROUND-SIZE'])) {
1899 if (stristr($properties['BACKGROUND-SIZE'] ,'contain') ) { $bsw = $bsh = 'contain'; }
1900 else if (stristr($properties['BACKGROUND-SIZE'] ,'cover') ) { $bsw = $bsh = 'cover'; }
1901 else {
1902 $bsw = $bsh = 'auto';
1903 $sz = preg_split('/\s+/',trim($properties['BACKGROUND-SIZE']));
1904 if (count($sz)==2) { $bsw = $sz[0]; $bsh = $sz[1]; }
1905 else { $bsw = $sz[0]; }
1906 if (!stristr($bsw ,'%') && !stristr($bsw ,'auto') ) { $bsw = $this->ConvertSize($bsw ,$maxwidth,$this->FontSize); }
1907 if (!stristr($bsh ,'%') && !stristr($bsh ,'auto') ) { $bsh = $this->ConvertSize($bsh ,$maxwidth,$this->FontSize); }
1908 }
1909 $size = array('w'=>$bsw, 'h'=>$bsh);
1910 }
1911 if (preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/',$properties['BACKGROUND-IMAGE'])) {
1912 return array('gradient'=>$properties['BACKGROUND-IMAGE'], 'origin'=>$origin, 'size'=>$size ); // mPDF 5.6.10
1913 }
1914 else {
1915 $file = $properties['BACKGROUND-IMAGE'];
1916 $sizesarray = $this->Image($file,0,0,0,0,'','',false, false, false, false, true);
1917 if (isset($sizesarray['IMAGE_ID'])) {
1918 $image_id = $sizesarray['IMAGE_ID'];
1919 $orig_w = $sizesarray['WIDTH']*_MPDFK; // in user units i.e. mm
1920 $orig_h = $sizesarray['HEIGHT']*_MPDFK; // (using $this->img_dpi)
1921 if (isset($properties['BACKGROUND-IMAGE-RESOLUTION'])) {
1922 if (preg_match('/from-image/i', $properties['BACKGROUND-IMAGE-RESOLUTION']) && isset($sizesarray['set-dpi']) && $sizesarray['set-dpi']>0) {
1923 $orig_w *= $this->img_dpi / $sizesarray['set-dpi'];
1924 $orig_h *= $this->img_dpi / $sizesarray['set-dpi'];
1925 }
1926 else if (preg_match('/(\d+)dpi/i', $properties['BACKGROUND-IMAGE-RESOLUTION'], $m)) {
1927 $dpi = $m[1];
1928 if ($dpi > 0) {
1929 $orig_w *= $this->img_dpi / $dpi;
1930 $orig_h *= $this->img_dpi / $dpi;
1931 }
1932 }
1933 }
1934 $x_repeat = true;
1935 $y_repeat = true;
1936 if (isset($properties['BACKGROUND-REPEAT'])) {
1937 if ($properties['BACKGROUND-REPEAT']=='no-repeat' || $properties['BACKGROUND-REPEAT']=='repeat-x') { $y_repeat = false; }
1938 if ($properties['BACKGROUND-REPEAT']=='no-repeat' || $properties['BACKGROUND-REPEAT']=='repeat-y') { $x_repeat = false; }
1939 }
1940 $x_pos = 0;
1941 $y_pos = 0;
1942 if (isset($properties['BACKGROUND-POSITION'])) {
1943 $ppos = preg_split('/\s+/',$properties['BACKGROUND-POSITION']);
1944 $x_pos = $ppos[0];
1945 $y_pos = $ppos[1];
1946 if (!stristr($x_pos ,'%') ) { $x_pos = $this->ConvertSize($x_pos ,$maxwidth,$this->FontSize); }
1947 if (!stristr($y_pos ,'%') ) { $y_pos = $this->ConvertSize($y_pos ,$maxwidth,$this->FontSize); }
1948 }
1949 if (isset($properties['BACKGROUND-IMAGE-RESIZE'])) { $resize = $properties['BACKGROUND-IMAGE-RESIZE']; }
1950 else { $resize = 0; }
1951 if (isset($properties['BACKGROUND-IMAGE-OPACITY'])) { $opacity = $properties['BACKGROUND-IMAGE-OPACITY']; }
1952 else { $opacity = 1; }
1953 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 );
1954 }
1955 }
1956 return false;
1957}
1958/*-- END BACKGROUNDS --*/
1959
1960function PrintBodyBackgrounds() {
1961 $s = '';
1962 $clx = 0;
1963 $cly = 0;
1964 $clw = $this->w;
1965 $clh = $this->h;
1966 // If using bleed and trim margins in paged media
1967 if ($this->pageDim[$this->page]['outer_width_LR'] || $this->pageDim[$this->page]['outer_width_TB']) {
1968 $clx = $this->pageDim[$this->page]['outer_width_LR'] - $this->pageDim[$this->page]['bleedMargin'];
1969 $cly = $this->pageDim[$this->page]['outer_width_TB'] - $this->pageDim[$this->page]['bleedMargin'];
1970 $clw = $this->w - 2*$clx;
1971 $clh = $this->h - 2*$cly;
1972 }
1973
1974 if ($this->bodyBackgroundColor) {
1975 $s .= 'q ' .$this->SetFColor($this->bodyBackgroundColor, true)."\n";
1976 if ($this->bodyBackgroundColor{0}==5) { // RGBa
1977 $s .= $this->SetAlpha(ord($this->bodyBackgroundColor{4})/100, 'Normal', true, 'F')."\n";
1978 }
1979 else if ($this->bodyBackgroundColor{0}==6) { // CMYKa
1980 $s .= $this->SetAlpha(ord($this->bodyBackgroundColor{5})/100, 'Normal', true, 'F')."\n";
1981 }
1982 $s .= sprintf('%.3F %.3F %.3F %.3F re f Q', ($clx*_MPDFK), ($cly*_MPDFK),$clw*_MPDFK,$clh*_MPDFK)."\n";
1983 }
1984
1985/*-- BACKGROUNDS --*/
1986 if ($this->bodyBackgroundGradient) {
1987 $g = $this->grad->parseBackgroundGradient($this->bodyBackgroundGradient);
1988 if ($g) {
1989 $s .= $this->grad->Gradient($clx, $cly, $clw, $clh, (isset($g['gradtype']) ? $g['gradtype'] : null), $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true);
1990 }
1991 }
1992 if ($this->bodyBackgroundImage) {
1993 if ( $this->bodyBackgroundImage['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $this->bodyBackgroundImage['gradient'])) {
1994 $g = $this->grad->parseMozGradient( $this->bodyBackgroundImage['gradient']);
1995 if ($g) {
1996 $s .= $this->grad->Gradient($clx, $cly, $clw, $clh, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true);
1997 }
1998 }
1999 else if ($this->bodyBackgroundImage['image_id']) { // Background pattern
2000 $n = count($this->patterns)+1;
2001 // If using resize, uses TrimBox (not including the bleed)
2002 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']);
2003
2004 $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']);
2005 if (($this->bodyBackgroundImage['opacity']>0 || $this->bodyBackgroundImage['opacity']==='0') && $this->bodyBackgroundImage['opacity']<1) { $opac = $this->SetAlpha($this->bodyBackgroundImage['opacity'],'Normal',true); }
2006 else { $opac = ''; }
2007 $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";
2008 }
2009 }
2010/*-- END BACKGROUNDS --*/
2011 return $s;
2012}
2013
2014
2015function PrintPageBackgrounds($adjustmenty=0) {
2016 $s = '';
2017
2018 ksort($this->pageBackgrounds);
2019 foreach($this->pageBackgrounds AS $bl=>$pbs) {
2020 foreach ($pbs AS $pb) {
2021 if ((!isset($pb['image_id']) && !isset($pb['gradient'])) || isset($pb['shadowonly'])) { // Background colour or boxshadow
2022 // mPDF 5.6.01 - LAYERS
2023 if($pb['z-index']>0) {
2024 $this->current_layer = $pb['z-index'];
2025 $s .= "\n".'/OCBZ-index /ZI'.$pb['z-index'].' BDC'."\n";
2026 }
2027
2028 if($pb['visibility']!='visible') {
2029 if($pb['visibility']=='printonly')
2030 $s .= '/OC /OC1 BDC'."\n";
2031 else if($pb['visibility']=='screenonly')
2032 $s .= '/OC /OC2 BDC'."\n";
2033 else if($pb['visibility']=='hidden')
2034 $s .= '/OC /OC3 BDC'."\n";
2035 }
2036 // Box shadow
2037 if (isset($pb['shadow']) && $pb['shadow']) { $s .= $pb['shadow']."\n"; }
2038 if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
2039 $s .= 'q '.$this->SetFColor($pb['col'], true)."\n";
2040 if ($pb['col']{0}==5) { // RGBa
2041 $s .= $this->SetAlpha(ord($pb['col']{4})/100, 'Normal', true, 'F')."\n";
2042 }
2043 else if ($pb['col']{0}==6) { // CMYKa
2044 $s .= $this->SetAlpha(ord($pb['col']{5})/100, 'Normal', true, 'F')."\n";
2045 }
2046 $s .= sprintf('%.3F %.3F %.3F %.3F re f Q',$pb['x']*_MPDFK,($this->h-$pb['y'])*_MPDFK,$pb['w']*_MPDFK,-$pb['h']*_MPDFK)."\n";
2047 if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
2048 if($pb['visibility']!='visible')
2049 $s .= 'EMC'."\n";
2050
2051 // mPDF 5.6.01 - LAYERS
2052 if($pb['z-index']>0) {
2053 $s .= "\n".'EMCBZ-index'."\n";
2054 $this->current_layer = 0;
2055 }
2056 }
2057 }
2058/*-- BACKGROUNDS --*/
2059 foreach ($pbs AS $pb) {
2060 // mPDF 5.6.01 - LAYERS
2061 if ((isset($pb['gradient']) && $pb['gradient']) || (isset($pb['image_id']) && $pb['image_id'])) {
2062 if($pb['z-index']>0) {
2063 $this->current_layer = $pb['z-index'];
2064 $s .= "\n".'/OCGZ-index /ZI'.$pb['z-index'].' BDC'."\n";
2065 }
2066 if($pb['visibility']!='visible') {
2067 if($pb['visibility']=='printonly')
2068 $s .= '/OC /OC1 BDC'."\n";
2069 else if($pb['visibility']=='screenonly')
2070 $s .= '/OC /OC2 BDC'."\n";
2071 else if($pb['visibility']=='hidden')
2072 $s .= '/OC /OC3 BDC'."\n";
2073 }
2074 }
2075 if (isset($pb['gradient']) && $pb['gradient']) {
2076 if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
2077 $s .= $this->grad->Gradient($pb['x'], $pb['y'], $pb['w'], $pb['h'], $pb['gradtype'], $pb['stops'], $pb['colorspace'], $pb['coords'], $pb['extend'], true);
2078 if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
2079 }
2080 else if (isset($pb['image_id']) && $pb['image_id']) { // Background Image
2081 $pb['y'] -= $adjustmenty;
2082 $pb['h'] += $adjustmenty;
2083 $n = count($this->patterns)+1;
2084 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
2085 $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
2086 $x = $pb['x']*_MPDFK;
2087 $y = ($this->h - $pb['y'])*_MPDFK;
2088 $w = $pb['w']*_MPDFK;
2089 $h = -$pb['h']*_MPDFK;
2090 if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
2091 if ($this->writingHTMLfooter || $this->writingHTMLheader) { // Write each (tiles) image rather than use as a pattern
2092 $iw = $pb['orig_w']/_MPDFK;
2093 $ih = $pb['orig_h']/_MPDFK;
2094
2095 $w = $pb['w'];
2096 $h = $pb['h'];
2097 $x0 = $pb['x'];
2098 $y0 = $pb['y'];
2099
2100 // mPDF 5.6.11
2101 if (isset($pb['bpa']) && $pb['bpa']) {
2102 $w = $pb['bpa']['w'];
2103 $h = $pb['bpa']['h'];
2104 $x0 = $pb['bpa']['x'];
2105 $y0 = $pb['bpa']['y'];
2106 }
2107
2108 // mPDF 5.6.11
2109 if (isset($pb['size']['w']) && $pb['size']['w']) {
2110 $size = $pb['size'];
2111
2112 if ($size['w']=='contain') {
2113 // 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.
2114 // Same as resize==3
2115 $ih = $ih * $pb['bpa']['w']/$iw;
2116 $iw = $pb['bpa']['w'];
2117 if ($ih > $pb['bpa']['h']) {
2118 $iw = $iw * $pb['bpa']['h']/$ih;
2119 $ih = $pb['bpa']['h'];
2120 }
2121 }
2122 else if ($size['w']=='cover') {
2123 // 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.
2124 $ih = $ih * $pb['bpa']['w']/$iw;
2125 $iw = $pb['bpa']['w'];
2126 if ($ih < $pb['bpa']['h']) {
2127 $iw = $iw * $ih/$pb['bpa']['h'];
2128 $ih = $pb['bpa']['h'];
2129 }
2130 }
2131 else {
2132 if (stristr($size['w'] ,'%')) {
2133 $size['w'] += 0;
2134 $size['w'] /= 100;
2135 $size['w'] = ($pb['bpa']['w'] * $size['w']);
2136 }
2137 if (stristr($size['h'] ,'%')) {
2138 $size['h'] += 0;
2139 $size['h'] /= 100;
2140 $size['h'] = ($pb['bpa']['h'] * $size['h']);
2141 }
2142 if ($size['w']=='auto' && $size['h']=='auto') {
2143 $iw = $iw;
2144 $ih = $ih;
2145 }
2146 else if ($size['w']=='auto' && $size['h']!='auto') {
2147 $iw = $iw * $size['h']/$ih;
2148 $ih = $size['h'];
2149 }
2150 else if ($size['w']!='auto' && $size['h']=='auto') {
2151 $ih = $ih * $size['w']/$iw;
2152 $iw = $size['w'];
2153 }
2154 else {
2155 $iw = $size['w'];
2156 $ih = $size['h'];
2157 }
2158 }
2159 }
2160
2161 // Number to repeat
2162 if ($pb['x_repeat']) { $nx = ceil($pb['w']/$iw)+1; } // mPDF 5.6.11
2163 else { $nx = 1; }
2164 if ($pb['y_repeat']) { $ny = ceil($pb['h']/$ih)+1; } // mPDF 5.6.11
2165 else { $ny = 1; }
2166
2167 $x_pos = $pb['x_pos'];
2168 if (stristr($x_pos ,'%') ) {
2169 $x_pos += 0;
2170 $x_pos /= 100;
2171 $x_pos = ($pb['bpa']['w'] * $x_pos) - ($iw * $x_pos); // mPDF 5.6.11
2172 }
2173 $y_pos = $pb['y_pos'];
2174 if (stristr($y_pos ,'%') ) {
2175 $y_pos += 0;
2176 $y_pos /= 100;
2177 $y_pos = ($pb['bpa']['h'] * $y_pos) - ($ih * $y_pos); // mPDF 5.6.11
2178 }
2179 if ($nx>1) {
2180 while($x_pos>($pb['x']-$pb['bpa']['x'])) { $x_pos -= $iw; } // mPDF 5.6.11
2181 }
2182 if ($ny>1) {
2183 while($y_pos>($pb['y']-$pb['bpa']['y'])) { $y_pos -= $ih; } // mPDF 5.6.11
2184 }
2185 for($xi=0;$xi<$nx;$xi++) {
2186 for($yi=0;$yi<$ny;$yi++) {
2187 $x = $x0 + $x_pos + ($iw*$xi);
2188 $y = $y0 + $y_pos + ($ih*$yi);
2189 if ($pb['opacity']>0 && $pb['opacity']<1) { $opac = $this->SetAlpha($pb['opacity'],'Normal',true); }
2190 else { $opac = ''; }
2191 $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";
2192 }
2193 }
2194 }
2195 else {
2196 if (($pb['opacity']>0 || $pb['opacity']==='0') && $pb['opacity']<1) { $opac = $this->SetAlpha($pb['opacity'],'Normal',true); }
2197 else { $opac = ''; }
2198 $s .= sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $x, $y, $w, $h) ."\n";
2199 }
2200 if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
2201 }
2202 if ((isset($pb['gradient']) && $pb['gradient']) || (isset($pb['image_id']) && $pb['image_id'])) {
2203 if($pb['visibility']!='visible')
2204 $s .= 'EMC'."\n";
2205
2206 // mPDF 5.6.01 - LAYERS
2207 if($pb['z-index']>0) {
2208 $s .= "\n".'EMCGZ-index'."\n";
2209 $this->current_layer = 0;
2210 }
2211 }
2212
2213 }
2214/*-- END BACKGROUNDS --*/
2215 }
2216 return $s;
2217}
2218
2219function PrintTableBackgrounds($adjustmenty=0) {
2220 $s = '';
2221/*-- BACKGROUNDS --*/
2222 ksort($this->tableBackgrounds);
2223 foreach($this->tableBackgrounds AS $bl=>$pbs) {
2224 foreach ($pbs AS $pb) {
2225 if ((!isset($pb['gradient']) || !$pb['gradient']) && (!isset($pb['image_id']) || !$pb['image_id'])) {
2226 $s .= 'q '.$this->SetFColor($pb['col'], true)."\n";
2227 if ($pb['col']{0}==5) { // RGBa
2228 $s .= $this->SetAlpha(ord($pb['col']{4})/100, 'Normal', true, 'F')."\n";
2229 }
2230 else if ($pb['col']{0}==6) { // CMYKa
2231 $s .= $this->SetAlpha(ord($pb['col']{5})/100, 'Normal', true, 'F')."\n";
2232 }
2233 $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";
2234 }
2235 if (isset($pb['gradient']) && $pb['gradient']) {
2236 if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
2237 $s .= $this->grad->Gradient($pb['x'], $pb['y'], $pb['w'], $pb['h'], $pb['gradtype'], $pb['stops'], $pb['colorspace'], $pb['coords'], $pb['extend'], true);
2238 if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
2239 }
2240 if (isset($pb['image_id']) && $pb['image_id']) { // Background pattern
2241 $pb['y'] -= $adjustmenty;
2242 $pb['h'] += $adjustmenty;
2243 $n = count($this->patterns)+1;
2244 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']);
2245 $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']);
2246 $x = $pb['x']*_MPDFK;
2247 $y = ($this->h - $pb['y'])*_MPDFK;
2248 $w = $pb['w']*_MPDFK;
2249 $h = -$pb['h']*_MPDFK;
2250 if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
2251 if ($pb['opacity']>0 && $pb['opacity']<1) { $opac = $this->SetAlpha($pb['opacity'],'Normal',true); }
2252 else { $opac = ''; }
2253 $s .= sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $x, $y, $w, $h) ."\n";
2254 if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
2255 }
2256 }
2257 }
2258/*-- END BACKGROUNDS --*/
2259 return $s;
2260}
2261
2262// mPDF 5.6.01 - LAYERS
2263function BeginLayer($id) {
2264 if($this->current_layer>0) $this->EndLayer();
2265 if ($id < 1) { return false; }
2266 if (!isset($this->layers[$id])) {
2267 $this->layers[$id] = array('name'=>'Layer '.($id) );
2268 if (($this->PDFA || $this->PDFX)) { $this->PDFAXwarnings[] = "Cannot use layers when using PDFA or PDFX"; return ''; }
2269 else if (!$this->PDFA && !$this->PDFX) { $this->pdf_version='1.5'; }
2270 }
2271 $this->current_layer = $id;
2272 $this->_out('/OCZ-index /ZI'.$id.' BDC');
2273
2274 $this->pageoutput[$this->page] = array();
2275}
2276
2277function EndLayer() {
2278 if($this->current_layer>0) {
2279 $this->_out('EMCZ-index');
2280 $this->current_layer = 0;
2281 }
2282}
2283
2284
2285
2286// Depracated - can use AddPage for all
2287function 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='')
2288{
2289 $this->AddPage($orientation,$condition,$resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue,$pagesel,$newformat);
2290}
2291
2292
2293function AddPageByArray($a) {
2294 if (!is_array($a)) { $a = array(); }
2295 $orientation = (isset($a['orientation']) ? $a['orientation'] : '');
2296 $condition = (isset($a['condition']) ? $a['condition'] : (isset($a['type']) ? $a['type'] : ''));
2297 $resetpagenum = (isset($a['resetpagenum']) ? $a['resetpagenum'] : '');
2298 $pagenumstyle = (isset($a['pagenumstyle']) ? $a['pagenumstyle'] : '');
2299 $suppress = (isset($a['suppress']) ? $a['suppress'] : '');
2300 $mgl = (isset($a['mgl']) ? $a['mgl'] : (isset($a['margin-left']) ? $a['margin-left'] : ''));
2301 $mgr = (isset($a['mgr']) ? $a['mgr'] : (isset($a['margin-right']) ? $a['margin-right'] : ''));
2302 $mgt = (isset($a['mgt']) ? $a['mgt'] : (isset($a['margin-top']) ? $a['margin-top'] : ''));
2303 $mgb = (isset($a['mgb']) ? $a['mgb'] : (isset($a['margin-bottom']) ? $a['margin-bottom'] : ''));
2304 $mgh = (isset($a['mgh']) ? $a['mgh'] : (isset($a['margin-header']) ? $a['margin-header'] : ''));
2305 $mgf = (isset($a['mgf']) ? $a['mgf'] : (isset($a['margin-footer']) ? $a['margin-footer'] : ''));
2306 $ohname = (isset($a['ohname']) ? $a['ohname'] : (isset($a['odd-header-name']) ? $a['odd-header-name'] : ''));
2307 $ehname = (isset($a['ehname']) ? $a['ehname'] : (isset($a['even-header-name']) ? $a['even-header-name'] : ''));
2308 $ofname = (isset($a['ofname']) ? $a['ofname'] : (isset($a['odd-footer-name']) ? $a['odd-footer-name'] : ''));
2309 $efname = (isset($a['efname']) ? $a['efname'] : (isset($a['even-footer-name']) ? $a['even-footer-name'] : ''));
2310 $ohvalue = (isset($a['ohvalue']) ? $a['ohvalue'] : (isset($a['odd-header-value']) ? $a['odd-header-value'] : 0));
2311 $ehvalue = (isset($a['ehvalue']) ? $a['ehvalue'] : (isset($a['even-header-value']) ? $a['even-header-value'] : 0));
2312 $ofvalue = (isset($a['ofvalue']) ? $a['ofvalue'] : (isset($a['odd-footer-value']) ? $a['odd-footer-value'] : 0));
2313 $efvalue = (isset($a['efvalue']) ? $a['efvalue'] : (isset($a['even-footer-value']) ? $a['even-footer-value'] : 0));
2314 $pagesel = (isset($a['pagesel']) ? $a['pagesel'] : (isset($a['pageselector']) ? $a['pageselector'] : ''));
2315 $newformat = (isset($a['newformat']) ? $a['newformat'] : (isset($a['sheet-size']) ? $a['sheet-size'] : ''));
2316
2317 $this->AddPage($orientation,$condition,$resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue,$pagesel,$newformat);
2318
2319}
2320
2321
2322function 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='')
2323{
2324/*-- CSS-FLOAT --*/
2325 // Float DIV
2326 // Cannot do with columns on, or if any change in page orientation/margins etc.
2327 // If next page already exists - i.e background /headers and footers already written
2328 if ($this->state > 0 && $this->page < count($this->pages)) {
2329 $bak_cml = $this->cMarginL;
2330 $bak_cmr = $this->cMarginR;
2331 $bak_dw = $this->divwidth;
2332 // Paint Div Border if necessary
2333 if ($this->blklvl > 0) {
2334 $save_tr = $this->table_rotate; // *TABLES*
2335 $this->table_rotate = 0; // *TABLES*
2336 if ($this->y == $this->blk[$this->blklvl]['y0']) { $this->blk[$this->blklvl]['startpage']++; }
2337 if (($this->y > $this->blk[$this->blklvl]['y0']) || $this->flowingBlockAttr['is_table'] ) { $toplvl = $this->blklvl; }
2338 else { $toplvl = $this->blklvl-1; }
2339 $sy = $this->y;
2340 for ($bl=1;$bl<=$toplvl;$bl++) {
2341 $this->PaintDivBB('pagebottom',0,$bl);
2342 }
2343 $this->y = $sy;
2344 $this->table_rotate = $save_tr; // *TABLES*
2345 }
2346 $s = $this->PrintPageBackgrounds();
2347
2348 // Writes after the marker so not overwritten later by page background etc.
2349 $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
2350 $this->pageBackgrounds = array();
2351 $family=$this->FontFamily;
2352 $style=$this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
2353 $size=$this->FontSizePt;
2354 $lw=$this->LineWidth;
2355 $dc=$this->DrawColor;
2356 $fc=$this->FillColor;
2357 $tc=$this->TextColor;
2358 $cf=$this->ColorFlag;
2359
2360 $this->printfloatbuffer();
2361
2362 //Move to next page
2363 $this->page++;
2364 $this->ResetMargins();
2365 $this->SetAutoPageBreak($this->autoPageBreak,$this->bMargin);
2366 $this->x=$this->lMargin;
2367 $this->y=$this->tMargin;
2368 $this->FontFamily='';
2369 $this->_out('2 J');
2370 $this->LineWidth=$lw;
2371 $this->_out(sprintf('%.3F w',$lw*_MPDFK));
2372 if($family) $this->SetFont($family,$style,$size,true,true);
2373 $this->DrawColor=$dc;
2374 if($dc!=$this->defDrawColor) $this->_out($dc);
2375 $this->FillColor=$fc;
2376 if($fc!=$this->defFillColor) $this->_out($fc);
2377 $this->TextColor=$tc;
2378 $this->ColorFlag=$cf;
2379 for($bl=1;$bl<=$this->blklvl;$bl++) {
2380 $this->blk[$bl]['y0'] = $this->y;
2381 // Don't correct more than once for background DIV containing a Float
2382 if (!isset($this->blk[$bl]['marginCorrected'][$this->page])) { $this->blk[$bl]['x0'] += $this->MarginCorrection; }
2383 $this->blk[$bl]['marginCorrected'][$this->page] = true;
2384 }
2385 $this->cMarginL = $bak_cml;
2386 $this->cMarginR = $bak_cmr;
2387 $this->divwidth = $bak_dw;
2388 return '';
2389 }
2390/*-- END CSS-FLOAT --*/
2391
2392 //Start a new page
2393 if($this->state==0) $this->Open();
2394
2395 $bak_cml = $this->cMarginL;
2396 $bak_cmr = $this->cMarginR;
2397 $bak_dw = $this->divwidth;
2398
2399
2400 $bak_lh = $this->lineheight;
2401
2402 $orientation = substr(strtoupper($orientation),0,1);
2403 $condition = strtoupper($condition);
2404
2405
2406 if ($condition == 'NEXT-EVEN') { // always adds at least one new page to create an Even page
2407 if (!$this->mirrorMargins) { $condition = ''; }
2408 else {
2409 if ($pagesel) { $pbch = $pagesel; $pagesel = ''; } // *CSS-PAGE*
2410 else { $pbch = false; } // *CSS-PAGE*
2411 $this->AddPage($this->CurOrientation,'O');
2412 if ($pbch ) { $pagesel = $pbch; } // *CSS-PAGE*
2413 $condition = '';
2414 }
2415 }
2416 if ($condition == 'NEXT-ODD') { // always adds at least one new page to create an Odd page
2417 if (!$this->mirrorMargins) { $condition = ''; }
2418 else {
2419 if ($pagesel) { $pbch = $pagesel; $pagesel = ''; } // *CSS-PAGE*
2420 else { $pbch = false; } // *CSS-PAGE*
2421 $this->AddPage($this->CurOrientation,'E');
2422 if ($pbch ) { $pagesel = $pbch; } // *CSS-PAGE*
2423 $condition = '';
2424 }
2425 }
2426
2427
2428 if ($condition == 'E') { // only adds new page if needed to create an Even page
2429 if (!$this->mirrorMargins || ($this->page)%2==0) { return false; }
2430 }
2431 if ($condition == 'O') { // only adds new page if needed to create an Odd page
2432 if (!$this->mirrorMargins || ($this->page)%2==1) { return false; }
2433 }
2434
2435 if ($resetpagenum || $pagenumstyle || $suppress) {
2436 $this->PageNumSubstitutions[] = array('from'=>($this->page+1), 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=>$suppress);
2437 }
2438
2439
2440 $save_tr = $this->table_rotate; // *TABLES*
2441 $this->table_rotate = 0; // *TABLES*
2442 $save_kwt = $this->kwt;
2443 $this->kwt = 0;
2444 // mPDF 5.6.01 - LAYERS
2445 $save_layer = $this->current_layer;
2446 $save_vis = $this->visibility;
2447
2448 if($this->visibility!='visible')
2449 $this->SetVisibility('visible');
2450 // mPDF 5.6.01 - LAYERS
2451 $this->EndLayer();
2452
2453 // Paint Div Border if necessary
2454 //PAINTS BACKGROUND COLOUR OR BORDERS for DIV - DISABLED FOR COLUMNS (cf. AcceptPageBreak) AT PRESENT in ->PaintDivBB
2455 if (!$this->ColActive && $this->blklvl > 0) {
2456 if (isset($this->blk[$this->blklvl]['y0']) && $this->y == $this->blk[$this->blklvl]['y0']) {
2457 if (isset($this->blk[$this->blklvl]['startpage'])) { $this->blk[$this->blklvl]['startpage']++; }
2458 else { $this->blk[$this->blklvl]['startpage'] = 1; }
2459 }
2460 if ((isset($this->blk[$this->blklvl]['y0']) && $this->y > $this->blk[$this->blklvl]['y0']) || $this->flowingBlockAttr['is_table'] ) { $toplvl = $this->blklvl; }
2461 else { $toplvl = $this->blklvl-1; }
2462 $sy = $this->y;
2463 for ($bl=1;$bl<=$toplvl;$bl++) {
2464
2465 // mPDF 5.6.01 - LAYERS
2466 if ($this->blk[$bl]['z-index']>0) {
2467 $this->BeginLayer($this->blk[$bl]['z-index']);
2468 }
2469 if (isset($this->blk[$bl]['visibility']) && $this->blk[$bl]['visibility'] && $this->blk[$bl]['visibility']!='visible') {
2470 $this->SetVisibility($this->blk[$bl]['visibility']);
2471 }
2472
2473 $this->PaintDivBB('pagebottom',0,$bl);
2474 }
2475 $this->y = $sy;
2476 // RESET block y0 and x0 - see below
2477 }
2478
2479 if($this->visibility!='visible')
2480 $this->SetVisibility('visible');
2481 // mPDF 5.6.01 - LAYERS
2482 $this->EndLayer();
2483
2484 // BODY Backgrounds
2485 if ($this->page > 0) {
2486 $s = '';
2487 $s .= $this->PrintBodyBackgrounds();
2488
2489 $s .= $this->PrintPageBackgrounds();
2490 $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', "\n".$s."\n".'\\1', $this->pages[$this->page]);
2491 $this->pageBackgrounds = array();
2492 }
2493
2494 $save_kt = $this->keep_block_together;
2495 $this->keep_block_together = 0;
2496
2497 $save_cols = false;
2498/*-- COLUMNS --*/
2499 if ($this->ColActive) {
2500 $save_cols = true;
2501 $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off
2502 $this->SetColumns(0);
2503 }
2504/*-- END COLUMNS --*/
2505
2506
2507 $family=$this->FontFamily;
2508 $style=$this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
2509 $size=$this->FontSizePt;
2510 $this->ColumnAdjust = true; // enables column height adjustment for the page
2511 $lw=$this->LineWidth;
2512 $dc=$this->DrawColor;
2513 $fc=$this->FillColor;
2514 $tc=$this->TextColor;
2515 $cf=$this->ColorFlag;
2516 if($this->page>0)
2517 {
2518 //Page footer
2519 $this->InFooter=true;
2520
2521 $this->Reset();
2522 $this->pageoutput[$this->page] = array();
2523
2524 $this->Footer();
2525 //Close page
2526 $this->_endpage();
2527 }
2528
2529
2530 //Start new page
2531 $this->_beginpage($orientation,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat);
2532 if ($this->docTemplate) {
2533 $pagecount = $this->SetSourceFile($this->docTemplate);
2534 if (($this->page - $this->docTemplateStart) > $pagecount) {
2535 if ($this->docTemplateContinue) {
2536 $tplIdx = $this->ImportPage($pagecount);
2537 $this->UseTemplate($tplIdx);
2538 }
2539 }
2540 else {
2541 $tplIdx = $this->ImportPage(($this->page - $this->docTemplateStart));
2542 $this->UseTemplate($tplIdx);
2543 }
2544 }
2545 if ($this->pageTemplate) {
2546 $this->UseTemplate($this->pageTemplate);
2547 }
2548
2549 // Tiling Patterns
2550 $this->_out('___PAGE___START'.$this->uniqstr);
2551 $this->_out('___BACKGROUND___PATTERNS'.$this->uniqstr);
2552 $this->_out('___HEADER___MARKER'.$this->uniqstr);
2553 $this->pageBackgrounds = array();
2554
2555 //Set line cap style to square
2556 $this->SetLineCap(2);
2557 //Set line width
2558 $this->LineWidth=$lw;
2559 $this->_out(sprintf('%.3F w',$lw*_MPDFK));
2560 //Set font
2561 if($family) $this->SetFont($family,$style,$size,true,true); // forces write
2562 //Set colors
2563 $this->DrawColor=$dc;
2564 if($dc!=$this->defDrawColor) $this->_out($dc);
2565 $this->FillColor=$fc;
2566 if($fc!=$this->defFillColor) $this->_out($fc);
2567 $this->TextColor=$tc;
2568 $this->ColorFlag=$cf;
2569
2570 //Page header
2571 $this->Header();
2572
2573 //Restore line width
2574 if($this->LineWidth!=$lw)
2575 {
2576 $this->LineWidth=$lw;
2577 $this->_out(sprintf('%.3F w',$lw*_MPDFK));
2578 }
2579 //Restore font
2580 if($family) $this->SetFont($family,$style,$size,true,true); // forces write
2581 //Restore colors
2582 if($this->DrawColor!=$dc)
2583 {
2584 $this->DrawColor=$dc;
2585 $this->_out($dc);
2586 }
2587 if($this->FillColor!=$fc)
2588 {
2589 $this->FillColor=$fc;
2590 $this->_out($fc);
2591 }
2592 $this->TextColor=$tc;
2593 $this->ColorFlag=$cf;
2594 $this->InFooter=false;
2595
2596 // mPDF 5.6.01 - LAYERS
2597 if ($save_layer>0)
2598 $this->BeginLayer($save_layer);
2599
2600 if($save_vis!='visible')
2601 $this->SetVisibility($save_vis);
2602
2603/*-- COLUMNS --*/
2604 if ($save_cols) {
2605 // Restore columns
2606 $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
2607 }
2608 if ($this->ColActive) { $this->SetCol(0); }
2609/*-- END COLUMNS --*/
2610
2611
2612 //RESET BLOCK BORDER TOP
2613 if (!$this->ColActive) {
2614 for($bl=1;$bl<=$this->blklvl;$bl++) {
2615 $this->blk[$bl]['y0'] = $this->y;
2616 if (isset($this->blk[$bl]['x0'])) { $this->blk[$bl]['x0'] += $this->MarginCorrection; }
2617 else { $this->blk[$bl]['x0'] = $this->MarginCorrection; }
2618 // Added mPDF 3.0 Float DIV
2619 $this->blk[$bl]['marginCorrected'][$this->page] = true;
2620 }
2621 }
2622
2623
2624 $this->table_rotate = $save_tr; // *TABLES*
2625 $this->kwt = $save_kwt;
2626
2627 $this->keep_block_together = $save_kt ;
2628
2629 $this->cMarginL = $bak_cml;
2630 $this->cMarginR = $bak_cmr;
2631 $this->divwidth = $bak_dw;
2632
2633 $this->lineheight = $bak_lh;
2634}
2635
2636
2637function PageNo() {
2638 //Get current page number
2639 return $this->page;
2640}
2641
2642function AddSpotColorsFromFile($file) {
2643 $colors = @file($file) or die("Cannot load spot colors file - ".$file);
2644 foreach($colors AS $sc) {
2645 list($name, $c, $m, $y, $k) = preg_split("/\t/",$sc);
2646 $c = intval($c);
2647 $m = intval($m);
2648 $y = intval($y);
2649 $k = intval($k);
2650 $this->AddSpotColor($name, $c, $m, $y, $k);
2651 }
2652}
2653
2654function AddSpotColor($name, $c, $m, $y, $k) {
2655 $name = strtoupper(trim($name));
2656 if(!isset($this->spotColors[$name])) {
2657 $i=count($this->spotColors)+1;
2658 $this->spotColors[$name]=array('i'=>$i,'c'=>$c,'m'=>$m,'y'=>$y,'k'=>$k);
2659 $this->spotColorIDs[$i]=$name;
2660 }
2661}
2662
2663function SetColor($col, $type='') {
2664 $out = '';
2665 if ($col{0}==3 || $col{0}==5) { // RGB / RGBa
2666 $out = sprintf('%.3F %.3F %.3F rg',ord($col{1})/255,ord($col{2})/255,ord($col{3})/255);
2667 }
2668 else if ($col{0}==1) { // GRAYSCALE
2669 $out = sprintf('%.3F g',ord($col{1})/255);
2670 }
2671 else if ($col{0}==2) { // SPOT COLOR
2672 $out = sprintf('/CS%d cs %.3F scn',ord($col{1}),ord($col{2})/100);
2673 }
2674 else if ($col{0}==4 || $col{0}==6) { // CMYK / CMYKa
2675 $out = sprintf('%.3F %.3F %.3F %.3F k', ord($col{1})/100, ord($col{2})/100, ord($col{3})/100, ord($col{4})/100);
2676 }
2677 if ($type=='Draw') { $out = strtoupper($out); } // e.g. rg => RG
2678 else if ($type=='CodeOnly') { $out = preg_replace('/\s(rg|g|k)/','',$out); }
2679 return $out;
2680}
2681
2682
2683function SetDColor($col, $return=false) {
2684 $out = $this->SetColor($col, 'Draw');
2685 if ($return) { return $out; }
2686 if ($out=='') { return ''; }
2687 $this->DrawColor = $out;
2688 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); }
2689 $this->pageoutput[$this->page]['DrawColor'] = $this->DrawColor;
2690}
2691
2692function SetFColor($col, $return=false) {
2693 $out = $this->SetColor($col, 'Fill');
2694 if ($return) { return $out; }
2695 if ($out=='') { return ''; }
2696 $this->FillColor = $out;
2697 $this->ColorFlag = ($out != $this->TextColor);
2698 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); }
2699 $this->pageoutput[$this->page]['FillColor'] = $this->FillColor;
2700}
2701
2702function SetTColor($col, $return=false) {
2703 $out = $this->SetColor($col, 'Text');
2704 if ($return) { return $out; }
2705 if ($out=='') { return ''; }
2706 $this->TextColor = $out;
2707 $this->ColorFlag = ($this->FillColor != $out);
2708}
2709
2710
2711function SetDrawColor($r,$g=-1,$b=-1,$col4=-1, $return=false) {
2712 //Set color for all stroking operations
2713 $col = array();
2714 if(($r==0 and $g==0 and $b==0 && $col4 == -1) or $g==-1) { $col = $this->ConvertColor($r); }
2715 else if ($col4 == -1) { $col = $this->ConvertColor('rgb('.$r.','.$g.','.$b.')'); }
2716 else { $col = $this->ConvertColor('cmyk('.$r.','.$g.','.$b.','.$col4.')'); }
2717 $out = $this->SetDColor($col, $return);
2718 return $out;
2719}
2720
2721function SetFillColor($r,$g=-1,$b=-1,$col4=-1, $return=false) {
2722 //Set color for all filling operations
2723 $col = array();
2724 if(($r==0 and $g==0 and $b==0 && $col4 == -1) or $g==-1) { $col = $this->ConvertColor($r); }
2725 else if ($col4 == -1) { $col = $this->ConvertColor('rgb('.$r.','.$g.','.$b.')'); }
2726 else { $col = $this->ConvertColor('cmyk('.$r.','.$g.','.$b.','.$col4.')'); }
2727 $out = $this->SetFColor($col, $return);
2728 return $out;
2729}
2730
2731function SetTextColor($r,$g=-1,$b=-1,$col4=-1, $return=false) {
2732 //Set color for text
2733 $col = array();
2734 if(($r==0 and $g==0 and $b==0 && $col4 == -1) or $g==-1) { $col = $this->ConvertColor($r); }
2735 else if ($col4 == -1) { $col = $this->ConvertColor('rgb('.$r.','.$g.','.$b.')'); }
2736 else { $col = $this->ConvertColor('cmyk('.$r.','.$g.','.$b.','.$col4.')'); }
2737 $out = $this->SetTColor($col, $return);
2738 return $out;
2739}
2740
2741function _getCharWidth(&$cw, $u, $isdef=true) {
2742 if ($u==0) { $w = false; }
2743 else { $w = (ord($cw[$u*2]) << 8) + ord($cw[$u*2+1]); }
2744 if ($w == 65535) { return 0; }
2745 else if ($w) { return $w; }
2746 else if ($isdef) { return false; }
2747 else { return 0; }
2748}
2749
2750function _charDefined(&$cw, $u) {
2751 if ($u==0) { return false; }
2752 $w = (ord($cw[$u*2]) << 8) + ord($cw[$u*2+1]);
2753 if ($w) { return true; }
2754 else { return false; }
2755}
2756
2757function GetCharWidthCore($c) {
2758 //Get width of a single character in the current Core font
2759 $c = (string)$c;
2760 $w = 0;
2761 // Soft Hyphens chr(173)
2762 if ($c == chr(173) && $this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
2763 return 0;
2764 }
2765 else if ($this->S && isset($this->upperCase[ord($c)])) {
2766 $charw = $this->CurrentFont['cw'][chr($this->upperCase[ord($c)])];
2767 if ($charw!==false) {
2768 $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
2769 $w+=$charw;
2770 }
2771 }
2772 else if (isset($this->CurrentFont['cw'][$c])) {
2773 $w += $this->CurrentFont['cw'][$c];
2774 }
2775 else if (isset($this->CurrentFont['cw'][ord($c)])) {
2776 $w += $this->CurrentFont['cw'][ord($c)];
2777 }
2778 $w *= ($this->FontSize/ 1000);
2779 if ($this->minwSpacing || $this->fixedlSpacing) {
2780 if ($c==' ') $nb_spaces = 1;
2781 else $nb_spaces = 0;
2782 $w += $this->fixedlSpacing + ($nb_spaces * $this->minwSpacing);
2783 }
2784 return ($w);
2785}
2786
2787function GetCharWidthNonCore($c, $addSubset=true) {
2788 //Get width of a single character in the current Non-Core font
2789 $c = (string)$c;
2790 $w = 0;
2791 $unicode = $this->UTF8StringToArray($c, $addSubset);
2792 $char = $unicode[0];
2793/*-- CJK-FONTS --*/
2794 if ($this->CurrentFont['type'] == 'Type0') { // CJK Adobe fonts
2795 if ($char == 173) { return 0; } // Soft Hyphens
2796 elseif (isset($this->CurrentFont['cw'][$char])) { $w+=$this->CurrentFont['cw'][$char]; }
2797 elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
2798 else { $w += 500; }
2799 }
2800 else {
2801/*-- END CJK-FONTS --*/
2802 if ($char == 173) { return 0; } // Soft Hyphens
2803 else if ($this->S && isset($this->upperCase[$char])) {
2804 $charw = $this->_getCharWidth($this->CurrentFont['cw'],$this->upperCase[$char]);
2805 if ($charw!==false) {
2806 $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
2807 $w+=$charw;
2808 }
2809 elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
2810 elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
2811 else { $w += 500; }
2812 }
2813 else {
2814 $charw = $this->_getCharWidth($this->CurrentFont['cw'],$char);
2815 if ($charw!==false) { $w+=$charw; }
2816 elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
2817 elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
2818 else { $w += 500; }
2819 }
2820 } // *CJK-FONTS*
2821 $w *= ($this->FontSize/ 1000);
2822 if ($this->minwSpacing || $this->fixedlSpacing) {
2823 if ($c==' ') $nb_spaces = 1;
2824 else $nb_spaces = 0;
2825 $w += $this->fixedlSpacing + ($nb_spaces * $this->minwSpacing);
2826 }
2827 return ($w);
2828}
2829
2830
2831function GetCharWidth($c, $addSubset=true) {
2832 if (!$this->usingCoreFont) {
2833 return $this->GetCharWidthNonCore($c, $addSubset);
2834 }
2835 else {
2836 return $this->GetCharWidthCore($c);
2837 }
2838}
2839
2840function GetStringWidth($s, $addSubset=true) {
2841 //Get width of a string in the current font
2842 $s = (string)$s;
2843 $cw = &$this->CurrentFont['cw'];
2844 $w = 0;
2845 $kerning = 0;
2846 $lastchar = 0;
2847 $nb_carac = 0;
2848 $nb_spaces = 0;
2849 // mPDF ITERATION
2850 if ($this->iterationCounter) $s = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/', '\\1', $s);
2851
2852 if (!$this->usingCoreFont) {
2853 $s = str_replace("\xc2\xad",'',$s );
2854 $unicode = $this->UTF8StringToArray($s, $addSubset);
2855 if ($this->minwSpacing || $this->fixedlSpacing) {
2856 $nb_carac = count($unicode);
2857 $nb_spaces = mb_substr_count($s,' ', $this->mb_enc);
2858 }
2859/*-- CJK-FONTS --*/
2860 if ($this->CurrentFont['type'] == 'Type0') { // CJK Adobe fonts
2861 foreach($unicode as $char) {
2862 if (isset($cw[$char])) { $w+=$cw[$char]; }
2863 elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
2864 else { $w += 500; }
2865 }
2866 }
2867 else {
2868/*-- END CJK-FONTS --*/
2869 foreach($unicode as $char) {
2870 if ($this->S && isset($this->upperCase[$char])) {
2871 $charw = $this->_getCharWidth($cw,$this->upperCase[$char]);
2872 if ($charw!==false) {
2873 $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
2874 $w+=$charw;
2875 }
2876 elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
2877 elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
2878 else { $w += 500; }
2879 }
2880 else {
2881 $charw = $this->_getCharWidth($cw,$char);
2882 if ($charw!==false) { $w+=$charw; }
2883 elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
2884 elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
2885 else { $w += 500; }
2886 if ($this->kerning && $this->useKerning && $lastchar) {
2887 if (isset($this->CurrentFont['kerninfo'][$lastchar][$char])) {
2888 $kerning += $this->CurrentFont['kerninfo'][$lastchar][$char];
2889 }
2890 }
2891 $lastchar = $char;
2892 }
2893 }
2894 } // *CJK-FONTS*
2895
2896 }
2897 else {
2898 if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
2899 $s = str_replace(chr(173),'',$s );
2900 }
2901 $nb_carac = $l = strlen($s);
2902 if ($this->minwSpacing || $this->fixedlSpacing) {
2903 $nb_spaces = substr_count($s,' ');
2904 }
2905 for($i=0; $i<$l; $i++) {
2906 if ($this->S && isset($this->upperCase[ord($s[$i])])) {
2907 $charw = $cw[chr($this->upperCase[ord($s[$i])])];
2908 if ($charw!==false) {
2909 $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
2910 $w+=$charw;
2911 }
2912 }
2913 else if (isset($cw[$s[$i]])) {
2914 $w += $cw[$s[$i]];
2915 }
2916 else if (isset($cw[ord($s[$i])])) {
2917 $w += $cw[ord($s[$i])];
2918 }
2919 if ($this->kerning && $this->useKerning && $i>0) {
2920 if (isset($this->CurrentFont['kerninfo'][$s[($i-1)]][$s[$i]])) {
2921 $kerning += $this->CurrentFont['kerninfo'][$s[($i-1)]][$s[$i]];
2922 }
2923 }
2924 }
2925 }
2926 unset($cw);
2927 if ($this->kerning && $this->useKerning) { $w += $kerning; }
2928 $w *= ($this->FontSize/ 1000);
2929 $w += (($nb_carac + $nb_spaces) * $this->fixedlSpacing) + ($nb_spaces * $this->minwSpacing);
2930 return ($w);
2931}
2932
2933function SetLineWidth($width) {
2934 //Set line width
2935 $this->LineWidth=$width;
2936 $lwout = (sprintf('%.3F w',$width*_MPDFK));
2937 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)) {
2938 $this->_out($lwout);
2939 }
2940 $this->pageoutput[$this->page]['LineWidth'] = $lwout;
2941}
2942
2943function Line($x1,$y1,$x2,$y2) {
2944 //Draw a line
2945 $this->_out(sprintf('%.3F %.3F m %.3F %.3F l S',$x1*_MPDFK,($this->h-$y1)*_MPDFK,$x2*_MPDFK,($this->h-$y2)*_MPDFK));
2946}
2947
2948function Arrow($x1,$y1,$x2,$y2,$headsize=3,$fill='B',$angle=25) {
2949 //F == fill //S == stroke //B == stroke and fill
2950 // angle = splay of arrowhead - 1 - 89 degrees
2951 if($fill=='F') $fill='f';
2952 elseif($fill=='FD' or $fill=='DF' or $fill=='B') $fill='B';
2953 else $fill='S';
2954 $a = atan2(($y2-$y1),($x2-$x1));
2955 $b = $a + deg2rad($angle);
2956 $c = $a - deg2rad($angle);
2957 $x3 = $x2 - ($headsize* cos($b));
2958 $y3 = $this->h-($y2 - ($headsize* sin($b)));
2959 $x4 = $x2 - ($headsize* cos($c));
2960 $y4 = $this->h-($y2 - ($headsize* sin($c)));
2961
2962 $x5 = $x3-($x3-$x4)/2; // mid point of base of arrowhead - to join arrow line to
2963 $y5 = $y3-($y3-$y4)/2;
2964
2965 $s = '';
2966 $s.=sprintf('%.3F %.3F m %.3F %.3F l S',$x1*_MPDFK,($this->h-$y1)*_MPDFK,$x5*_MPDFK,$y5*_MPDFK);
2967 $this->_out($s);
2968
2969 $s = '';
2970 $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);
2971 $s.=$fill;
2972 $this->_out($s);
2973}
2974
2975
2976function Rect($x,$y,$w,$h,$style='') {
2977 //Draw a rectangle
2978 if($style=='F') $op='f';
2979 elseif($style=='FD' or $style=='DF') $op='B';
2980 else $op='S';
2981 $this->_out(sprintf('%.3F %.3F %.3F %.3F re %s',$x*_MPDFK,($this->h-$y)*_MPDFK,$w*_MPDFK,-$h*_MPDFK,$op));
2982}
2983
2984function AddFont($family,$style='') {
2985 if(empty($family)) { return; }
2986 $family = strtolower($family);
2987 $style=strtoupper($style);
2988 $style=str_replace('U','',$style);
2989 if($style=='IB') $style='BI';
2990 $fontkey = $family.$style;
2991 // check if the font has been already added
2992 if(isset($this->fonts[$fontkey])) {
2993 return;
2994 }
2995
2996/*-- CJK-FONTS --*/
2997 if (in_array($family,$this->available_CJK_fonts)) {
2998 if (empty($this->Big5_widths)) { require(_MPDF_PATH . 'includes/CJKdata.php'); }
2999 $this->AddCJKFont($family); // don't need to add style
3000 return;
3001 }
3002/*-- END CJK-FONTS --*/
3003
3004 if ($this->usingCoreFont) { die("mPDF Error - problem with Font management"); }
3005
3006 $stylekey = $style;
3007 if (!$style) { $stylekey = 'R'; }
3008
3009 if (!isset($this->fontdata[$family][$stylekey]) || !$this->fontdata[$family][$stylekey]) {
3010 die('mPDF Error - Font is not supported - '.$family.' '.$style);
3011 }
3012
3013 $name = '';
3014 $originalsize = 0;
3015 $sip = false;
3016 $smp = false;
3017 $unAGlyphs = false; // mPDF 5.4.05
3018 $haskerninfo = false;
3019 $BMPselected = false;
3020 @include(_MPDF_TTFONTDATAPATH.$fontkey.'.mtx.php');
3021
3022 $ttffile = '';
3023 if (defined('_MPDF_SYSTEM_TTFONTS')) {
3024 $ttffile = _MPDF_SYSTEM_TTFONTS.$this->fontdata[$family][$stylekey];
3025 if (!file_exists($ttffile)) { $ttffile = ''; }
3026 }
3027 if (!$ttffile) {
3028 $ttffile = _MPDF_TTFONTPATH.$this->fontdata[$family][$stylekey];
3029 if (!file_exists($ttffile)) { die("mPDF Error - cannot find TTF TrueType font file - ".$ttffile); }
3030 }
3031 $ttfstat = stat($ttffile);
3032
3033 if (isset($this->fontdata[$family]['TTCfontID'][$stylekey])) { $TTCfontID = $this->fontdata[$family]['TTCfontID'][$stylekey]; }
3034 else { $TTCfontID = 0; }
3035
3036
3037 $BMPonly = false;
3038 if (in_array($family,$this->BMPonly)) { $BMPonly = true; }
3039 $regenerate = false;
3040 if ($BMPonly && !$BMPselected) { $regenerate = true; }
3041 else if (!$BMPonly && $BMPselected) { $regenerate = true; }
3042 if ($this->useKerning && !$haskerninfo) { $regenerate = true; }
3043 // mPDF 5.4.05
3044 if (isset($this->fontdata[$family]['unAGlyphs']) && $this->fontdata[$family]['unAGlyphs'] && !$unAGlyphs) {
3045 $regenerate = true;
3046 $unAGlyphs = true;
3047 }
3048 else if ((!isset($this->fontdata[$family]['unAGlyphs']) || !$this->fontdata[$family]['unAGlyphs']) && $unAGlyphs) {
3049 $regenerate = true;
3050 $unAGlyphs = false;
3051 }
3052 if (!isset($name) || $originalsize != $ttfstat['size'] || $regenerate) {
3053 if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
3054 $ttf = new TTFontFile();
3055 $ttf->getMetrics($ttffile, $TTCfontID, $this->debugfonts, $BMPonly, $this->useKerning, $unAGlyphs); // mPDF 5.4.05
3056 $cw = $ttf->charWidths;
3057 $kerninfo = $ttf->kerninfo;
3058 $haskerninfo = true;
3059 $name = preg_replace('/[ ()]/','',$ttf->fullName);
3060 $sip = $ttf->sipset;
3061 $smp = $ttf->smpset;
3062
3063 $desc= array('Ascent'=>round($ttf->ascent),
3064 'Descent'=>round($ttf->descent),
3065 'CapHeight'=>round($ttf->capHeight),
3066 'Flags'=>$ttf->flags,
3067 'FontBBox'=>'['.round($ttf->bbox[0])." ".round($ttf->bbox[1])." ".round($ttf->bbox[2])." ".round($ttf->bbox[3]).']',
3068 'ItalicAngle'=>$ttf->italicAngle,
3069 'StemV'=>round($ttf->stemV),
3070 'MissingWidth'=>round($ttf->defaultWidth));
3071 $panose = '';
3072 // mPDF 5.5.19
3073 if (count($ttf->panose)) {
3074 $panoseArray = array_merge(array($ttf->sFamilyClass, $ttf->sFamilySubClass), $ttf->panose);
3075 foreach($panoseArray as $value)
3076 $panose .= ' '.dechex($value);
3077 }
3078 $up = round($ttf->underlinePosition);
3079 $ut = round($ttf->underlineThickness);
3080 $originalsize = $ttfstat['size']+0;
3081 $type = 'TTF';
3082 //Generate metrics .php file
3083 $s='<?php'."\n";
3084 $s.='$name=\''.$name."';\n";
3085 $s.='$type=\''.$type."';\n";
3086 $s.='$desc='.var_export($desc,true).";\n";
3087 $s.='$up='.$up.";\n";
3088 $s.='$ut='.$ut.";\n";
3089 $s.='$ttffile=\''.$ttffile."';\n";
3090 $s.='$TTCfontID=\''.$TTCfontID."';\n";
3091 $s.='$originalsize='.$originalsize.";\n";
3092 if ($sip) $s.='$sip=true;'."\n";
3093 else $s.='$sip=false;'."\n";
3094 if ($smp) $s.='$smp=true;'."\n";
3095 else $s.='$smp=false;'."\n";
3096 if ($BMPonly) $s.='$BMPselected=true;'."\n";
3097 else $s.='$BMPselected=false;'."\n";
3098 $s.='$fontkey=\''.$fontkey."';\n";
3099 $s.='$panose=\''.$panose."';\n";
3100 if ($this->useKerning) {
3101 $s.='$kerninfo='.var_export($kerninfo,true).";\n";
3102 $s.='$haskerninfo=true;'."\n";
3103 }
3104 else $s.='$haskerninfo=false;'."\n";
3105 // mPDF 5.4.05
3106 if ($this->fontdata[$family]['unAGlyphs']) {
3107 $s.='$unAGlyphs=true;'."\n";
3108 }
3109 else $s.='$unAGlyphs=false;'."\n";
3110 $s.="?>";
3111 if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
3112 $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.mtx.php',"w");
3113 fwrite($fh,$s,strlen($s));
3114 fclose($fh);
3115 $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.cw.dat',"wb");
3116 fwrite($fh,$cw,strlen($cw));
3117 fclose($fh);
3118 @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.cgm');
3119 @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.z');
3120 @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.cw127.php');
3121 @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.cw');
3122 }
3123 else if ($this->debugfonts) { $this->Error('Cannot write to the font caching directory - '._MPDF_TTFONTDATAPATH); }
3124 unset($ttf);
3125 }
3126 else {
3127 $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$fontkey.'.cw.dat');
3128 }
3129
3130 if (isset($this->fontdata[$family]['indic']) && $this->fontdata[$family]['indic']) { $indic = true; }
3131 else { $indic = false; }
3132 if (isset($this->fontdata[$family]['sip-ext']) && $this->fontdata[$family]['sip-ext']) { $sipext = $this->fontdata[$family]['sip-ext']; }
3133 else { $sipext = ''; }
3134
3135
3136 $i = count($this->fonts)+$this->extraFontSubsets+1;
3137 if ($sip || $smp) {
3138 $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
3139 }
3140 else {
3141 $ss = array();
3142 for ($s=32; $s<128; $s++) { $ss[$s] = $s; }
3143 $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
3144 }
3145 if ($this->useKerning && $haskerninfo) { $this->fonts[$fontkey]['kerninfo'] = $kerninfo; }
3146 $this->FontFiles[$fontkey]=array('length1'=>$originalsize, 'type'=>"TTF", 'ttffile'=>$ttffile, 'sip'=>$sip, 'smp'=>$smp);
3147 unset($cw);
3148}
3149
3150
3151
3152function SetFont($family,$style='',$size=0, $write=true, $forcewrite=false) {
3153 $family=strtolower($family);
3154 if (!$this->onlyCoreFonts) {
3155 if ($family == 'sans' || $family == 'sans-serif') { $family = $this->sans_fonts[0]; }
3156 if ($family == 'serif') { $family = $this->serif_fonts[0]; }
3157 if ($family == 'mono' || $family == 'monospace') { $family = $this->mono_fonts[0]; }
3158 }
3159 if (isset($this->fonttrans[$family]) && $this->fonttrans[$family]) { $family = $this->fonttrans[$family]; }
3160 if($family=='') {
3161 if ($this->FontFamily) { $family=$this->FontFamily; }
3162 else if ($this->default_font) { $family=$this->default_font; }
3163 else { $this->Error("No font or default font set!"); }
3164 }
3165 $this->ReqFontStyle = $style; // required or requested style - used later for artificial bold/italic
3166
3167 if (($family == 'csymbol') || ($family == 'czapfdingbats') || ($family == 'ctimes') || ($family == 'ccourier') || ($family == 'chelvetica')) {
3168 if ($this->PDFA || $this->PDFX) {
3169 if ($family == 'csymbol' || $family == 'czapfdingbats') {
3170 $this->Error("Symbol and Zapfdingbats cannot be embedded in mPDF (required for PDFA1-b or PDFX/1-a).");
3171 }
3172 if ($family == 'ctimes' || $family == 'ccourier' || $family == 'chelvetica') {
3173 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.)"; }
3174 if ($family == 'chelvetica') { $family = 'sans'; }
3175 if ($family == 'ctimes') { $family = 'serif'; }
3176 if ($family == 'ccourier') { $family = 'mono'; }
3177 }
3178 $this->usingCoreFont = false;
3179 }
3180 else { $this->usingCoreFont = true; }
3181 if($family=='csymbol' || $family=='czapfdingbats') { $style=''; }
3182 }
3183 else { $this->usingCoreFont = false; }
3184
3185 $this->U=false;
3186 $this->S=false;
3187 if ($style) {
3188 $style=strtoupper($style);
3189 if(strpos($style,'U')!==false) {
3190 $this->U=true;
3191 $style=str_replace('U','',$style);
3192 }
3193 if(strpos($style,'S')!==false) {
3194 $this->S=true;
3195 // Small Caps
3196 if (empty($this->upperCase)) { @include(_MPDF_PATH.'includes/upperCase.php'); }
3197 $style=str_replace('S','',$style);
3198 }
3199 if ($style=='IB') $style='BI';
3200 }
3201 if ($size==0) $size=$this->FontSizePt;
3202
3203 $fontkey=$family.$style;
3204
3205 $stylekey = $style;
3206 if (!$stylekey) { $stylekey = "R"; }
3207
3208 if (!$this->onlyCoreFonts && !$this->usingCoreFont) {
3209 if(!isset($this->fonts[$fontkey]) || count($this->default_available_fonts) != count($this->available_unifonts) ) { // not already added
3210/*-- CJK-FONTS --*/
3211 // CJK fonts
3212 if (in_array($fontkey,$this->available_CJK_fonts)) {
3213 if(!isset($this->fonts[$fontkey])) { // already added
3214 if (empty($this->Big5_widths)) { require(_MPDF_PATH . 'includes/CJKdata.php'); }
3215 $this->AddCJKFont($family); // don't need to add style
3216 }
3217 }
3218 // Test to see if requested font/style is available - or substitute
3219 else
3220/*-- END CJK-FONTS --*/
3221 if (!in_array($fontkey,$this->available_unifonts)) {
3222 // If font[nostyle] exists - set it
3223 if (in_array($family,$this->available_unifonts)) {
3224 $style = '';
3225 }
3226
3227 // Else if only one font available - set it (assumes if only one font available it will not have a style)
3228 else if (count($this->available_unifonts) == 1) {
3229 $family = $this->available_unifonts[0];
3230 $style = '';
3231 }
3232
3233 else {
3234 $found = 0;
3235 // else substitute font of similar type
3236 if (in_array($family,$this->sans_fonts)) {
3237 $i = array_intersect($this->sans_fonts,$this->available_unifonts);
3238 if (count($i)) {
3239 $i = array_values($i);
3240 // with requested style if possible
3241 if (!in_array(($i[0].$style),$this->available_unifonts)) {
3242 $style = '';
3243 }
3244 $family = $i[0];
3245 $found = 1;
3246 }
3247 }
3248 else if (in_array($family,$this->serif_fonts)) {
3249 $i = array_intersect($this->serif_fonts,$this->available_unifonts);
3250 if (count($i)) {
3251 $i = array_values($i);
3252 // with requested style if possible
3253 if (!in_array(($i[0].$style),$this->available_unifonts)) {
3254 $style = '';
3255 }
3256 $family = $i[0];
3257 $found = 1;
3258 }
3259 }
3260 else if (in_array($family,$this->mono_fonts)) {
3261 $i = array_intersect($this->mono_fonts,$this->available_unifonts);
3262 if (count($i)) {
3263 $i = array_values($i);
3264 // with requested style if possible
3265 if (!in_array(($i[0].$style),$this->available_unifonts)) {
3266 $style = '';
3267 }
3268 $family = $i[0];
3269 $found = 1;
3270 }
3271 }
3272
3273 if (!$found) {
3274 // set first available font
3275 $fs = $this->available_unifonts[0];
3276 preg_match('/^([a-z_0-9\-]+)([BI]{0,2})$/',$fs,$fas); // Allow "-"
3277 // with requested style if possible
3278 $ws = $fas[1].$style;
3279 if (in_array($ws,$this->available_unifonts)) {
3280 $family = $fas[1]; // leave $style as is
3281 }
3282 else if (in_array($fas[1],$this->available_unifonts)) {
3283 // or without style
3284 $family = $fas[1];
3285 $style = '';
3286 }
3287 else {
3288 // or with the style specified
3289 $family = $fas[1];
3290 $style = $fas[2];
3291 }
3292 }
3293 }
3294 $fontkey = $family.$style;
3295 }
3296 }
3297 // try to add font (if not already added)
3298 $this->AddFont($family, $style);
3299
3300 //Test if font is already selected
3301 if($this->FontFamily == $family && $this->FontFamily == $this->currentfontfamily && $this->FontStyle == $style && $this->FontStyle == $this->currentfontstyle && $this->FontSizePt == $size && $this->FontSizePt == $this->currentfontsize && !$forcewrite) {
3302 return $family;
3303 }
3304
3305 $fontkey = $family.$style;
3306
3307 //Select it
3308 $this->FontFamily = $family;
3309 $this->FontStyle = $style;
3310 $this->FontSizePt = $size;
3311 $this->FontSize = $size / _MPDFK;
3312 $this->CurrentFont = &$this->fonts[$fontkey];
3313 if ($write) {
3314 $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
3315 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); }
3316 $this->pageoutput[$this->page]['Font'] = $fontout;
3317 }
3318
3319
3320
3321 // Added - currentfont (lowercase) used in HTML2PDF
3322 $this->currentfontfamily=$family;
3323 $this->currentfontsize=$size;
3324 $this->currentfontstyle=$style.($this->U ? 'U' : '').($this->S ? 'S' : '');
3325 $this->setMBencoding('UTF-8');
3326 }
3327
3328 else { // if using core fonts
3329
3330
3331 if ($this->PDFA || $this->PDFX) {
3332 $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.');
3333 }
3334 $this->setMBencoding('windows-1252');
3335
3336 //Test if font is already selected
3337 if(($this->FontFamily == $family) AND ($this->FontStyle == $style) AND ($this->FontSizePt == $size) && !$forcewrite) {
3338 return $family;
3339 }
3340
3341 if (!isset($this->CoreFonts[$fontkey])) {
3342 if (in_array($family,$this->serif_fonts)) { $family = 'ctimes'; }
3343 else if (in_array($family,$this->mono_fonts)) { $family = 'ccourier'; }
3344 else { $family = 'chelvetica'; }
3345 $this->usingCoreFont = true;
3346 $fontkey = $family.$style;
3347 }
3348
3349 if(!isset($this->fonts[$fontkey])) {
3350 // STANDARD CORE FONTS
3351 if (isset($this->CoreFonts[$fontkey])) {
3352 //Load metric file
3353 $file=$family;
3354 if($family=='ctimes' || $family=='chelvetica' || $family=='ccourier') { $file.=strtolower($style); }
3355 $file.='.php';
3356 include(_MPDF_PATH.'font/'.$file);
3357 if(!isset($cw)) { $this->Error('Could not include font metric file'); }
3358 $i=count($this->fonts)+$this->extraFontSubsets+1;
3359 $this->fonts[$fontkey]=array('i'=>$i,'type'=>'core','name'=>$this->CoreFonts[$fontkey],'desc'=>$desc,'up'=>$up,'ut'=>$ut,'cw'=>$cw);
3360 if ($this->useKerning) { $this->fonts[$fontkey]['kerninfo'] = $kerninfo; }
3361 }
3362 else {
3363 die('mPDF error - Font not defined');
3364 }
3365 }
3366 //Test if font is already selected
3367 if(($this->FontFamily == $family) AND ($this->FontStyle == $style) AND ($this->FontSizePt == $size) && !$forcewrite) {
3368 return $family;
3369 }
3370 //Select it
3371 $this->FontFamily=$family;
3372 $this->FontStyle=$style;
3373 $this->FontSizePt=$size;
3374 $this->FontSize=$size/_MPDFK;
3375 $this->CurrentFont=&$this->fonts[$fontkey];
3376 if ($write) {
3377 $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
3378 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); }
3379 $this->pageoutput[$this->page]['Font'] = $fontout;
3380 }
3381 // Added - currentfont (lowercase) used in HTML2PDF
3382 $this->currentfontfamily=$family;
3383 $this->currentfontsize=$size;
3384 $this->currentfontstyle=$style.($this->U ? 'U' : '').($this->S ? 'S' : '');
3385
3386 }
3387
3388 return $family;
3389}
3390
3391function SetFontSize($size,$write=true) {
3392 //Set font size in points
3393 if($this->FontSizePt==$size) return;
3394 $this->FontSizePt=$size;
3395 $this->FontSize=$size/_MPDFK;
3396 $this->currentfontsize=$size;
3397 if ($write) {
3398 $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
3399 // Edited mPDF 3.0
3400 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); }
3401 $this->pageoutput[$this->page]['Font'] = $fontout;
3402 }
3403}
3404
3405function AddLink() {
3406 //Create a new internal link
3407 $n=count($this->links)+1;
3408 $this->links[$n]=array(0,0);
3409 return $n;
3410}
3411
3412function SetLink($link,$y=0,$page=-1) {
3413 //Set destination of internal link
3414 if($y==-1) $y=$this->y;
3415 if($page==-1) $page=$this->page;
3416 $this->links[$link]=array($page,$y);
3417}
3418
3419function Link($x,$y,$w,$h,$link) {
3420 $l = array($x*_MPDFK,$this->hPt-$y*_MPDFK,$w*_MPDFK,$h*_MPDFK,$link);
3421 if ($this->keep_block_together) { // Save to array - don't write yet
3422 $this->ktLinks[$this->page][]= $l;
3423 return;
3424 }
3425 else if ($this->table_rotate) { // *TABLES*
3426 $this->tbrot_Links[$this->page][]= $l; // *TABLES*
3427 return; // *TABLES*
3428 } // *TABLES*
3429 else if ($this->kwt) {
3430 $this->kwt_Links[$this->page][]= $l;
3431 return;
3432 }
3433
3434 if ($this->writingHTMLheader || $this->writingHTMLfooter) {
3435 $this->HTMLheaderPageLinks[]= $l;
3436 return;
3437 }
3438 //Put a link on the page
3439 $this->PageLinks[$this->page][]= $l;
3440 // Save cross-reference to Column buffer
3441 $ref = count($this->PageLinks[$this->page])-1; // *COLUMNS*
3442 $this->columnLinks[$this->CurrCol][INTVAL($this->x)][INTVAL($this->y)] = $ref; // *COLUMNS*
3443
3444}
3445
3446function Text($x,$y,$txt) {
3447 // Output a string
3448 // Called (internally) by Watermark and _tableWrite [rotated cells]
3449 // Expects input to be mb_encoded if necessary and RTL reversed
3450
3451 // ARTIFICIAL BOLD AND ITALIC
3452 $s = 'q ';
3453 if ($this->falseBoldWeight && strpos($this->ReqFontStyle,"B") !== false && strpos($this->FontStyle,"B") === false) {
3454 $s .= '2 Tr 1 J 1 j ';
3455 $s .= sprintf('%.3F w ',($this->FontSize/130)*_MPDFK*$this->falseBoldWeight);
3456 $tc = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
3457 if($this->FillColor!=$tc) { $s .= $tc.' '; } // stroke (outline) = same colour as text(fill)
3458 }
3459 if (strpos($this->ReqFontStyle,"I") !== false && strpos($this->FontStyle,"I") === false) {
3460 $aix = '1 0 0.261799 1 %.3F %.3F Tm';
3461 }
3462 else { $aix = '%.3F %.3F Td'; }
3463
3464 if($this->ColorFlag) $s.=$this->TextColor.' ';
3465
3466 $this->CurrentFont['used']= true;
3467 if ($this->CurrentFont['type']=='TTF' && ($this->CurrentFont['sip'] || $this->CurrentFont['smp'])) {
3468 $txt2 = str_replace(chr(194).chr(160),chr(32),$txt);
3469 $txt2 = $this->UTF8toSubset($txt2);
3470 $s.=sprintf('BT '.$aix.' %s Tj ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$txt2);
3471 }
3472 else if (!$this->usingCoreFont) {
3473 $txt2 = str_replace(chr(194).chr(160),chr(32),$txt);
3474 $this->UTF8StringToArray($txt2); // this is just to add chars to subset list
3475 if ($this->kerning && $this->useKerning) { $s .= $this->_kern($txt2, '', $aix, $x, $y); }
3476 else {
3477 //Convert string to UTF-16BE without BOM
3478 $txt2= $this->UTF8ToUTF16BE($txt2, false);
3479 $s.=sprintf('BT '.$aix.' (%s) Tj ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$this->_escape($txt2));
3480 }
3481 }
3482 else {
3483 $txt2 = str_replace(chr(160),chr(32),$txt);
3484 if ($this->kerning && $this->useKerning) { $s .= $this->_kern($txt2, '', $aix, $x, $y); }
3485 else {
3486 $s.=sprintf('BT '.$aix.' (%s) Tj ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$this->_escape($txt2));
3487 }
3488 }
3489 if($this->U && $txt!='') {
3490 $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
3491 if($this->FillColor!=$c) { $s.= ' '.$c.' '; }
3492 if (isset($this->CurrentFont['up'])) { $up=$this->CurrentFont['up']; }
3493 else { $up = -100; }
3494 $adjusty = (-$up/1000* $this->FontSize);
3495 if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
3496 else { $ut = 60/1000* $this->FontSize; }
3497 $olw = $this->LineWidth;
3498 $s.=' '.(sprintf(' %.3F w',$ut*_MPDFK));
3499 $s.=' '.$this->_dounderline($x,$y + $adjusty,$txt);
3500 $s.=' '.(sprintf(' %.3F w',$olw*_MPDFK));
3501 if($this->FillColor!=$c) { $s.= ' '.$this->FillColor.' '; }
3502 }
3503 // STRIKETHROUGH
3504 if($this->strike && $txt!='') {
3505 $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
3506 if($this->FillColor!=$c) { $s.= ' '.$c.' '; }
3507 //Superscript and Subscript Y coordinate adjustment (now for striked-through texts)
3508 if (isset($this->CurrentFont['desc']['CapHeight'])) { $ch=$this->CurrentFont['desc']['CapHeight']; }
3509 else { $ch = 700; }
3510 $adjusty = (-$ch/1000* $this->FontSize) * 0.35;
3511 if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
3512 else { $ut = 60/1000* $this->FontSize; }
3513 $olw = $this->LineWidth;
3514 $s.=' '.(sprintf(' %.3F w',$ut*_MPDFK));
3515 $s.=' '.$this->_dounderline($x,$y+$adjusty,$txt);
3516 $s.=' '.(sprintf(' %.3F w',$olw*_MPDFK));
3517 if($this->FillColor!=$c) { $s.= ' '.$this->FillColor.' '; }
3518 }
3519 $s .= 'Q';
3520 $this->_out($s);
3521}
3522
3523/*-- DIRECTW --*/
3524function WriteText($x,$y,$txt) {
3525 // Output a string using Text() but does encoding and text reversing of RTL
3526 $txt = $this->purify_utf8_text($txt);
3527 if ($this->text_input_as_HTML) {
3528 $txt = $this->all_entities_to_utf8($txt);
3529 }
3530 if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
3531 // DIRECTIONALITY
3532 if (preg_match("/([".$this->pregRTLchars."])/u", $txt)) { $this->biDirectional = true; } // *RTL*
3533 $this->magic_reverse_dir($txt, true, $this->directionality); // *RTL*
3534 // Font-specific ligature substitution for Indic fonts
3535 if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($txt); // *INDIC*
3536 $this->Text($x,$y,$txt);
3537}
3538
3539function WriteCell($w,$h=0,$txt='',$border=0,$ln=0,$align='',$fill=0,$link='', $currentx=0) {
3540 //Output a cell using Cell() but does encoding and text reversing of RTL
3541 $txt = $this->purify_utf8_text($txt);
3542 if ($this->text_input_as_HTML) {
3543 $txt = $this->all_entities_to_utf8($txt);
3544 }
3545 if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
3546 // DIRECTIONALITY
3547 if (preg_match("/([".$this->pregRTLchars."])/u", $txt)) { $this->biDirectional = true; } // *RTL*
3548 $this->magic_reverse_dir($txt, true, $this->directionality); // *RTL*
3549 // Font-specific ligature substitution for Indic fonts
3550 if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($txt); // *INDIC*
3551 $this->Cell($w,$h,$txt,$border,$ln,$align,$fill,$link, $currentx);
3552}
3553/*-- END DIRECTW --*/
3554
3555
3556function ResetSpacing() {
3557 if ($this->ws != 0) { $this->_out('BT 0 Tw ET'); }
3558 $this->ws=0;
3559 if ($this->charspacing != 0) { $this->_out('BT 0 Tc ET'); }
3560 $this->charspacing=0;
3561}
3562
3563
3564function SetSpacing($cs,$ws) {
3565 if (intval($cs*1000)==0) { $cs = 0; }
3566 if ($cs) { $this->_out(sprintf('BT %.3F Tc ET',$cs)); }
3567 else if ($this->charspacing != 0) { $this->_out('BT 0 Tc ET'); }
3568 $this->charspacing=$cs;
3569 if (intval($ws*1000)==0) { $ws = 0; }
3570 if ($ws) { $this->_out(sprintf('BT %.3F Tw ET',$ws)); }
3571 else if ($this->ws != 0) { $this->_out('BT 0 Tw ET'); }
3572 $this->ws=$ws;
3573}
3574
3575// WORD SPACING
3576function GetJspacing($nc,$ns,$w,$inclCursive) {
3577 $ws = 0;
3578 $charspacing = 0;
3579 $ww = $this->jSWord;
3580 $ncx = $nc-1;
3581 if ($nc == 0) { return array(0,0); }
3582 else if ($nc==1) { $charspacing = $w; }
3583 // Only word spacing allowed / possible
3584 else if ($this->fixedlSpacing !== false || $inclCursive) {
3585 if ($ns) { $ws = $w / $ns; }
3586 }
3587 else if (!$ns) {
3588 $charspacing = $w / ($ncx );
3589 if (($this->jSmaxChar > 0) && ($charspacing > $this->jSmaxChar)) {
3590 $charspacing = $this->jSmaxChar;
3591 }
3592 }
3593 else if ($ns == ($ncx )) {
3594 $charspacing = $w / $ns;
3595 }
3596 else {
3597 if ($this->usingCoreFont) {
3598 $cs = ($w * (1 - $this->jSWord)) / ($ncx );
3599 if (($this->jSmaxChar > 0) && ($cs > $this->jSmaxChar)) {
3600 $cs = $this->jSmaxChar;
3601 $ww = 1 - (($cs * ($ncx ))/$w);
3602 }
3603 $charspacing = $cs;
3604 $ws = ($w * ($ww) ) / $ns;
3605 }
3606 else {
3607 $cs = ($w * (1 - $this->jSWord)) / ($ncx -$ns);
3608 if (($this->jSmaxChar > 0) && ($cs > $this->jSmaxChar)) {
3609 $cs = $this->jSmaxChar;
3610 $ww = 1 - (($cs * ($ncx -$ns))/$w);
3611 }
3612 $charspacing = $cs;
3613 $ws = (($w * ($ww) ) / $ns) - $charspacing;
3614 }
3615 }
3616 return array($charspacing,$ws);
3617}
3618
3619function 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) {
3620 //Output a cell
3621 // Expects input to be mb_encoded if necessary and RTL reversed
3622 // NON_BREAKING SPACE
3623 if ($this->usingCoreFont) {
3624 $txt = str_replace(chr(160),chr(32),$txt);
3625 }
3626 else {
3627 $txt = str_replace(chr(194).chr(160),chr(32),$txt);
3628 }
3629
3630 $oldcolumn = $this->CurrCol;
3631 // Automatic page break
3632 // Allows PAGE-BREAK-AFTER = avoid to work
3633 if (!$this->tableLevel && (($this->y+$this->divheight>$this->PageBreakTrigger) || ($this->y+$h>$this->PageBreakTrigger) ||
3634 ($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
3635 $x=$this->x;//Current X position
3636
3637
3638 // WORD SPACING
3639 $ws=$this->ws;//Word Spacing
3640 $charspacing=$this->charspacing;//Character Spacing
3641 $this->ResetSpacing();
3642
3643 $this->AddPage($this->CurOrientation);
3644 // Added to correct for OddEven Margins
3645 $x += $this->MarginCorrection;
3646 if ($currentx) {
3647 $currentx += $this->MarginCorrection;
3648 }
3649 $this->x=$x;
3650 // WORD SPACING
3651 $this->SetSpacing($charspacing,$ws);
3652 }
3653
3654 // Test: to put line through centre of cell: $this->Line($this->x,$this->y+($h/2),$this->x+50,$this->y+($h/2));
3655
3656/*-- COLUMNS --*/
3657 // COLS
3658 // COLUMN CHANGE
3659 if ($this->CurrCol != $oldcolumn) {
3660 if ($currentx) {
3661 $currentx += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
3662 }
3663 $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
3664 }
3665
3666 // COLUMNS Update/overwrite the lowest bottom of printing y value for a column
3667 if ($this->ColActive) {
3668 if ($h) { $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y+$h; }
3669 else { $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y+$this->divheight; }
3670 }
3671/*-- END COLUMNS --*/
3672
3673 // KEEP BLOCK TOGETHER Update/overwrite the lowest bottom of printing y value on first page
3674 if ($this->keep_block_together) {
3675 if ($h) { $this->ktBlock[$this->page]['bottom_margin'] = $this->y+$h; }
3676// else { $this->ktBlock[$this->page]['bottom_margin'] = $this->y+$this->divheight; }
3677 }
3678
3679 if($w==0) $w = $this->w-$this->rMargin-$this->x;
3680 $s='';
3681 if($fill==1 && $this->FillColor) {
3682 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.' '; }
3683 $this->pageoutput[$this->page]['FillColor'] = $this->FillColor;
3684 }
3685
3686
3687 $boxtop = $this->y;
3688 $boxheight = $h;
3689 $boxbottom = $this->y+$h;
3690
3691 if($txt!='') {
3692 // FONT SIZE - this determines the baseline caculation
3693 if ($this->linemaxfontsize && !$this->processingHeader) { $bfs = $this->linemaxfontsize; }
3694 else { $bfs = $this->FontSize; }
3695 //Calculate baseline Superscript and Subscript Y coordinate adjustment
3696 $bfx = $this->baselineC;
3697 $baseline = $bfx*$bfs;
3698 if($this->SUP) { $baseline += ($bfx-1.05)*$this->FontSize; }
3699 else if($this->SUB) { $baseline += ($bfx + 0.04)*$this->FontSize; }
3700 else if($this->bullet) { $baseline += ($bfx-0.7)*$this->FontSize; }
3701
3702 // Vertical align (for Images)
3703 if ($abovefont || $belowfont) { // from flowing block - valign always M
3704 $va = $abovefont + (0.5*$bfs);
3705 }
3706 else if ($this->lineheight_correction) {
3707 if ($valign == 'T') { $va = (0.5 * $bfs * $this->lineheight_correction); }
3708 else if ($valign == 'B') { $va = $h-(0.5 * $bfs * $this->lineheight_correction); }
3709 else { $va = 0.5*$h; } // Middle
3710 }
3711 else {
3712 if ($valign == 'T') { $va = (0.5 * $bfs * $this->default_lineheight_correction); }
3713 else if ($valign == 'B') { $va = $h-(0.5 * $bfs * $this->default_lineheight_correction); }
3714 else { $va = 0.5*$h; } // Middle
3715 }
3716
3717 // ONLY SET THESE IF WANT TO CONFINE BORDER +/- FILL TO FIT FONTSIZE - NOT FULL CELL AS IS ORIGINAL FUNCTION
3718 // spanfill or spanborder are set in FlowingBlock functions
3719 if ($spanfill || !empty($this->spanborddet) || $link!='') {
3720 $exth = 0.2; // Add to fontsize to increase height of background / link / border
3721 $boxtop = $this->y+$baseline+$va-($this->FontSize*(1+$exth/2)*(0.5+$bfx));
3722 $boxheight = $this->FontSize * (1+$exth);
3723 $boxbottom = $boxtop + $boxheight;
3724 }
3725 }
3726
3727 $bbw = $tbw = $lbw = $rbw = 0; // Border widths
3728 if (!empty($this->spanborddet)) {
3729 if (!isset($this->spanborddet['B'])) { $this->spanborddet['B'] = array('s' => 0, 'style' => '', 'w' => 0); }
3730 if (!isset($this->spanborddet['T'])) { $this->spanborddet['T'] = array('s' => 0, 'style' => '', 'w' => 0); }
3731 if (!isset($this->spanborddet['L'])) { $this->spanborddet['L'] = array('s' => 0, 'style' => '', 'w' => 0); }
3732 if (!isset($this->spanborddet['R'])) { $this->spanborddet['R'] = array('s' => 0, 'style' => '', 'w' => 0); }
3733 $bbw = $this->spanborddet['B']['w'];
3734 $tbw = $this->spanborddet['T']['w'];
3735 $lbw = $this->spanborddet['L']['w'];
3736 $rbw = $this->spanborddet['R']['w'];
3737 }
3738 if($fill==1 || $border==1 || !empty($this->spanborddet)) {
3739 if (!empty($this->spanborddet)) {
3740 if ($fill==1) {
3741 $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);
3742 }
3743 $s.= ' q ';
3744 $dashon = 3;
3745 $dashoff = 3.5;
3746 $dot = 2.5;
3747 if($tbw) {
3748 $short = 0;
3749 if ($this->spanborddet['T']['style'] == 'dashed') {
3750 $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$tbw*$dashon*_MPDFK,$tbw*$dashoff*_MPDFK);
3751 }
3752 else if ($this->spanborddet['T']['style'] == 'dotted') {
3753 $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$tbw*$dot*_MPDFK,-$tbw/2*_MPDFK);
3754 $short = $tbw/2;
3755 }
3756 else {
3757 $s.=' 0 j 0 J [] 0 d ';
3758 }
3759 $c = $this->SetDColor($this->spanborddet['T']['c'],true);
3760 if ($this->spanborddet['T']['style'] == 'double') {
3761 $s.=sprintf(' %s %.3F w ',$c,$tbw/3*_MPDFK);
3762 $xadj = $xadj2 = 0;
3763 if ($this->spanborddet['L']['style'] == 'double') { $xadj = $this->spanborddet['L']['w']*2/3; }
3764 if ($this->spanborddet['R']['style'] == 'double') { $xadj2 = $this->spanborddet['R']['w']*2/3; }
3765 $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);
3766 $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);
3767 }
3768 else {
3769 $s.=sprintf(' %s %.3F w ',$c,$tbw*_MPDFK);
3770 $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);
3771 }
3772 }
3773 if($bbw) {
3774 $short = 0;
3775 if ($this->spanborddet['B']['style'] == 'dashed') {
3776 $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$bbw*$dashon*_MPDFK,$bbw*$dashoff*_MPDFK);
3777 }
3778 else if ($this->spanborddet['B']['style'] == 'dotted') {
3779 $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$bbw*$dot*_MPDFK,-$bbw/2*_MPDFK);
3780 $short = $bbw/2;
3781 }
3782 else {
3783 $s.=' 0 j 0 J [] 0 d ';
3784 }
3785 $c = $this->SetDColor($this->spanborddet['B']['c'],true);
3786 if ($this->spanborddet['B']['style'] == 'double') {
3787 $s.=sprintf(' %s %.3F w ',$c,$bbw/3*_MPDFK);
3788 $xadj = $xadj2 = 0;
3789 if ($this->spanborddet['L']['style'] == 'double') { $xadj = $this->spanborddet['L']['w']*2/3; }
3790 if ($this->spanborddet['R']['style'] == 'double') { $xadj2 = $this->spanborddet['R']['w']*2/3; }
3791 $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);
3792 $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);
3793 }
3794 else {
3795 $s.=sprintf(' %s %.3F w ',$c,$bbw*_MPDFK);
3796 $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);
3797 }
3798 }
3799 if($lbw) {
3800 $short = 0;
3801 if ($this->spanborddet['L']['style'] == 'dashed') {
3802 $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$lbw*$dashon*_MPDFK,$lbw*$dashoff*_MPDFK);
3803 }
3804 else if ($this->spanborddet['L']['style'] == 'dotted') {
3805 $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$lbw*$dot*_MPDFK,-$lbw/2*_MPDFK);
3806 $short = $lbw/2;
3807 }
3808 else {
3809 $s.=' 0 j 0 J [] 0 d ';
3810 }
3811 $c = $this->SetDColor($this->spanborddet['L']['c'],true);
3812 if ($this->spanborddet['L']['style'] == 'double') {
3813 $s.=sprintf(' %s %.3F w ',$c,$lbw/3*_MPDFK);
3814 $yadj = $yadj2 = 0;
3815 if ($this->spanborddet['T']['style'] == 'double') { $yadj = $this->spanborddet['T']['w']*2/3; }
3816 if ($this->spanborddet['B']['style'] == 'double') { $yadj2 = $this->spanborddet['B']['w']*2/3; }
3817 $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);
3818 $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);
3819 }
3820 else {
3821 $s.=sprintf(' %s %.3F w ',$c,$lbw*_MPDFK);
3822 $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);
3823 }
3824 }
3825 if($rbw) {
3826 $short = 0;
3827 if ($this->spanborddet['R']['style'] == 'dashed') {
3828 $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$rbw*$dashon*_MPDFK,$rbw*$dashoff*_MPDFK);
3829 }
3830 else if ($this->spanborddet['R']['style'] == 'dotted') {
3831 $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$rbw*$dot*_MPDFK,-$rbw/2*_MPDFK);
3832 $short = $rbw/2;
3833 }
3834 else {
3835 $s.=' 0 j 0 J [] 0 d ';
3836 }
3837 $c = $this->SetDColor($this->spanborddet['R']['c'],true);
3838 if ($this->spanborddet['R']['style'] == 'double') {
3839 $s.=sprintf(' %s %.3F w ',$c,$rbw/3*_MPDFK);
3840 $yadj = $yadj2 = 0;
3841 if ($this->spanborddet['T']['style'] == 'double') { $yadj = $this->spanborddet['T']['w']*2/3; }
3842 if ($this->spanborddet['B']['style'] == 'double') { $yadj2 = $this->spanborddet['B']['w']*2/3; }
3843 $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);
3844 $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);
3845 }
3846 else {
3847 $s.=sprintf(' %s %.3F w ',$c,$rbw*_MPDFK);
3848 $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);
3849 }
3850 }
3851 $s.= ' Q ';
3852 }
3853 else {
3854 if ($fill==1) $op=($border==1) ? 'B' : 'f';
3855 else $op='S';
3856 $s.=sprintf('%.3F %.3F %.3F %.3F re %s ',$this->x*_MPDFK,($this->h-$boxtop)*_MPDFK,$w*_MPDFK,-$boxheight*_MPDFK,$op);
3857 }
3858 }
3859
3860 if(is_string($border)) {
3861 $x=$this->x;
3862 $y=$this->y;
3863 if(is_int(strpos($border,'L')))
3864 $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',$x*_MPDFK,($this->h-$boxtop)*_MPDFK,$x*_MPDFK,($this->h-($boxbottom))*_MPDFK);
3865 if(is_int(strpos($border,'T')))
3866 $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',$x*_MPDFK,($this->h-$boxtop)*_MPDFK,($x+$w)*_MPDFK,($this->h-$boxtop)*_MPDFK);
3867 if(is_int(strpos($border,'R')))
3868 $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($x+$w)*_MPDFK,($this->h-$boxtop)*_MPDFK,($x+$w)*_MPDFK,($this->h-($boxbottom))*_MPDFK);
3869 if(is_int(strpos($border,'B')))
3870 $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',$x*_MPDFK,($this->h-($boxbottom))*_MPDFK,($x+$w)*_MPDFK,($this->h-($boxbottom))*_MPDFK);
3871 }
3872
3873 if($txt!='') {
3874 if ($exactWidth)
3875 $stringWidth = $w;
3876 else
3877 $stringWidth = $this->GetStringWidth($txt) + ( $this->charspacing * mb_strlen( $txt, $this->mb_enc ) / _MPDFK )
3878 + ( $this->ws * mb_substr_count( $txt, ' ', $this->mb_enc ) / _MPDFK );
3879
3880 // Set x OFFSET FOR PRINTING
3881 if($align=='R') {
3882 $dx=$w-$this->cMarginR - $stringWidth - $lcpaddingR;
3883 }
3884 elseif($align=='C') {
3885 $dx=(($w - $stringWidth )/2);
3886 }
3887 elseif($align=='L' or $align=='J') $dx=$this->cMarginL + $lcpaddingL;
3888 else $dx = 0;
3889
3890 if($this->ColorFlag) $s .='q '.$this->TextColor.' ';
3891
3892 // OUTLINE
3893 if($this->textparam['outline-s'] && !$this->S) { // mPDF 5.6.07
3894 $s .=' '.sprintf('%.3F w',$this->LineWidth*_MPDFK).' ';
3895 $s .=" $this->DrawColor ";
3896 $s .=" 2 Tr ";
3897 }
3898 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
3899 $s .= ' 2 Tr 1 J 1 j ';
3900 $s .= ' '.sprintf('%.3F w',($this->FontSize/130)*_MPDFK*$this->falseBoldWeight).' ';
3901 $tc = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
3902 if($this->FillColor!=$tc) { $s .= ' '.$tc.' '; } // stroke (outline) = same colour as text(fill)
3903 }
3904 else { $s .=" 0 Tr "; } // mPDF 5.6.07
3905
3906 if (strpos($this->ReqFontStyle,"I") !== false && strpos($this->FontStyle,"I") === false) { // Artificial italic
3907 $aix = '1 0 0.261799 1 %.3F %.3F Tm ';
3908 }
3909 else { $aix = '%.3F %.3F Td '; }
3910
3911 // THE TEXT
3912 $sub = '';
3913 $this->CurrentFont['used']= true;
3914
3915 // WORD SPACING
3916 // IF multibyte - Tw has no effect - need to use alternative method - do word spacing using an adjustment before each space
3917 if ($this->ws && !$this->usingCoreFont && !$this->CurrentFont['sip'] && !$this->CurrentFont['smp'] && !$this->S) {
3918 $sub .= ' BT 0 Tw ET ';
3919 if ($this->kerning && $this->useKerning) { $sub .= $this->_kern($txt, 'MBTw', $aix, ($this->x+$dx), ($this->y+$baseline+$va)); }
3920 else {
3921 $space = " ";
3922 //Convert string to UTF-16BE without BOM
3923 $space= $this->UTF8ToUTF16BE($space , false);
3924 $space=$this->_escape($space );
3925 $sub .=sprintf('BT '.$aix,($this->x+$dx)*_MPDFK,($this->h-($this->y+$baseline+$va))*_MPDFK);
3926 $t = explode(' ',$txt);
3927 $sub .=sprintf(' %.3F Tc [',$this->charspacing);
3928 $numt = count($t);
3929 for($i=0;$i<$numt;$i++) {
3930 $tx = $t[$i];
3931 //Convert string to UTF-16BE without BOM
3932 $tx = $this->UTF8ToUTF16BE($tx , false);
3933 $tx = $this->_escape($tx);
3934 $sub .=sprintf('(%s) ',$tx);
3935 if (($i+1)<$numt) {
3936 $adj = -($this->ws)*1000/$this->FontSizePt;
3937 $sub .=sprintf('%d(%s) ',$adj,$space);
3938 }
3939 }
3940 $sub .='] TJ ';
3941 $sub .=' ET';
3942 }
3943 }
3944 else {
3945 $txt2= $txt;
3946 if ($this->CurrentFont['type']=='TTF' && ($this->CurrentFont['sip'] || $this->CurrentFont['smp'])) {
3947 if ($this->S) { $sub .= $this->_smallCaps($txt2, 'SIPSMP', $aix, $dx, _MPDFK, $baseline, $va); }
3948 else {
3949 $txt2 = $this->UTF8toSubset($txt2);
3950 $sub .=sprintf('BT '.$aix.' %s Tj ET',($this->x+$dx)*_MPDFK,($this->h-($this->y+$baseline+$va))*_MPDFK,$txt2);
3951 }
3952 }
3953 else {
3954 if ($this->S) { $sub .= $this->_smallCaps($txt2, '', $aix, $dx, _MPDFK, $baseline, $va); }
3955 else if ($this->kerning && $this->useKerning) { $sub .= $this->_kern($txt2, '', $aix, ($this->x+$dx), ($this->y+$baseline+$va)); }
3956 else {
3957 if (!$this->usingCoreFont) {
3958 $txt2 = $this->UTF8ToUTF16BE($txt2, false);
3959 }
3960 $txt2=$this->_escape($txt2);
3961 $sub .=sprintf('BT '.$aix.' (%s) Tj ET',($this->x+$dx)*_MPDFK,($this->h-($this->y+$baseline+$va))*_MPDFK,$txt2);
3962 }
3963 }
3964 }
3965 // UNDERLINE
3966 if($this->U) {
3967 $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
3968 if($this->FillColor!=$c) { $sub .= ' '.$c.' '; }
3969 if (isset($this->CurrentFont['up'])) { $up=$this->CurrentFont['up']; }
3970 else { $up = -100; }
3971 $adjusty = (-$up/1000* $this->FontSize);
3972 if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
3973 else { $ut = 60/1000* $this->FontSize; }
3974 $olw = $this->LineWidth;
3975 $sub .=' '.(sprintf(' %.3F w 0 j 0 J ',$ut*_MPDFK));
3976 $sub .=' '.$this->_dounderline($this->x+$dx,$this->y+$baseline+$va+$adjusty,$txt);
3977 $sub .=' '.(sprintf(' %.3F w 2 j 2 J ',$olw*_MPDFK));
3978 if($this->FillColor!=$c) { $sub .= ' '.$this->FillColor.' '; }
3979 }
3980
3981 // STRIKETHROUGH
3982 if($this->strike) {
3983 $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
3984 if($this->FillColor!=$c) { $sub .= ' '.$c.' '; }
3985 //Superscript and Subscript Y coordinate adjustment (now for striked-through texts)
3986 if (isset($this->CurrentFont['desc']['CapHeight'])) { $ch=$this->CurrentFont['desc']['CapHeight']; }
3987 else { $ch = 700; }
3988 $adjusty = (-$ch/1000* $this->FontSize) * 0.35;
3989 if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
3990 else { $ut = 60/1000* $this->FontSize; }
3991 $olw = $this->LineWidth;
3992 $sub .=' '.(sprintf(' %.3F w 0 j 0 J ',$ut*_MPDFK));
3993 $sub .=' '.$this->_dounderline($this->x+$dx,$this->y+$baseline+$va+$adjusty,$txt);
3994 $sub .=' '.(sprintf(' %.3F w 2 j 2 J ',$olw*_MPDFK));
3995 if($this->FillColor!=$c) { $sub .= ' '.$this->FillColor.' '; }
3996 }
3997
3998 // TEXT SHADOW
3999 if ($this->textshadow) { // First to process is last in CSS comma separated shadows
4000 foreach($this->textshadow AS $ts) {
4001 $s .= ' q ';
4002 $s .= $this->SetTColor($ts['col'], true)."\n";
4003 if ($ts['col']{0}==5 && ord($ts['col']{4})<100) { // RGBa
4004 $s .= $this->SetAlpha(ord($ts['col']{4})/100, 'Normal', true, 'F')."\n";
4005 }
4006 else if ($ts['col']{0}==6 && ord($ts['col']{5})<100) { // CMYKa
4007 $s .= $this->SetAlpha(ord($ts['col']{5})/100, 'Normal', true, 'F')."\n";
4008 }
4009 else if ($ts['col']{0}==1 && $ts['col']{2}==1 && ord($ts['col']{3})<100) { // Gray
4010 $s .= $this->SetAlpha(ord($ts['col']{3})/100, 'Normal', true, 'F')."\n";
4011 }
4012 $s .= sprintf(' 1 0 0 1 %.4F %.4F cm', $ts['x']*_MPDFK, -$ts['y']*_MPDFK)."\n";
4013 $s .= $sub;
4014 $s .= ' Q ';
4015 }
4016 }
4017
4018 $s .= $sub;
4019
4020 // COLOR
4021 if($this->ColorFlag) $s .=' Q';
4022
4023 // LINK
4024 if($link!='') {
4025 $this->Link($this->x,$boxtop,$w,$boxheight,$link);
4026 }
4027 }
4028 if($s) $this->_out($s);
4029
4030 // WORD SPACING
4031 if ($this->ws && !$this->usingCoreFont) {
4032 $this->_out(sprintf('BT %.3F Tc ET',$this->charspacing));
4033 }
4034 $this->lasth=$h;
4035 if( strpos($txt,"\n") !== false) $ln=1; // cell recognizes \n from <BR> tag
4036 if($ln>0)
4037 {
4038 //Go to next line
4039 $this->y += $h;
4040 if($ln==1) {
4041 //Move to next line
4042 if ($currentx != 0) { $this->x=$currentx; }
4043 else { $this->x=$this->lMargin; }
4044 }
4045 }
4046 else $this->x+=$w;
4047
4048
4049}
4050
4051
4052function _kern($txt, $mode, $aix, $x, $y) {
4053 if ($mode == 'MBTw') { // Multibyte requiring word spacing
4054 $space = ' ';
4055 //Convert string to UTF-16BE without BOM
4056 $space= $this->UTF8ToUTF16BE($space , false);
4057 $space=$this->_escape($space );
4058 $s = sprintf(' BT '.$aix,$x*_MPDFK,($this->h-$y)*_MPDFK);
4059 $t = explode(' ',$txt);
4060 for($i=0;$i<count($t);$i++) {
4061 $tx = $t[$i];
4062
4063 $tj = '(';
4064 $unicode = $this->UTF8StringToArray($tx);
4065 for($ti=0;$ti<count($unicode);$ti++) {
4066 if ($ti > 0 && isset($this->CurrentFont['kerninfo'][$unicode[($ti-1)]][$unicode[$ti]])) {
4067 $kern = -$this->CurrentFont['kerninfo'][$unicode[($ti-1)]][$unicode[$ti]];
4068 $tj .= sprintf(')%d(',$kern);
4069 }
4070 $tc = code2utf($unicode[$ti]);
4071 $tc = $this->UTF8ToUTF16BE($tc, false);
4072 $tj .= $this->_escape($tc);
4073 }
4074 $tj .= ')';
4075 $s.=sprintf(' %.3F Tc [%s] TJ',$this->charspacing,$tj);
4076
4077
4078 if (($i+1)<count($t)) {
4079 $s.=sprintf(' %.3F Tc (%s) Tj',$this->ws+$this->charspacing,$space);
4080 }
4081 }
4082 $s.=' ET ';
4083 }
4084 else if (!$this->usingCoreFont) {
4085 $s = '';
4086 $tj = '(';
4087 $unicode = $this->UTF8StringToArray($txt);
4088 for($i=0;$i<count($unicode);$i++) {
4089 if ($i > 0 && isset($this->CurrentFont['kerninfo'][$unicode[($i-1)]][$unicode[$i]])) {
4090 $kern = -$this->CurrentFont['kerninfo'][$unicode[($i-1)]][$unicode[$i]];
4091 $tj .= sprintf(')%d(',$kern);
4092 }
4093 $tx = code2utf($unicode[$i]);
4094 $tx = $this->UTF8ToUTF16BE($tx, false);
4095 $tj .= $this->_escape($tx);
4096 }
4097 $tj .= ')';
4098 $s.=sprintf(' BT '.$aix.' [%s] TJ ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$tj);
4099 }
4100 else { // CORE Font
4101 $s = '';
4102 $tj = '(';
4103 $l = strlen($txt);
4104 for($i=0;$i<$l;$i++) {
4105 if ($i > 0 && isset($this->CurrentFont['kerninfo'][$txt[($i-1)]][$txt[$i]])) {
4106 $kern = -$this->CurrentFont['kerninfo'][$txt[($i-1)]][$txt[$i]];
4107 $tj .= sprintf(')%d(',$kern);
4108 }
4109 $tj .= $this->_escape($txt[$i]);
4110 }
4111 $tj .= ')';
4112 $s.=sprintf(' BT '.$aix.' [%s] TJ ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$tj);
4113 }
4114
4115 return $s;
4116}
4117
4118
4119function _smallCaps($txt, $mode, $aix, $dx, $k, $baseline, $va) {
4120 $upp = false;
4121 $str = array();
4122 $bits = array();
4123 if (!$this->usingCoreFont) {
4124 $unicode = $this->UTF8StringToArray($txt);
4125 foreach($unicode as $char) {
4126 if ($this->ws && $char == 32) { // space
4127 if (count($str)) { $bits[] = array($upp, $str, false); }
4128 $bits[] = array(false, array(32), true);
4129 $str = array();
4130 $upp = false;
4131 }
4132 else if (isset($this->upperCase[$char])) {
4133 if (!$upp) {
4134 if (count($str)) { $bits[] = array($upp, $str, false); }
4135 $str = array();
4136 }
4137 $str[] = $this->upperCase[$char];
4138 if ((!isset($this->CurrentFont['sip']) || !$this->CurrentFont['sip']) && (!isset($this->CurrentFont['smp']) || !$this->CurrentFont['smp'])) {
4139 $this->CurrentFont['subset'][$this->upperCase[$char]] = $this->upperCase[$char];
4140 }
4141 $upp = true;
4142 }
4143 else {
4144 if ($upp) {
4145 if (count($str)) { $bits[] = array($upp, $str, false); }
4146 $str = array();
4147 }
4148 $str[] = $char;
4149 $upp = false;
4150 }
4151 }
4152 }
4153 else {
4154 for($i=0;$i<strlen($txt);$i++) {
4155 if (isset($this->upperCase[ord($txt[$i])]) && $this->upperCase[ord($txt[$i])] < 256) {
4156 if (!$upp) {
4157 if (count($str)) { $bits[] = array($upp, $str, false); }
4158 $str = array();
4159 }
4160 $str[] = $this->upperCase[ord($txt[$i])];
4161 $upp = true;
4162 }
4163 else {
4164 if ($upp) {
4165 if (count($str)) { $bits[] = array($upp, $str, false); }
4166 $str = array();
4167 }
4168 $str[] = ord($txt[$i]);
4169 $upp = false;
4170 }
4171 }
4172 }
4173 if (count($str)) { $bits[] = array($upp, $str, false); }
4174
4175 $fid = $this->CurrentFont['i'];
4176
4177 $s=sprintf(' BT '.$aix,($this->x+$dx)*$k,($this->h-($this->y+$baseline+$va))*$k);
4178 foreach($bits AS $b) {
4179 if ($b[0]) { $upp = true; }
4180 else { $upp = false; }
4181
4182 $size = count ($b[1]);
4183 $txt = '';
4184 for ($i = 0; $i < $size; $i++) {
4185 $txt .= code2utf($b[1][$i]);
4186 }
4187 if ($this->usingCoreFont) {
4188 $txt = utf8_decode($txt);
4189 }
4190 if ($mode == 'SIPSMP') {
4191 $txt = $this->UTF8toSubset($txt);
4192 }
4193 else {
4194 if (!$this->usingCoreFont) {
4195 $txt = $this->UTF8ToUTF16BE($txt, false);
4196 }
4197 $txt=$this->_escape($txt);
4198 $txt = '('.$txt.')';
4199 }
4200 if ($b[2]) { // space
4201 $s.=sprintf(' /F%d %.3F Tf %d Tz', $fid, $this->FontSizePt, 100);
4202 $s.=sprintf(' %.3F Tc', ($this->charspacing+$this->ws));
4203 $s.=sprintf(' %s Tj', $txt);
4204 }
4205 else if ($upp) {
4206 $s.=sprintf(' /F%d %.3F Tf', $fid, $this->FontSizePt*$this->smCapsScale);
4207 $s.=sprintf(' %d Tz', $this->smCapsStretch);
4208 $s.=sprintf(' %.3F Tc', ($this->charspacing*100/$this->smCapsStretch));
4209 $s.=sprintf(' %s Tj', $txt);
4210 }
4211 else {
4212 $s.=sprintf(' /F%d %.3F Tf %d Tz', $fid, $this->FontSizePt, 100);
4213 $s.=sprintf(' %.3F Tc', ($this->charspacing));
4214 $s.=sprintf(' %s Tj', $txt);
4215 }
4216 }
4217 $s.=' ET ';
4218 return $s;
4219}
4220
4221
4222function MultiCell($w,$h,$txt,$border=0,$align='',$fill=0,$link='',$directionality='ltr',$encoded=false)
4223{
4224 // Parameter (pre-)encoded - When called internally from ToC or textarea: mb_encoding already done - but not reverse RTL/Indic
4225 if (!$encoded) {
4226 $txt = $this->purify_utf8_text($txt);
4227 if ($this->text_input_as_HTML) {
4228 $txt = $this->all_entities_to_utf8($txt);
4229 }
4230 if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
4231 // Font-specific ligature substitution for Indic fonts
4232 else if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) { // *INDIC*
4233 $this->ConvertIndic($tmp); // *INDIC*
4234 } // *INDIC*
4235 if (preg_match("/([".$this->pregRTLchars."])/u", $txt)) { $this->biDirectional = true; } // *RTL*
4236 }
4237 if (!$align) { $align = $this->defaultAlign; }
4238
4239 //Output text with automatic or explicit line breaks
4240 $cw=&$this->CurrentFont['cw'];
4241 if($w==0) $w=$this->w-$this->rMargin-$this->x;
4242
4243 $wmax = ($w - ($this->cMarginL+$this->cMarginR));
4244 if ($this->usingCoreFont) {
4245 $s=str_replace("\r",'',$txt);
4246 $nb=strlen($s);
4247 while($nb>0 and $s[$nb-1]=="\n") $nb--;
4248 }
4249 else {
4250 $s=str_replace("\r",'',$txt);
4251 $nb=mb_strlen($s, $this->mb_enc );
4252 while($nb>0 and mb_substr($s,$nb-1,1,$this->mb_enc )=="\n") $nb--;
4253 }
4254 $b=0;
4255 if($border) {
4256 if($border==1) {
4257 $border='LTRB';
4258 $b='LRT';
4259 $b2='LR';
4260 }
4261 else {
4262 $b2='';
4263 if(is_int(strpos($border,'L'))) $b2.='L';
4264 if(is_int(strpos($border,'R'))) $b2.='R';
4265 $b=is_int(strpos($border,'T')) ? $b2.'T' : $b2;
4266 }
4267 }
4268 $sep=-1;
4269 $i=0;
4270 $j=0;
4271 $l=0;
4272 $ns=0;
4273 $nl=1;
4274
4275
4276
4277 if (!$this->usingCoreFont) {
4278 $checkCursive=false;
4279 if ($this->biDirectional) { $checkCursive=true; }
4280 else if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) { $checkCursive=true; } // *INDIC*
4281 while($i<$nb) {
4282 //Get next character
4283 $c = mb_substr($s,$i,1,$this->mb_enc );
4284 if($c == "\n") {
4285 //Explicit line break
4286 // WORD SPACING
4287 $this->ResetSpacing();
4288 $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mb_enc));
4289 // DIRECTIONALITY
4290 $this->magic_reverse_dir($tmp, true, $directionality); // *RTL*
4291
4292 $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
4293 $i++;
4294 $sep=-1;
4295 $j=$i;
4296 $l=0;
4297 $ns=0;
4298 $nl++;
4299 if($border and $nl==2) $b=$b2;
4300 continue;
4301 }
4302 if($c == " ") {
4303 $sep=$i;
4304 $ls=$l;
4305 $ns++;
4306 }
4307
4308 $l += $this->GetCharWidthNonCore($c);
4309
4310 if($l>$wmax) {
4311 //Automatic line break
4312 if($sep==-1) { // Only one word
4313 if($i==$j) $i++;
4314 // WORD SPACING
4315 $this->ResetSpacing();
4316 $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mb_enc));
4317 // DIRECTIONALITY
4318 $this->magic_reverse_dir($tmp, true, $directionality); // *RTL*
4319
4320 $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
4321 }
4322 else {
4323 $tmp = rtrim(mb_substr($s,$j,$sep-$j,$this->mb_enc));
4324 if($align=='J') {
4325 //////////////////////////////////////////
4326 // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
4327 // WORD SPACING UNICODE
4328 // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
4329 $tmp = str_replace(chr(194).chr(160),chr(32),$tmp );
4330 $len_ligne = $this->GetStringWidth($tmp );
4331 $nb_carac = mb_strlen( $tmp , $this->mb_enc ) ;
4332 $nb_spaces = mb_substr_count( $tmp ,' ', $this->mb_enc ) ;
4333
4334 $inclCursive=false;
4335 if ($checkCursive) {
4336 if (preg_match("/([".$this->pregRTLchars."])/u", $tmp)) { $inclCursive = true; } // *RTL*
4337 if (preg_match("/([".$this->pregHIchars.$this->pregBNchars.$this->pregPAchars."])/u", $tmp)) { $inclCursive = true; } // *INDIC*
4338 }
4339 list($charspacing,$ws) = $this->GetJspacing($nb_carac,$nb_spaces,((($wmax) - $len_ligne) * _MPDFK),$inclCursive);
4340 $this->SetSpacing($charspacing,$ws);
4341 //////////////////////////////////////////
4342 }
4343
4344 // DIRECTIONALITY
4345 $this->magic_reverse_dir($tmp, true, $directionality); // *RTL*
4346
4347 $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
4348 $i=$sep+1;
4349 }
4350 $sep=-1;
4351 $j=$i;
4352 $l=0;
4353 $ns=0;
4354 $nl++;
4355 if($border and $nl==2) $b=$b2;
4356 }
4357 else $i++;
4358 }
4359 //Last chunk
4360 // WORD SPACING
4361
4362 $this->ResetSpacing();
4363
4364 }
4365
4366
4367 else {
4368
4369 while($i<$nb) {
4370 //Get next character
4371 $c=$s[$i];
4372 if($c == "\n") {
4373 //Explicit line break
4374 // WORD SPACING
4375 $this->ResetSpacing();
4376 $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill,$link);
4377 $i++;
4378 $sep=-1;
4379 $j=$i;
4380 $l=0;
4381 $ns=0;
4382 $nl++;
4383 if($border and $nl==2) $b=$b2;
4384 continue;
4385 }
4386 if($c == " ") {
4387 $sep=$i;
4388 $ls=$l;
4389 $ns++;
4390 }
4391
4392 $l += $this->GetCharWidthCore($c);
4393 if($l>$wmax) {
4394 //Automatic line break
4395 if($sep==-1) {
4396 if($i==$j) $i++;
4397 // WORD SPACING
4398 $this->ResetSpacing();
4399 $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill,$link);
4400 }
4401 else {
4402 if($align=='J') {
4403 $tmp = rtrim(substr($s,$j,$sep-$j));
4404 //////////////////////////////////////////
4405 // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
4406 // WORD SPACING NON_UNICDOE/CJK
4407 // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
4408 $tmp = str_replace(chr(160),chr(32),$tmp);
4409 $len_ligne = $this->GetStringWidth($tmp );
4410 $nb_carac = strlen( $tmp ) ;
4411 $nb_spaces = substr_count( $tmp ,' ' ) ;
4412 list($charspacing,$ws) = $this->GetJspacing($nb_carac,$nb_spaces,((($wmax) - $len_ligne) * _MPDFK),false);
4413 $this->SetSpacing($charspacing,$ws);
4414 //////////////////////////////////////////
4415 }
4416 $this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill,$link);
4417 $i=$sep+1;
4418 }
4419 $sep=-1;
4420 $j=$i;
4421 $l=0;
4422 $ns=0;
4423 $nl++;
4424 if($border and $nl==2) $b=$b2;
4425 }
4426 else $i++;
4427 }
4428 //Last chunk
4429 // WORD SPACING
4430
4431 $this->ResetSpacing();
4432
4433 }
4434 //Last chunk
4435 if($border and is_int(strpos($border,'B'))) $b.='B';
4436 if (!$this->usingCoreFont) {
4437 $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mb_enc));
4438 // DIRECTIONALITY
4439 $this->magic_reverse_dir($tmp, true, $directionality); // *RTL*
4440 $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
4441 }
4442 else { $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill,$link); }
4443 $this->x=$this->lMargin;
4444}
4445
4446
4447/*-- DIRECTW --*/
4448function Write($h,$txt,$currentx=0,$link='',$directionality='ltr',$align='') {
4449 if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
4450 if (empty($this->directw)) { $this->directw = new directw($this); }
4451 $this->directw->Write($h,$txt,$currentx,$link,$directionality,$align);
4452}
4453/*-- END DIRECTW --*/
4454
4455
4456/*-- HTML-CSS --*/
4457function saveInlineProperties() {
4458 $saved = array();
4459 $saved[ 'family' ] = $this->FontFamily;
4460 $saved[ 'style' ] = $this->FontStyle;
4461 $saved[ 'sizePt' ] = $this->FontSizePt;
4462 $saved[ 'size' ] = $this->FontSize;
4463 $saved[ 'HREF' ] = $this->HREF;
4464 $saved[ 'underline' ] = $this->U;
4465 $saved[ 'smCaps' ] = $this->S;
4466 $saved[ 'strike' ] = $this->strike;
4467 $saved[ 'textshadow' ] = $this->textshadow;
4468 $saved[ 'SUP' ] = $this->SUP;
4469 $saved[ 'SUB' ] = $this->SUB;
4470 $saved[ 'linewidth' ] = $this->LineWidth;
4471 $saved[ 'drawcolor' ] = $this->DrawColor;
4472 $saved[ 'textparam' ] = $this->textparam;
4473 $saved[ 'toupper' ] = $this->toupper;
4474 $saved[ 'tolower' ] = $this->tolower;
4475 $saved[ 'capitalize' ] = $this->capitalize;
4476 $saved[ 'fontkerning' ] = $this->kerning;
4477 $saved[ 'lSpacingCSS' ] = $this->lSpacingCSS;
4478 $saved[ 'wSpacingCSS' ] = $this->wSpacingCSS;
4479 $saved[ 'I' ] = $this->I;
4480 $saved[ 'B' ] = $this->B;
4481 $saved[ 'colorarray' ] = $this->colorarray;
4482 $saved[ 'bgcolorarray' ] = $this->spanbgcolorarray;
4483 $saved[ 'border' ] = $this->spanborddet;
4484 $saved[ 'color' ] = $this->TextColor;
4485 $saved[ 'bgcolor' ] = $this->FillColor;
4486 $saved[ 'lang' ] = $this->currentLang;
4487 $saved[ 'display_off' ] = $this->inlineDisplayOff;
4488
4489 return $saved;
4490}
4491
4492function restoreInlineProperties( &$saved) {
4493 $FontFamily = $saved[ 'family' ];
4494 $this->FontStyle = $saved[ 'style' ];
4495 $this->FontSizePt = $saved[ 'sizePt' ];
4496 $this->FontSize = $saved[ 'size' ];
4497
4498 $this->currentLang = $saved['lang'];
4499 if ($this->useLang && !$this->usingCoreFont) {
4500 if ($this->currentLang != $this->default_lang && ((strlen($this->currentLang) == 5 && $this->currentLang != 'UTF-8') || strlen($this->currentLang ) == 2)) {
4501 list ($coreSuitable,$mpdf_pdf_unifonts) = GetLangOpts($this->currentLang, $this->useAdobeCJK);
4502 if ($mpdf_pdf_unifonts) { $this->RestrictUnicodeFonts($mpdf_pdf_unifonts); }
4503 else { $this->RestrictUnicodeFonts($this->default_available_fonts ); }
4504 }
4505 else {
4506 $this->RestrictUnicodeFonts($this->default_available_fonts );
4507 }
4508 }
4509
4510 $this->ColorFlag = ($this->FillColor != $this->TextColor); //Restore ColorFlag as well
4511
4512 $this->HREF = $saved[ 'HREF' ];
4513 $this->U = $saved[ 'underline' ];
4514 $this->S = $saved[ 'smCaps' ];
4515 $this->strike = $saved[ 'strike' ];
4516 $this->textshadow = $saved[ 'textshadow' ];
4517 $this->SUP = $saved[ 'SUP' ];
4518 $this->SUB = $saved[ 'SUB' ];
4519 $this->LineWidth = $saved[ 'linewidth' ];
4520 $this->DrawColor = $saved[ 'drawcolor' ];
4521 $this->textparam = $saved[ 'textparam' ];
4522 $this->inlineDisplayOff = $saved['display_off'];
4523
4524 $this->toupper = $saved[ 'toupper' ];
4525 $this->tolower = $saved[ 'tolower' ];
4526 $this->capitalize = $saved[ 'capitalize' ];
4527 $this->kerning = $saved[ 'fontkerning' ];
4528 $this->lSpacingCSS = $saved[ 'lSpacingCSS' ];
4529 if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
4530 $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
4531 }
4532 else { $this->fixedlSpacing = false; }
4533 $this->wSpacingCSS = $saved[ 'wSpacingCSS' ];
4534 if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') {
4535 $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
4536 }
4537 else { $this->minwSpacing = 0; }
4538
4539 $this->SetFont($FontFamily, $saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : ''),$saved[ 'sizePt' ],false);
4540
4541 $this->currentfontstyle = $saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : '');
4542 $this->currentfontsize = $saved[ 'sizePt' ];
4543 $this->SetStylesArray(array('S'=>$this->S, 'U'=>$this->U, 'B'=>$saved[ 'B' ], 'I'=>$saved[ 'I' ]));
4544
4545 $this->TextColor = $saved[ 'color' ];
4546 $this->FillColor = $saved[ 'bgcolor' ];
4547 $this->colorarray = $saved[ 'colorarray' ];
4548 $cor = $saved[ 'colorarray' ];
4549 if ($cor) $this->SetTColor($cor);
4550 $this->spanbgcolorarray = $saved[ 'bgcolorarray' ];
4551 $cor = $saved[ 'bgcolorarray' ];
4552 if ($cor) $this->SetFColor($cor);
4553 $this->spanborddet = $saved[ 'border' ];
4554}
4555
4556
4557
4558// Used when ColActive for tables - updated to return first block with background fill OR borders
4559function GetFirstBlockFill() {
4560 // Returns the first blocklevel that uses a bgcolor fill
4561 $startfill = 0;
4562 for ($i=1;$i<=$this->blklvl;$i++) {
4563 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'] ) {
4564 $startfill = $i;
4565 break;
4566 }
4567 }
4568 return $startfill;
4569}
4570
4571function SetBlockFill($blvl) {
4572 if ($this->blk[$blvl]['bgcolor']) {
4573 $this->SetFColor($this->blk[$blvl]['bgcolorarray']);
4574 return 1;
4575 }
4576 else {
4577 $this->SetFColor($this->ConvertColor(255));
4578 return 0;
4579 }
4580}
4581
4582
4583//-------------------------FLOWING BLOCK------------------------------------//
4584//The following functions were originally written by Damon Kohler //
4585//--------------------------------------------------------------------------//
4586
4587function saveFont() {
4588 $saved = array();
4589 $saved[ 'family' ] = $this->FontFamily;
4590 $saved[ 'style' ] = $this->FontStyle;
4591 $saved[ 'sizePt' ] = $this->FontSizePt;
4592 $saved[ 'size' ] = $this->FontSize;
4593 $saved[ 'curr' ] = &$this->CurrentFont;
4594 $saved[ 'color' ] = $this->TextColor;
4595 $saved[ 'spanbgcolor' ] = $this->spanbgcolor;
4596 $saved[ 'spanbgcolorarray' ] = $this->spanbgcolorarray;
4597 $saved[ 'bord' ] = $this->spanborder;
4598 $saved[ 'border' ] = $this->spanborddet;
4599 $saved[ 'HREF' ] = $this->HREF;
4600 $saved[ 'underline' ] = $this->U;
4601 $saved[ 'smCaps' ] = $this->S;
4602 $saved[ 'strike' ] = $this->strike;
4603 $saved[ 'textshadow' ] = $this->textshadow;
4604 $saved[ 'SUP' ] = $this->SUP;
4605 $saved[ 'SUB' ] = $this->SUB;
4606 $saved[ 'linewidth' ] = $this->LineWidth;
4607 $saved[ 'drawcolor' ] = $this->DrawColor;
4608 $saved[ 'textparam' ] = $this->textparam;
4609 $saved[ 'ReqFontStyle' ] = $this->ReqFontStyle;
4610 $saved[ 'fontkerning' ] = $this->kerning;
4611 $saved[ 'fixedlSpacing' ] = $this->fixedlSpacing;
4612 $saved[ 'minwSpacing' ] = $this->minwSpacing;
4613 return $saved;
4614}
4615
4616function restoreFont( &$saved, $write=true) {
4617 if (!isset($saved) || empty($saved)) return;
4618
4619 $this->FontFamily = $saved[ 'family' ];
4620 $this->FontStyle = $saved[ 'style' ];
4621 $this->FontSizePt = $saved[ 'sizePt' ];
4622 $this->FontSize = $saved[ 'size' ];
4623 $this->CurrentFont = &$saved[ 'curr' ];
4624 $this->TextColor = $saved[ 'color' ];
4625 $this->spanbgcolor = $saved[ 'spanbgcolor' ];
4626 $this->spanbgcolorarray = $saved[ 'spanbgcolorarray' ];
4627 $this->spanborder = $saved[ 'bord' ];
4628 $this->spanborddet = $saved[ 'border' ];
4629 $this->ColorFlag = ($this->FillColor != $this->TextColor); //Restore ColorFlag as well
4630 $this->HREF = $saved[ 'HREF' ];
4631 $this->U = $saved[ 'underline' ];
4632 $this->S = $saved[ 'smCaps' ];
4633 $this->kerning = $saved[ 'fontkerning' ];
4634 $this->fixedlSpacing = $saved[ 'fixedlSpacing' ];
4635 $this->minwSpacing = $saved[ 'minwSpacing' ];
4636 $this->strike = $saved[ 'strike' ];
4637 $this->textshadow = $saved[ 'textshadow' ];
4638 $this->SUP = $saved[ 'SUP' ];
4639 $this->SUB = $saved[ 'SUB' ];
4640 $this->LineWidth = $saved[ 'linewidth' ];
4641 $this->DrawColor = $saved[ 'drawcolor' ];
4642 $this->textparam = $saved[ 'textparam' ];
4643 if ($write) {
4644 $this->SetFont($saved[ 'family' ],$saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : ''),$saved[ 'sizePt' ],true,true); // force output
4645 $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
4646 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); }
4647 $this->pageoutput[$this->page]['Font'] = $fontout;
4648 }
4649 else
4650 $this->SetFont($saved[ 'family' ],$saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : ''),$saved[ 'sizePt' ]);
4651 $this->ReqFontStyle = $saved[ 'ReqFontStyle' ];
4652}
4653
4654function newFlowingBlock( $w, $h, $a = '', $is_table = false, $is_list = false, $blockstate = 0, $newblock=true, $blockdir='ltr')
4655{
4656 if (!$a) {
4657 if ($blockdir=='rtl') { $a = 'R'; }
4658 else { $a = 'L'; }
4659 }
4660 $this->flowingBlockAttr[ 'width' ] = ($w * _MPDFK);
4661 // line height in user units
4662 $this->flowingBlockAttr[ 'is_table' ] = $is_table;
4663 $this->flowingBlockAttr[ 'is_list' ] = $is_list;
4664 $this->flowingBlockAttr[ 'height' ] = $h;
4665 $this->flowingBlockAttr[ 'lineCount' ] = 0;
4666 $this->flowingBlockAttr[ 'align' ] = $a;
4667 $this->flowingBlockAttr[ 'font' ] = array();
4668 $this->flowingBlockAttr[ 'content' ] = array();
4669 $this->flowingBlockAttr[ 'contentB' ] = array();
4670 $this->flowingBlockAttr[ 'contentWidth' ] = 0;
4671 $this->flowingBlockAttr[ 'blockstate' ] = $blockstate;
4672
4673 $this->flowingBlockAttr[ 'newblock' ] = $newblock;
4674 $this->flowingBlockAttr[ 'valign' ] = 'M';
4675 $this->flowingBlockAttr['blockdir'] = $blockdir;
4676
4677}
4678
4679function finishFlowingBlock($endofblock=false, $next='') {
4680 $currentx = $this->x;
4681 //prints out the last chunk
4682 $is_table = $this->flowingBlockAttr[ 'is_table' ];
4683 $is_list = $this->flowingBlockAttr[ 'is_list' ];
4684 $maxWidth =& $this->flowingBlockAttr[ 'width' ];
4685 $lineHeight =& $this->flowingBlockAttr[ 'height' ];
4686 $align =& $this->flowingBlockAttr[ 'align' ];
4687 $content =& $this->flowingBlockAttr[ 'content' ];
4688 $contentB =& $this->flowingBlockAttr[ 'contentB' ];
4689 $font =& $this->flowingBlockAttr[ 'font' ];
4690 $contentWidth =& $this->flowingBlockAttr[ 'contentWidth' ];
4691 $lineCount =& $this->flowingBlockAttr[ 'lineCount' ];
4692 $valign =& $this->flowingBlockAttr[ 'valign' ];
4693 $blockstate = $this->flowingBlockAttr[ 'blockstate' ];
4694
4695 $newblock = $this->flowingBlockAttr[ 'newblock' ];
4696 $blockdir = $this->flowingBlockAttr['blockdir'];
4697
4698
4699 // *********** BLOCK BACKGROUND COLOR *****************//
4700 if ($this->blk[$this->blklvl]['bgcolor'] && !$is_table) {
4701 $fill = 0;
4702 }
4703 else {
4704 $this->SetFColor($this->ConvertColor(255));
4705 $fill = 0;
4706 }
4707
4708 $hanger = ''; // mPDF 5.6.40
4709
4710 // Always right trim!
4711 // Right trim content and adjust width if need to justify (later)
4712 if (isset($content[count($content)-1]) && preg_match('/[ ]+$/',$content[count($content)-1], $m)) {
4713 $strip = strlen($m[0]);
4714 $content[count($content)-1] = substr($content[count($content)-1],0,(strlen($content[count($content)-1])-$strip));
4715 $this->restoreFont( $font[ count($content)-1 ],false );
4716 $contentWidth -= $this->GetStringWidth($m[0]) * _MPDFK;
4717 }
4718
4719 // the amount of space taken up so far in user units
4720 $usedWidth = 0;
4721
4722 // COLS
4723 $oldcolumn = $this->CurrCol;
4724
4725 if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
4726
4727 // Print out each chunk
4728
4729/*-- TABLES --*/
4730 if ($is_table) {
4731 $ipaddingL = 0;
4732 $ipaddingR = 0;
4733 $paddingL = 0;
4734 $paddingR = 0;
4735 }
4736 else {
4737/*-- END TABLES --*/
4738 $ipaddingL = $this->blk[$this->blklvl]['padding_left'];
4739 $ipaddingR = $this->blk[$this->blklvl]['padding_right'];
4740 $paddingL = ($ipaddingL * _MPDFK);
4741 $paddingR = ($ipaddingR * _MPDFK);
4742 $this->cMarginL = $this->blk[$this->blklvl]['border_left']['w'];
4743 $this->cMarginR = $this->blk[$this->blklvl]['border_right']['w'];
4744
4745 // Added mPDF 3.0 Float DIV
4746 $fpaddingR = 0;
4747 $fpaddingL = 0;
4748/*-- CSS-FLOAT --*/
4749 if (count($this->floatDivs)) {
4750 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
4751 if ($r_exists) { $fpaddingR = $r_width; }
4752 if ($l_exists) { $fpaddingL = $l_width; }
4753 }
4754/*-- END CSS-FLOAT --*/
4755
4756 $usey = $this->y + 0.002;
4757 if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) {
4758 $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
4759 }
4760/*-- CSS-IMAGE-FLOAT --*/
4761 // If float exists at this level
4762 if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
4763 if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
4764/*-- END CSS-IMAGE-FLOAT --*/
4765 } // *TABLES*
4766
4767 // Set Current lineheight (correction factor)
4768 $lhfixed = false;
4769/*-- LISTS --*/
4770 if ($is_list) {
4771 if (preg_match('/([0-9.,]+)mm/',$this->list_lineheight[$this->listlvl][$this->listOcc],$am)) {
4772 $lhfixed = true;
4773 $def_fontsize = $this->InlineProperties['LISTITEM'][$this->listlvl][$this->listOcc][$this->listnum]['size'];
4774 $this->lineheight_correction = $am[1] / $def_fontsize ;
4775 }
4776 else {
4777 $this->lineheight_correction = $this->list_lineheight[$this->listlvl][$this->listOcc];
4778 }
4779 }
4780 else
4781/*-- END LISTS --*/
4782/*-- TABLES --*/
4783 if ($is_table) {
4784 if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight,$am)) {
4785 $lhfixed = true;
4786 $def_fontsize = $this->FontSize; // needs to be default font-size for block ****
4787 $this->lineheight_correction = $lineHeight / $def_fontsize ;
4788 }
4789 else {
4790 $this->lineheight_correction = $this->table_lineheight;
4791 }
4792 }
4793 else
4794/*-- END TABLES --*/
4795 if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
4796 if (preg_match('/([0-9.,]+)mm/',$this->blk[$this->blklvl]['line_height'],$am)) {
4797 $lhfixed = true;
4798 $def_fontsize = $this->blk[$this->blklvl]['InlineProperties']['size']; // needs to be default font-size for block ****
4799 $this->lineheight_correction = $am[1] / $def_fontsize ;
4800 }
4801 else {
4802 $this->lineheight_correction = $this->blk[$this->blklvl]['line_height'];
4803 }
4804 }
4805 else {
4806 $this->lineheight_correction = $this->normalLineheight;
4807 }
4808
4809 // correct lineheight to maximum fontsize
4810 if ($lhfixed) { $maxlineHeight = $this->lineheight; }
4811 else { $maxlineHeight = 0; }
4812 $this->forceExactLineheight = true;
4813 $maxfontsize = 0;
4814 // While we're at it, check if contains cursive text
4815 $checkCursive=false;
4816 if ($this->biDirectional) { $checkCursive=true; } // *RTL*
4817 foreach ( $content as $k => $chunk )
4818 {
4819 $this->restoreFont( $font[ $k ],false );
4820 if (!isset($this->objectbuffer[$k])) {
4821 // Soft Hyphens chr(173)
4822 if (!$this->usingCoreFont) {
4823 $content[$k] = $chunk = str_replace("\xc2\xad",'',$chunk );
4824 if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) { $checkCursive=true; } // *INDIC*
4825 }
4826 else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
4827 $content[$k] = $chunk = str_replace(chr(173),'',$chunk );
4828 }
4829 // Special case of sub/sup carried over on its own to last line
4830 if (($this->SUB || $this->SUP) && count($content)==1) { $actfs = $this->FontSize*100/55; } // 55% is font change for sub/sup
4831 else { $actfs = $this->FontSize; }
4832 if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$actfs * $this->lineheight_correction ); }
4833 if ($lhfixed && ($actfs > $def_fontsize || ($actfs > ($lineHeight * $this->lineheight_correction) && $is_list))) {
4834 $this->forceExactLineheight = false;
4835 }
4836 $maxfontsize = max($maxfontsize,$actfs);
4837 }
4838 }
4839
4840 if(isset($font[count($font)-1])) {
4841 $lastfontreqstyle = $font[count($font)-1]['ReqFontStyle'];
4842 $lastfontstyle = $font[count($font)-1]['style'];
4843 }
4844 else {
4845 $lastfontreqstyle=null;
4846 $lastfontstyle=null;
4847 }
4848 if ($blockdir == 'ltr' && strpos($lastfontreqstyle,"I") !== false && strpos($lastfontstyle,"I") === false) { // Artificial italic
4849 $lastitalic = $this->FontSize*0.15*_MPDFK;
4850 }
4851 else { $lastitalic = 0; }
4852
4853
4854/*-- LISTS --*/
4855 if ($is_list && is_array($this->bulletarray) && count($this->bulletarray)) {
4856 $actfs = $this->bulletarray['fontsize'];
4857 if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$actfs * $this->lineheight_correction ); }
4858 if ($lhfixed && $actfs > $def_fontsize) { $this->forceExactLineheight = false; }
4859 $maxfontsize = max($maxfontsize,$actfs);
4860 }
4861/*-- END LISTS --*/
4862
4863 // when every text item checked i.e. $maxfontsize is set properly
4864
4865 $af = 0; // Above font
4866 $bf = 0; // Below font
4867 $mta = 0; // Maximum top-aligned
4868 $mba = 0; // Maximum bottom-aligned
4869
4870 foreach ( $content as $k => $chunk )
4871 {
4872 if (isset($this->objectbuffer[$k])) {
4873 $oh = $this->objectbuffer[$k]['OUTER-HEIGHT'];
4874 $va = $this->objectbuffer[$k]['vertical-align']; // = $objattr['vertical-align'] = set as M,T,B,S
4875 if ($lhfixed && $oh > $def_fontsize) { $this->forceExactLineheight = false; }
4876
4877 if ($va == 'BS') { // (BASELINE default)
4878 $af = max($af, ($oh - ($maxfontsize * (0.5 + $this->baselineC))));
4879 }
4880 else if ($va == 'M') {
4881 $af = max($af, ($oh - $maxfontsize)/2);
4882 $bf = max($bf, ($oh - $maxfontsize)/2);
4883 }
4884 else if ($va == 'TT') {
4885 $bf = max($bf, ($oh - $maxfontsize));
4886 }
4887 else if ($va == 'TB') {
4888 $af = max($af, ($oh - $maxfontsize));
4889 }
4890 else if ($va == 'T') {
4891 $mta = max($mta, $oh);
4892 }
4893 else if ($va == 'B') {
4894 $mba = max($mba, $oh);
4895 }
4896 }
4897 }
4898 if ((!$lhfixed || !$this->forceExactLineheight) && ($af > (($maxlineHeight - $maxfontsize)/2) || $bf > (($maxlineHeight - $maxfontsize)/2))) {
4899 $maxlineHeight = $maxfontsize + $af + $bf;
4900 }
4901 else if (!$lhfixed) { $af = $bf = ($maxlineHeight - $maxfontsize)/2; }
4902 if ($mta > $maxlineHeight) {
4903 $bf += ($mta - $maxlineHeight);
4904 $maxlineHeight = $mta;
4905 }
4906 if ($mba > $maxlineHeight) {
4907 $af += ($mba - $maxlineHeight);
4908 $maxlineHeight = $mba;
4909 }
4910
4911 $lineHeight = $maxlineHeight;
4912 // If NOT images, and maxfontsize NOT > lineHeight - this value determines text baseline positioning
4913 if ($lhfixed && $af==0 && $bf==0 && $maxfontsize<=($def_fontsize * $this->lineheight_correction * 0.8 )) {
4914 $this->linemaxfontsize = $def_fontsize;
4915 }
4916 else { $this->linemaxfontsize = $maxfontsize; }
4917
4918 // Get PAGEBREAK TO TEST for height including the bottom border/padding
4919 $check_h = max($this->divheight,$lineHeight);
4920
4921 // This fixes a proven bug...
4922 if ($endofblock && $newblock && $blockstate==0 && !$content) { $check_h = 0; }
4923 // but ? needs to fix potentially more widespread...
4924 // if (!$content) { $check_h = 0; }
4925
4926 if ($this->blklvl > 0 && !$is_table) {
4927 if ($endofblock && $blockstate > 1) {
4928 if ($this->blk[$this->blklvl]['page_break_after_avoid']) { $check_h += $lineHeight; }
4929 $check_h += ($this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w']);
4930 }
4931 // mPDF 5.4.03
4932 if (($newblock && ($blockstate==1 || $blockstate==3) && $lineCount == 0) || ($endofblock && $blockstate ==3 && $lineCount == 0)) {
4933 $check_h += ($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['border_top']['w']);
4934 }
4935 }
4936
4937 // Force PAGE break if column height cannot take check-height
4938 if ($this->ColActive && $check_h > ($this->PageBreakTrigger - $this->y0)) {
4939 $this->SetCol($this->NbCol-1);
4940 }
4941
4942 // mPDF 5.4.04
4943 // Avoid just border/background-color moved on to next page
4944 if ($endofblock && $blockstate > 1 && !$content) { $buff = $this->margBuffer; }
4945 else { $buff = 0; }
4946
4947
4948 // PAGEBREAK
4949 // mPDF 5.4.04
4950 if(!$is_table && ($this->y+$check_h) > ($this->PageBreakTrigger + $buff) and !$this->InFooter and $this->AcceptPageBreak()) {
4951 $bak_x=$this->x;//Current X position
4952 // WORD SPACING
4953 $ws=$this->ws;//Word Spacing
4954 $charspacing=$this->charspacing;//Character Spacing
4955 $this->ResetSpacing();
4956
4957 $this->AddPage($this->CurOrientation);
4958
4959 $this->x=$bak_x;
4960 // Added to correct for OddEven Margins
4961 $currentx += $this->MarginCorrection;
4962 $this->x += $this->MarginCorrection;
4963
4964 // WORD SPACING
4965 $this->SetSpacing($charspacing,$ws);
4966 }
4967
4968 if ($this->keep_block_together && !$is_table && $this->kt_p00 < $this->page && ($this->y+$check_h) > $this->kt_y00) {
4969 $this->printdivbuffer();
4970 $this->keep_block_together = 0;
4971 }
4972
4973/*-- COLUMNS --*/
4974 // COLS
4975 // COLUMN CHANGE
4976 if ($this->CurrCol != $oldcolumn) {
4977 $currentx += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
4978 $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
4979 $oldcolumn = $this->CurrCol;
4980 }
4981
4982
4983 if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }
4984/*-- END COLUMNS --*/
4985
4986 // TOP MARGIN
4987 if ($newblock && ($blockstate==1 || $blockstate==3) && ($this->blk[$this->blklvl]['margin_top']) && $lineCount == 0 && !$is_table && !$is_list) {
4988 $this->DivLn($this->blk[$this->blklvl]['margin_top'],$this->blklvl-1,true,$this->blk[$this->blklvl]['margin_collapse']);
4989 if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
4990 }
4991
4992 if ($newblock && ($blockstate==1 || $blockstate==3) && $lineCount == 0 && !$is_table && !$is_list) {
4993 $this->blk[$this->blklvl]['y0'] = $this->y;
4994 $this->blk[$this->blklvl]['startpage'] = $this->page;
4995 if ($this->blk[$this->blklvl]['float']) { $this->blk[$this->blklvl]['float_start_y'] = $this->y; } // mPDF 5.6.63
4996 if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
4997 }
4998
4999 // ADDED for Paragraph_indent
5000 $WidthCorrection = 0;
5001 if (($newblock) && ($blockstate==1 || $blockstate==3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && (!$is_list) && ($align != 'C')) {
5002 $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
5003 $WidthCorrection = ($ti*_MPDFK);
5004 }
5005
5006
5007 // PADDING and BORDER spacing/fill
5008 if (($newblock) && ($blockstate==1 || $blockstate==3) && (($this->blk[$this->blklvl]['padding_top']) || ($this->blk[$this->blklvl]['border_top'])) && ($lineCount == 0) && (!$is_table) && (!$is_list)) {
5009 // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
5010 $this->DivLn($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'],-3,true,false,1);
5011 if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
5012 $this->x = $currentx;
5013 }
5014
5015
5016 // Added mPDF 3.0 Float DIV
5017 $fpaddingR = 0;
5018 $fpaddingL = 0;
5019/*-- CSS-FLOAT --*/
5020 if (count($this->floatDivs)) {
5021 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
5022 if ($r_exists) { $fpaddingR = $r_width; }
5023 if ($l_exists) { $fpaddingL = $l_width; }
5024 }
5025/*-- END CSS-FLOAT --*/
5026
5027 $usey = $this->y + 0.002;
5028 if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) {
5029 $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
5030 }
5031/*-- CSS-IMAGE-FLOAT --*/
5032 // If float exists at this level
5033 if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
5034 if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
5035/*-- END CSS-IMAGE-FLOAT --*/
5036
5037 if ($content) {
5038
5039 // In FinishFlowing Block no lines are justified as it is always last line
5040 // but if CJKorphan has allowed content width to go over max width, use J charspacing to compress line
5041 // JUSTIFICATION J - NOT!
5042 $nb_carac = 0;
5043 $nb_spaces = 0;
5044 $jcharspacing = 0;
5045 $jws = 0;
5046 $inclCursive=false;
5047 $dottab = false; // mPDF 5.6.19
5048 foreach ( $content as $k => $chunk ) {
5049 if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) {
5050 if ($this->usingCoreFont) {
5051 $chunk = str_replace(chr(160),chr(32),$chunk );
5052 }
5053 else {
5054 $chunk = str_replace(chr(194).chr(160),chr(32),$chunk );
5055 }
5056 $nb_carac += mb_strlen( $chunk, $this->mb_enc );
5057 $nb_spaces += mb_substr_count( $chunk,' ', $this->mb_enc );
5058 if ($checkCursive) {
5059 if (preg_match("/([".$this->pregRTLchars."])/u", $chunk)) { $inclCursive = true; } // *RTL*
5060 if (preg_match("/([".$this->pregHIchars.$this->pregBNchars.$this->pregPAchars."])/u", $chunk)) { $inclCursive = true; } // *INDIC*
5061 }
5062 }
5063 else if ($this->objectbuffer[$k]['type']=='dottab') { $dottab = $this->objectbuffer[$k]['outdent']; } // mPDF 5.6.19
5064 }
5065 // 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)
5066 // If "orphans" in fact is just a final space - ignore this
5067 // mPDF 5.6.40
5068 $lastchar = mb_substr($content[(count($content)-1)],mb_strlen($content[(count($content)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
5069 if (preg_match("/[".$this->CJKoverflow."]/u", $lastchar)) { $CJKoverflow = true; }
5070 else {$CJKoverflow = false; }
5071 if ((((($contentWidth + $lastitalic) > $maxWidth) && ($content[count($content)-1] != ' ') ) ||
5072 (!$endofblock && $align=='J' && ($next=='image' || $next=='select' || $next=='input' || $next=='textarea' || ($next=='br' && $this->justifyB4br)))) && !($CJKoverflow && $this->allowCJKoverflow) ) { // mPDF 5.6.40
5073 // WORD SPACING
5074 list($jcharspacing,$jws) = $this->GetJspacing($nb_carac,$nb_spaces,($maxWidth-$lastitalic-$contentWidth-$WidthCorrection-(($this->cMarginL+$this->cMarginR)*_MPDFK)-($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) )),$inclCursive);
5075 }
5076/*-- CJK-FONTS --*/
5077 // mPDF 5.6.40
5078 else if ($this->checkCJK && $align=='J' && $CJKoverflow && $this->allowCJKoverflow && $this->CJKforceend) {
5079 // force-end overhang
5080 $hanger = mb_substr($content[count($content)-1],mb_strlen($content[count($content)-1],$this->mb_enc)-1,1,$this->mb_enc );
5081 if (preg_match("/[".$this->CJKoverflow."]/u", $hanger)) {
5082 $content[count($content)-1] = mb_substr($content[count($content)-1],0,mb_strlen($content[count($content)-1],$this->mb_enc)-1,$this->mb_enc );
5083 $this->restoreFont( $font[ count($content)-1 ],false );
5084 $contentWidth -= $this->GetStringWidth($hanger) * _MPDFK;
5085 $nb_carac -= 1;
5086 list($jcharspacing,$jws) = $this->GetJspacing($nb_carac,$nb_spaces,($maxWidth-$lastitalic-$contentWidth-$WidthCorrection-(($this->cMarginL+$this->cMarginR)*_MPDFK)-($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) )),$inclCursive);
5087 }
5088 }
5089/*-- END CJK-FONTS --*/
5090
5091 // Check if will fit at word/char spacing of previous line - if so continue it
5092 // but only allow a maximum of $this->jSmaxWordLast and $this->jSmaxCharLast
5093 else if ($contentWidth < ($maxWidth - $lastitalic-$WidthCorrection - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK))) && !$this->fixedlSpacing) {
5094 if ($this->ws > $this->jSmaxWordLast) {
5095 $jws = $this->jSmaxWordLast;
5096 }
5097 if ($this->charspacing > $this->jSmaxCharLast) {
5098 $jcharspacing = $this->jSmaxCharLast;
5099 }
5100 $check = $maxWidth - $lastitalic-$WidthCorrection - $contentWidth - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) ) - ( $jcharspacing * $nb_carac) - ( $jws * $nb_spaces);
5101 if ($check <= 0) {
5102 $jcharspacing = 0;
5103 $jws = 0;
5104 }
5105 }
5106
5107 $empty = $maxWidth - $lastitalic-$WidthCorrection - $contentWidth - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
5108
5109 $empty -= ($jcharspacing * $nb_carac);
5110 $empty -= ($jws * $nb_spaces);
5111
5112 $empty /= _MPDFK;
5113
5114 if (!$is_table) {
5115 $this->maxPosR = max($this->maxPosR , ($this->w - $this->rMargin - $this->blk[$this->blklvl]['outer_right_margin'] - $empty));
5116 $this->maxPosL = min($this->maxPosL , ($this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $empty));
5117 }
5118
5119 $arraysize = count($content);
5120
5121 $margins = ($this->cMarginL+$this->cMarginR) + ($ipaddingL+$ipaddingR + $fpaddingR + $fpaddingR );
5122
5123 if (!$is_table) { $this->DivLn($lineHeight,$this->blklvl,false); } // false -> don't advance y
5124
5125 // DIRECTIONALITY RTL
5126 $all_rtl = false;
5127 $contains_rtl = false;
5128/*-- RTL --*/
5129 if ($blockdir == 'rtl' || $this->biDirectional) {
5130 $all_rtl = true;
5131 foreach ( $content as $k => $chunk ) {
5132 $reversed = $this->magic_reverse_dir($chunk, false, $blockdir);
5133 if ($reversed > 0) { $contains_rtl = true; }
5134 if ($reversed < 2) { $all_rtl = false; }
5135 $content[$k] = $chunk;
5136 }
5137 if (($blockdir =='rtl' && $contains_rtl) || $all_rtl) {
5138 $content = array_reverse($content,false);
5139 $contentB = array_reverse($contentB,false);
5140 }
5141 }
5142/*-- END RTL --*/
5143
5144 $this->x = $currentx + $this->cMarginL + $ipaddingL + $fpaddingL;
5145 if ($dottab !== false && $blockdir=='rtl') { $this->x -= $dottab; } // mPDF 5.6.19
5146 else if ($align == 'R') { $this->x += $empty; }
5147 else if ($align == 'J' && $blockdir == 'rtl') { $this->x += $empty; }
5148 else if ($align == 'C') { $this->x += ($empty / 2); }
5149
5150 // Paragraph INDENT
5151 $WidthCorrection = 0;
5152 if (($newblock) && ($blockstate==1 || $blockstate==3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && (!$is_list) && ($align !='C')) {
5153 $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
5154 $this->x += $ti;
5155 }
5156
5157
5158 foreach ( $content as $k => $chunk )
5159 {
5160
5161 // FOR IMAGES
5162 if ((($blockdir == 'rtl') && ($contains_rtl )) || $all_rtl ) { $dirk = $arraysize-1 - $k; } else { $dirk = $k; }
5163
5164 $va = 'M'; // default for text
5165 if (isset($this->objectbuffer[$dirk]) && $this->objectbuffer[$dirk]) {
5166 $xadj = $this->x - $this->objectbuffer[$dirk]['OUTER-X'];
5167 $this->objectbuffer[$dirk]['OUTER-X'] += $xadj;
5168 $this->objectbuffer[$dirk]['BORDER-X'] += $xadj;
5169 $this->objectbuffer[$dirk]['INNER-X'] += $xadj;
5170 $va = $this->objectbuffer[$dirk]['vertical-align'];
5171 $yadj = $this->y - $this->objectbuffer[$dirk]['OUTER-Y'];
5172 if ($va == 'BS') {
5173 $yadj += $af + ($this->linemaxfontsize * (0.5 + $this->baselineC)) - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
5174 }
5175 else if ($va == 'M' || $va == '') {
5176 $yadj += $af + ($this->linemaxfontsize /2) - ($this->objectbuffer[$dirk]['OUTER-HEIGHT']/2);
5177 }
5178 else if ($va == 'TB') {
5179 $yadj += $af + $this->linemaxfontsize - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
5180 }
5181 else if ($va == 'TT') {
5182 $yadj += $af;
5183 }
5184 else if ($va == 'B') {
5185 $yadj += $af + $this->linemaxfontsize + $bf - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
5186 }
5187 else if ($va == 'T') {
5188 $yadj += 0;
5189 }
5190 $this->objectbuffer[$dirk]['OUTER-Y'] += $yadj;
5191 $this->objectbuffer[$dirk]['BORDER-Y'] += $yadj;
5192 $this->objectbuffer[$dirk]['INNER-Y'] += $yadj;
5193 }
5194
5195
5196 // DIRECTIONALITY RTL
5197 if ((($blockdir == 'rtl') && ($contains_rtl )) || $all_rtl ) { $this->restoreFont( $font[ $arraysize-1 - $k ] ); }
5198 else { $this->restoreFont( $font[ $k ] ); }
5199
5200 // mPDF 5.6.13 Decimal alignment - set in _tableWrite
5201 if ($is_table && substr($align,0,1)=='D' && $k==0 ) {
5202 $dp = $this->decimal_align[substr($align,0,2)];
5203 $s = preg_split('/'.preg_quote($dp,'/').'/', $content[0], 2); // ? needs to be /u if not core
5204 $s0 = $this->GetStringWidth($s[0], false);
5205 $this->x += ($this->decimal_offset - $s0);
5206 }
5207
5208 $this->SetSpacing(($this->fixedlSpacing*_MPDFK)+$jcharspacing,($this->fixedlSpacing+$this->minwSpacing)*_MPDFK+$jws);
5209 $this->fixedlSpacing = false;
5210 $this->minwSpacing = 0;
5211
5212 // mPDF 5.6.26
5213 $save_vis = $this->visibility;
5214 if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->textparam['visibility'] != $this->visibility) {
5215 $this->SetVisibility($this->textparam['visibility']);
5216 }
5217
5218 // *********** SPAN BACKGROUND COLOR ***************** //
5219 if (isset($this->spanbgcolor) && $this->spanbgcolor) {
5220 $cor = $this->spanbgcolorarray;
5221 $this->SetFColor($cor);
5222 $save_fill = $fill; $spanfill = 1; $fill = 1;
5223 }
5224 if (!empty($this->spanborddet)) {
5225 if (strpos($contentB[$k],'L')!==false && isset($this->spanborddet['L'])) $this->x += $this->spanborddet['L']['w'];
5226 if (strpos($contentB[$k],'L')===false) $this->spanborddet['L']['s'] = $this->spanborddet['L']['w'] = 0;
5227 if (strpos($contentB[$k],'R')===false) $this->spanborddet['R']['s'] = $this->spanborddet['R']['w'] = 0;
5228 }
5229 // WORD SPACING
5230 $stringWidth = $this->GetStringWidth($chunk ) + ( $this->charspacing * mb_strlen($chunk,$this->mb_enc ) / _MPDFK )
5231 + ( $this->ws * mb_substr_count($chunk,' ',$this->mb_enc ) / _MPDFK );
5232 if (isset($this->objectbuffer[$dirk])) {
5233 if ($this->objectbuffer[$dirk]['type']=='dottab') {
5234 $this->objectbuffer[$dirk]['OUTER-WIDTH'] +=$empty;
5235 $this->objectbuffer[$dirk]['OUTER-WIDTH'] +=$this->objectbuffer[$dirk]['outdent']; // mPDF 5.6.19
5236 }
5237 $stringWidth = $this->objectbuffer[$dirk]['OUTER-WIDTH'];
5238 }
5239
5240 if ($stringWidth==0) { $stringWidth = 0.000001; }
5241 if ($k == $arraysize-1) {
5242 // mPDF 5.6.40
5243 if ($this->checkCJK && $CJKoverflow && $align=='J' && $this->allowCJKoverflow && $hanger && $this->CJKforceend) {
5244 // force-end overhang
5245 $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true );
5246 $this->Cell( $this->GetStringWidth($hanger), $lineHeight, $hanger, '', 1, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true );
5247 }
5248 else {
5249 $this->Cell( $stringWidth, $lineHeight, $chunk, '', 1, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true );
5250 }
5251 }
5252 else $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, 0, 0,0,'M', $fill, $af, $bf, true );//first or middle part
5253
5254
5255 if (!empty($this->spanborddet)) {
5256 if (strpos($contentB[$k],'R')!==false && $k != $arraysize-1) $this->x += $this->spanborddet['R']['w'];
5257 }
5258 // *********** SPAN BACKGROUND COLOR OFF - RESET BLOCK BGCOLOR ***************** //
5259 if (isset($spanfill) && $spanfill) {
5260 $fill = $save_fill; $spanfill = 0;
5261 if ($fill) { $this->SetFColor($bcor); }
5262 }
5263 // mPDF 5.6.26
5264 if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->visibility != $save_vis) {
5265 $this->SetVisibility($save_vis);
5266 }
5267
5268 }
5269
5270 $this->printobjectbuffer($is_table, $blockdir);
5271
5272 $this->objectbuffer = array();
5273
5274 $this->ResetSpacing();
5275
5276/*-- LISTS --*/
5277 // LIST BULLETS/NUMBERS
5278 if ($is_list && is_array($this->bulletarray) && ($lineCount == 0) ) {
5279
5280 $savedFont = $this->saveFont();
5281
5282 $bull = $this->bulletarray;
5283 if (isset($bull['level']) && isset($bull['occur']) && isset($this->InlineProperties['LIST'][$bull['level']][$bull['occur']])) {
5284 $this->restoreInlineProperties($this->InlineProperties['LIST'][$bull['level']][$bull['occur']]);
5285 }
5286 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']]); }
5287 if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
5288 $this->bullet = true;
5289 $this->SetFont('czapfdingbats','',$this->FontSizePt/2.5);
5290 }
5291 else { $this->SetFont($this->FontFamily,$this->FontStyle,$this->FontSizePt,true,true); } // force output
5292 //Output bullet
5293 $this->x = $currentx;
5294 if (isset($bull['x'])) { $this->x += $bull['x']; }
5295 $this->y -= $lineHeight;
5296 if (isset($bull['col']) && $bull['col']) { $this->SetTColor($bull['col']); } // mPDF 5.6.67
5297
5298 if (isset($bull['txt'])) { $this->Cell($bull['w'], $lineHeight,$bull['txt'],'','',$bull['align'],0,'',0,-$this->cMarginL, -$this->cMarginR ); }
5299 if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
5300 $this->bullet = false;
5301 }
5302 $this->x = $currentx; // Reset
5303 $this->y += $lineHeight;
5304
5305 if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
5306
5307 $this->restoreFont( $savedFont );
5308 // $font = array( $savedFont );
5309
5310 $this->bulletarray = array(); // prevents repeat of bullet/number if <li>....<br />.....</li>
5311 }
5312/*-- END LISTS --*/
5313
5314
5315 } // END IF CONTENT
5316
5317/*-- CSS-IMAGE-FLOAT --*/
5318 // Update values if set to skipline
5319 if ($this->floatmargins) { $this->_advanceFloatMargins(); }
5320
5321
5322 if ($endofblock && $blockstate>1) {
5323 // If float exists at this level
5324 if (isset($this->floatmargins['R']['y1'])) { $fry1 = $this->floatmargins['R']['y1']; }
5325 else { $fry1 = 0; }
5326 if (isset($this->floatmargins['L']['y1'])) { $fly1 = $this->floatmargins['L']['y1']; }
5327 else { $fly1 = 0; }
5328 if ($this->y < $fry1 || $this->y < $fly1) {
5329 $drop = max($fry1,$fly1) - $this->y;
5330 $this->DivLn($drop);
5331 $this->x = $currentx;
5332 }
5333 }
5334/*-- END CSS-IMAGE-FLOAT --*/
5335
5336
5337 // PADDING and BORDER spacing/fill
5338 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)) {
5339 // If CSS height set, extend bottom - if on same page as block started, and CSS HEIGHT > actual height,
5340 // and does not force pagebreak
5341 $extra = 0;
5342 if ($this->blk[$this->blklvl]['css_set_height'] && $this->blk[$this->blklvl]['startpage']==$this->page) {
5343 // predicted height
5344 $h1 = ($this->y-$this->blk[$this->blklvl]['y0']) + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'];
5345 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; }
5346 if($this->y + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $extra > $this->PageBreakTrigger) {
5347 $extra = $this->PageBreakTrigger - ($this->y + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w']);
5348 }
5349 }
5350
5351 // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
5352 $this->DivLn($this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $extra,-3,true,false,2);
5353 $this->x = $currentx;
5354
5355 if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
5356
5357 }
5358
5359 // SET Bottom y1 of block (used for painting borders)
5360 if (($endofblock) && ($blockstate > 1) && (!$is_table) && (!$is_list)) {
5361 $this->blk[$this->blklvl]['y1'] = $this->y;
5362 }
5363
5364 // BOTTOM MARGIN
5365 if (($endofblock) && ($blockstate > 1) && ($this->blk[$this->blklvl]['margin_bottom']) && (!$is_table) && (!$is_list)) {
5366 if($this->y+$this->blk[$this->blklvl]['margin_bottom'] < $this->PageBreakTrigger and !$this->InFooter) {
5367 $this->DivLn($this->blk[$this->blklvl]['margin_bottom'],$this->blklvl-1,true,$this->blk[$this->blklvl]['margin_collapse']);
5368 if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
5369 }
5370 }
5371
5372 // Reset lineheight
5373 $lineHeight = $this->divheight;
5374}
5375
5376
5377
5378
5379
5380function printobjectbuffer($is_table=false, $blockdir=false) {
5381 if (!$blockdir) { $blockdir = $this->directionality; }
5382 if ($is_table && $this->shrin_k > 1) { $k = $this->shrin_k; }
5383 else { $k = 1; }
5384 $save_y = $this->y;
5385 $save_x = $this->x;
5386 $save_currentfontfamily = $this->FontFamily;
5387 $save_currentfontsize = $this->FontSizePt;
5388 $save_currentfontstyle = $this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
5389 if ($blockdir == 'rtl') { $rtlalign = 'R'; } else { $rtlalign = 'L'; }
5390 foreach ($this->objectbuffer AS $ib => $objattr) {
5391 if ($objattr['type'] == 'bookmark' || $objattr['type'] == 'indexentry' || $objattr['type'] == 'toc') {
5392 $x = $objattr['OUTER-X'];
5393 $y = $objattr['OUTER-Y'];
5394 $this->y = $y - $this->FontSize/2;
5395 $this->x = $x;
5396 if ($objattr['type'] == 'bookmark' ) { $this->Bookmark($objattr['CONTENT'],$objattr['bklevel'] ,$y - $this->FontSize); } // *BOOKMARKS*
5397 if ($objattr['type'] == 'indexentry') { $this->IndexEntry($objattr['CONTENT']); } // *INDEX*
5398 if ($objattr['type'] == 'toc') { $this->TOC_Entry($objattr['CONTENT'], $objattr['toclevel'], $objattr['toc_id']); } // *TOC*
5399 }
5400/*-- ANNOTATIONS --*/
5401 else if ($objattr['type'] == 'annot') {
5402 if ($objattr['POS-X']) { $x = $objattr['POS-X']; }
5403 else if ($this->annotMargin<>0) { $x = -$objattr['OUTER-X']; }
5404 else { $x = $objattr['OUTER-X']; }
5405 if ($objattr['POS-Y']) { $y = $objattr['POS-Y']; }
5406 else { $y = $objattr['OUTER-Y'] - $this->FontSize/2; }
5407 // Create a dummy entry in the _out/columnBuffer with position sensitive data,
5408 // linking $y-1 in the Columnbuffer with entry in $this->columnAnnots
5409 // and when columns are split in length will not break annotation from current line
5410 $this->y = $y-1;
5411 $this->x = $x-1;
5412 $this->Line($x-1,$y-1,$x-1,$y-1);
5413 $this->Annotation($objattr['CONTENT'], $x , $y , $objattr['ICON'], $objattr['AUTHOR'], $objattr['SUBJECT'], $objattr['OPACITY'], $objattr['COLOR'], $objattr['POPUP'], $objattr['FILE']);
5414 }
5415/*-- END ANNOTATIONS --*/
5416 else {
5417 $y = $objattr['OUTER-Y'];
5418 $x = $objattr['OUTER-X'];
5419 $w = $objattr['OUTER-WIDTH'];
5420 $h = $objattr['OUTER-HEIGHT'];
5421 if (isset($objattr['text'])) { $texto = $objattr['text']; }
5422 $this->y = $y;
5423 $this->x = $x;
5424 if (isset($objattr['fontfamily'])) { $this->SetFont($objattr['fontfamily'],'',$objattr['fontsize'] ); }
5425 }
5426
5427 // HR
5428 if ($objattr['type'] == 'hr') {
5429 $this->SetDColor($objattr['color']);
5430 switch($objattr['align']) {
5431 case 'C':
5432 $empty = $objattr['OUTER-WIDTH'] - $objattr['INNER-WIDTH'];
5433 $empty /= 2;
5434 $x += $empty;
5435 break;
5436 case 'R':
5437 $empty = $objattr['OUTER-WIDTH'] - $objattr['INNER-WIDTH'];
5438 $x += $empty;
5439 break;
5440 }
5441 $oldlinewidth = $this->LineWidth;
5442 $this->SetLineWidth($objattr['linewidth']/$k );
5443 $this->y += ($objattr['linewidth']/2) + $objattr['margin_top']/$k;
5444 $this->Line($x,$this->y,$x+$objattr['INNER-WIDTH'],$this->y);
5445 $this->SetLineWidth($oldlinewidth);
5446 $this->SetDColor($this->ConvertColor(0));
5447 }
5448 // IMAGE
5449 if ($objattr['type'] == 'image') {
5450 // mPDF 5.6.01 - LAYERS
5451 if (isset($objattr['z-index']) && $objattr['z-index'] > 0 && $this->currentlayer==0) {
5452 $this->BeginLayer($objattr['z-index']);
5453 }
5454 if(isset($objattr['visibility']) && $objattr['visibility']!='visible' && $objattr['visibility']) {
5455 $this->SetVisibility($objattr['visibility']);
5456 }
5457 if (isset($objattr['opacity'])) { $this->SetAlpha($objattr['opacity']); }
5458 $rotate = 0;
5459 $obiw = $objattr['INNER-WIDTH'];
5460 $obih = $objattr['INNER-HEIGHT'];
5461 $sx = $objattr['INNER-WIDTH']*_MPDFK / $objattr['orig_w'];
5462 $sy = abs($objattr['INNER-HEIGHT'])*_MPDFK / abs($objattr['orig_h']);
5463 $sx = ($objattr['INNER-WIDTH']*_MPDFK / $objattr['orig_w']);
5464 $sy = ($objattr['INNER-HEIGHT']*_MPDFK / $objattr['orig_h']);
5465
5466 if (isset($objattr['ROTATE'])) { $rotate = $objattr['ROTATE']; }
5467 if ($rotate==90) {
5468 // Clockwise
5469 $obiw = $objattr['INNER-HEIGHT'];
5470 $obih = $objattr['INNER-WIDTH'];
5471 $tr = $this->transformTranslate(0, -$objattr['INNER-WIDTH'], true) ;
5472 $tr .= ' '. $this->transformRotate(90, $objattr['INNER-X'],($objattr['INNER-Y'] +$objattr['INNER-WIDTH'] ),true) ;
5473 $sx = $obiw*_MPDFK / $objattr['orig_h'];
5474 $sy = $obih*_MPDFK / $objattr['orig_w'];
5475 }
5476 else if ($rotate==-90 || $rotate==270) {
5477 // AntiClockwise
5478 $obiw = $objattr['INNER-HEIGHT'];
5479 $obih = $objattr['INNER-WIDTH'];
5480 $tr = $this->transformTranslate($objattr['INNER-WIDTH'], ($objattr['INNER-HEIGHT']-$objattr['INNER-WIDTH']), true) ;
5481 $tr .= ' '. $this->transformRotate(-90, $objattr['INNER-X'],($objattr['INNER-Y'] +$objattr['INNER-WIDTH'] ),true) ;
5482 $sx = $obiw*_MPDFK / $objattr['orig_h'];
5483 $sy = $obih*_MPDFK / $objattr['orig_w'];
5484 }
5485 else if ($rotate==180) {
5486 // Mirror
5487 $tr = $this->transformTranslate($objattr['INNER-WIDTH'], -$objattr['INNER-HEIGHT'], true) ;
5488 $tr .= ' '. $this->transformRotate(180, $objattr['INNER-X'],($objattr['INNER-Y'] +$objattr['INNER-HEIGHT'] ),true) ;
5489 }
5490 else { $tr = ''; }
5491 $tr = trim($tr);
5492 if ($tr) { $tr .= ' '; }
5493 $gradmask = '';
5494
5495
5496/*-- BACKGROUNDS --*/
5497 if (isset($objattr['GRADIENT-MASK'])) {
5498 $g = $this->grad->parseMozGradient( $objattr['GRADIENT-MASK'] );
5499 if ($g) {
5500 $dummy = $this->grad->Gradient($objattr['INNER-X'], $objattr['INNER-Y'], $obiw, $obih, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true, true);
5501 $gradmask = '/TGS'.count($this->gradients).' gs ';
5502 // $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");
5503 }
5504 }
5505/*-- END BACKGROUNDS --*/
5506/*-- IMAGES-WMF --*/
5507 if (isset($objattr['itype']) && $objattr['itype']=='wmf') {
5508 $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']);
5509 }
5510 else
5511/*-- END IMAGES-WMF --*/
5512 if (isset($objattr['itype']) && $objattr['itype']=='svg') {
5513 $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']);
5514 }
5515 else {
5516 $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'] );
5517 }
5518 $this->_out($outstring);
5519 // LINK
5520 if (isset($objattr['link'])) $this->Link($objattr['INNER-X'],$objattr['INNER-Y'],$objattr['INNER-WIDTH'],$objattr['INNER-HEIGHT'],$objattr['link']);
5521 if (isset($objattr['opacity'])) { $this->SetAlpha(1); }
5522 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); }
5523 if(isset($objattr['visibility']) && $objattr['visibility']!='visible' && $objattr['visibility']) {
5524 $this->SetVisibility('visible');
5525 }
5526 // mPDF 5.6.01 - LAYERS
5527 if (isset($objattr['z-index']) && $objattr['z-index'] > 0 && $this->currentlayer==0) {
5528 $this->EndLayer();
5529 }
5530
5531 }
5532
5533/*-- BARCODES --*/
5534 // BARCODE
5535 if ($objattr['type'] == 'barcode') {
5536 $bgcol = $this->ConvertColor(255);
5537 if (isset($objattr['bgcolor']) && $objattr['bgcolor']) {
5538 $bgcol = $objattr['bgcolor'];
5539 }
5540 $col = $this->ConvertColor(0);
5541 if (isset($objattr['color']) && $objattr['color']) {
5542 $col = $objattr['color'];
5543 }
5544 $this->SetFColor($bgcol);
5545 $this->Rect($objattr['BORDER-X'], $objattr['BORDER-Y'], $objattr['BORDER-WIDTH'], $objattr['BORDER-HEIGHT'], 'F');
5546 $this->SetFColor($this->ConvertColor(255));
5547 if (isset($objattr['BORDER-WIDTH'])) { $this->PaintImgBorder($objattr,$is_table); }
5548 if ($objattr['btype'] == 'EAN13' || $objattr['btype'] == 'ISBN' || $objattr['btype'] == 'ISSN' || $objattr['btype'] == 'UPCA' || $objattr['btype'] == 'UPCE' || $objattr['btype'] == 'EAN8') {
5549 $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);
5550 }
5551 // QR-code
5552 else if ($objattr['btype']=='QR') {
5553 if (!class_exists('QRcode', false)) {
5554 include(_MPDF_PATH.'qrcode/qrcode.class.php');
5555 }
5556 $this->qrcode = new QRcode($objattr['code'], $objattr['errorlevel']);
5557 $this->qrcode->displayFPDF($this, $objattr['INNER-X'], $objattr['INNER-Y'], $objattr['bsize']*25, array(255,255,255), array(0,0,0));
5558 }
5559 else {
5560 $this->WriteBarcode2($objattr['code'], $objattr['INNER-X'], $objattr['INNER-Y'], $objattr['bsize'], $objattr['bheight'], $bgcol, $col, $objattr['btype'], $objattr['pr_ratio'], $k);
5561 }
5562 }
5563/*-- END BARCODES --*/
5564
5565 // TEXT CIRCLE
5566 if ($objattr['type'] == 'textcircle') {
5567 $bgcol = ''; // mPDF 5.5.14
5568 if (isset($objattr['bgcolor']) && $objattr['bgcolor']) {
5569 $bgcol = $objattr['bgcolor'];
5570 }
5571 $col = $this->ConvertColor(0);
5572 if (isset($objattr['color']) && $objattr['color']) {
5573 $col = $objattr['color'];
5574 }
5575 $this->SetTColor($col);
5576 $this->SetFColor($bgcol);
5577 if ($bgcol) $this->Rect($objattr['BORDER-X'], $objattr['BORDER-Y'], $objattr['BORDER-WIDTH'], $objattr['BORDER-HEIGHT'], 'F'); // mPDF 5.5.14
5578 $this->SetFColor($this->ConvertColor(255));
5579 if (isset($objattr['BORDER-WIDTH'])) { $this->PaintImgBorder($objattr,$is_table); }
5580 if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
5581 if (empty($this->directw)) { $this->directw = new directw($this); }
5582 $save_lmfs = $this->linemaxfontsize;
5583 $this->linemaxfontsize = 0;
5584 if (isset($objattr['top-text'])) {
5585 $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
5586 }
5587 if (isset($objattr['bottom-text'])) {
5588 $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
5589 }
5590 $this->linemaxfontsize = $save_lmfs;
5591 }
5592
5593 $this->ResetSpacing();
5594
5595 // DOT-TAB
5596 if ($objattr['type'] == 'dottab') {
5597 // mPDF 5.6.19
5598 if (isset($objattr['fontfamily'])) { $this->SetFont($objattr['fontfamily'],'',$objattr['fontsize'] ); }
5599 $sp = $this->GetStringWidth(' ');
5600 $nb=floor(($w-2*$sp)/$this->GetStringWidth('.'));
5601 if ($nb>0) { $dots=' '.str_repeat('.',$nb).' '; }
5602 else { $dots=' '; }
5603 $col = $this->ConvertColor(0);
5604 if (isset($objattr['colorarray']) && ($objattr['colorarray'])) { // mPDF 5.6.19
5605 $col = $objattr['colorarray'];
5606 }
5607 $this->SetTColor($col);
5608 $save_dh = $this->divheight; // mPDF 5.6.19
5609 $save_sbd = $this->spanborddet;
5610 $save_u = $this->U;
5611 $save_s = $this->strike;
5612 $this->spanborddet = '';
5613 $this->divheight = 0; // mPDF 5.6.19
5614 $this->U = false;
5615 $this->strike = false;
5616 $this->Cell($w,$h,$dots,0,0,'C');
5617 $this->spanborddet = $save_sbd;
5618 $this->U = $save_u;
5619 $this->strike = $save_s;
5620 $this->divheight = $save_dh; // mPDF 5.6.19
5621 // mPDF 5.0
5622 $this->SetTColor($this->ConvertColor(0));
5623 }
5624
5625/*-- FORMS --*/
5626 // TEXT/PASSWORD INPUT
5627 if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'TEXT' || $objattr['subtype'] == 'PASSWORD')) {
5628 $this->form->print_ob_text($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
5629 }
5630
5631 // TEXTAREA
5632 if ($objattr['type'] == 'textarea') {
5633 $this->form->print_ob_textarea($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
5634 }
5635
5636 // SELECT
5637 if ($objattr['type'] == 'select') {
5638 $this->form->print_ob_select($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
5639 }
5640
5641
5642 // INPUT/BUTTON as IMAGE
5643 if ($objattr['type'] == 'input' && $objattr['subtype'] == 'IMAGE') {
5644 $this->form->print_ob_imageinput($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
5645 }
5646
5647 // BUTTON
5648 if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'SUBMIT' || $objattr['subtype'] == 'RESET' || $objattr['subtype'] == 'BUTTON')) {
5649 $this->form->print_ob_button($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
5650 }
5651
5652 // CHECKBOX
5653 if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'CHECKBOX')) {
5654 $this->form->print_ob_checkbox($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y);
5655 }
5656 // RADIO
5657 if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'RADIO')) {
5658 $this->form->print_ob_radio($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y);
5659 }
5660/*-- END FORMS --*/
5661 }
5662 $this->SetFont($save_currentfontfamily,$save_currentfontstyle,$save_currentfontsize);
5663 $this->y = $save_y;
5664 $this->x = $save_x;
5665 unset($content);
5666}
5667
5668
5669function WriteFlowingBlock( $s)
5670{
5671 $currentx = $this->x;
5672 $is_table = $this->flowingBlockAttr[ 'is_table' ];
5673 $is_list = $this->flowingBlockAttr[ 'is_list' ];
5674 // width of all the content so far in points
5675 $contentWidth =& $this->flowingBlockAttr[ 'contentWidth' ];
5676 // cell width in points
5677 $maxWidth =& $this->flowingBlockAttr[ 'width' ];
5678 $lineCount =& $this->flowingBlockAttr[ 'lineCount' ];
5679 // line height in user units
5680 $lineHeight =& $this->flowingBlockAttr[ 'height' ];
5681 $align =& $this->flowingBlockAttr[ 'align' ];
5682 $content =& $this->flowingBlockAttr[ 'content' ];
5683 $contentB =& $this->flowingBlockAttr[ 'contentB' ];
5684 $font =& $this->flowingBlockAttr[ 'font' ];
5685 $valign =& $this->flowingBlockAttr[ 'valign' ];
5686 $blockstate = $this->flowingBlockAttr[ 'blockstate' ];
5687
5688 $newblock = $this->flowingBlockAttr[ 'newblock' ];
5689 $blockdir = $this->flowingBlockAttr['blockdir'];
5690 // *********** BLOCK BACKGROUND COLOR ***************** //
5691 if ($this->blk[$this->blklvl]['bgcolor'] && !$is_table) {
5692 $fill = 0;
5693 }
5694 else {
5695 $this->SetFColor($this->ConvertColor(255));
5696 $fill = 0;
5697 }
5698 $font[] = $this->saveFont();
5699 $content[] = '';
5700 $contentB[] = '';
5701 $currContent =& $content[ count( $content ) - 1 ];
5702 // where the line should be cutoff if it is to be justified
5703 $cutoffWidth = $contentWidth;
5704
5705 $CJKoverflow = false;
5706 $hanger = ''; // mPDF 5.6.40
5707
5708 // COLS
5709 $oldcolumn = $this->CurrCol;
5710
5711 if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
5712
5713/*-- TABLES --*/
5714 if ($is_table) {
5715 $ipaddingL = 0;
5716 $ipaddingR = 0;
5717 $paddingL = 0;
5718 $paddingR = 0;
5719 $cpaddingadjustL = 0;
5720 $cpaddingadjustR = 0;
5721 // Added mPDF 3.0
5722 $fpaddingR = 0;
5723 $fpaddingL = 0;
5724 }
5725 else {
5726/*-- END TABLES --*/
5727 $ipaddingL = $this->blk[$this->blklvl]['padding_left'];
5728 $ipaddingR = $this->blk[$this->blklvl]['padding_right'];
5729 $paddingL = ($ipaddingL * _MPDFK);
5730 $paddingR = ($ipaddingR * _MPDFK);
5731 $this->cMarginL = $this->blk[$this->blklvl]['border_left']['w'];
5732 $cpaddingadjustL = -$this->cMarginL;
5733 $this->cMarginR = $this->blk[$this->blklvl]['border_right']['w'];
5734 $cpaddingadjustR = -$this->cMarginR;
5735 // Added mPDF 3.0 Float DIV
5736 $fpaddingR = 0;
5737 $fpaddingL = 0;
5738/*-- CSS-FLOAT --*/
5739 if (count($this->floatDivs)) {
5740 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
5741 if ($r_exists) { $fpaddingR = $r_width; }
5742 if ($l_exists) { $fpaddingL = $l_width; }
5743 }
5744/*-- END CSS-FLOAT --*/
5745
5746 $usey = $this->y + 0.002;
5747 if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) {
5748 $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
5749 }
5750/*-- CSS-IMAGE-FLOAT --*/
5751 // If float exists at this level
5752 if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
5753 if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
5754/*-- END CSS-IMAGE-FLOAT --*/
5755 } // *TABLES*
5756
5757 //OBJECTS - IMAGES & FORM Elements (NB has already skipped line/page if required - in printbuffer)
5758 if (substr($s,0,3) == "\xbb\xa4\xac") { //identifier has been identified!
5759 $objattr = $this->_getObjAttr($s);
5760 $h_corr = 0;
5761 if ($is_table) { // *TABLES*
5762 $maximumW = ($maxWidth/_MPDFK) - ($this->cellPaddingL + $this->cMarginL + $this->cellPaddingR + $this->cMarginR); // *TABLES*
5763 } // *TABLES*
5764 else { // *TABLES*
5765 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']; }
5766 $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 );
5767 } // *TABLES*
5768 $objattr = $this->inlineObject($objattr['type'],$this->lMargin + $fpaddingL + ($contentWidth/_MPDFK),($this->y + $h_corr), $objattr, $this->lMargin,($contentWidth/_MPDFK),$maximumW,$lineHeight,true,$is_table);
5769
5770 // SET LINEHEIGHT for this line ================ RESET AT END
5771 $lineHeight = MAX($lineHeight,$objattr['OUTER-HEIGHT']);
5772 $this->objectbuffer[count($content)-1] = $objattr;
5773 // if (isset($objattr['vertical-align'])) { $valign = $objattr['vertical-align']; }
5774 // else { $valign = ''; }
5775 $contentWidth += ($objattr['OUTER-WIDTH'] * _MPDFK);
5776 return;
5777 }
5778
5779 $lbw = $rbw = 0; // Border widths
5780 if (!empty($this->spanborddet)) {
5781 if (isset($this->spanborddet['L'])) $lbw = $this->spanborddet['L']['w'];
5782 if (isset($this->spanborddet['R'])) $rbw = $this->spanborddet['R']['w'];
5783 }
5784
5785 if ($this->usingCoreFont) {
5786 $tmp = strlen( $s );
5787 }
5788 else {
5789 $tmp = mb_strlen( $s, $this->mb_enc );
5790 }
5791
5792 // for every character in the string
5793 for ( $i = 0; $i < $tmp; $i++ ) {
5794 // extract the current character
5795 // get the width of the character in points
5796 if ($this->usingCoreFont) {
5797 $c = $s[$i];
5798 // Soft Hyphens chr(173)
5799 $cw = ($this->GetCharWidthCore($c) * _MPDFK);
5800 if ($this->kerning && $this->useKerning && $i > 0) {
5801 if (isset($this->CurrentFont['kerninfo'][$s[($i-1)]][$c])) {
5802 $cw += ($this->CurrentFont['kerninfo'][$s[($i-1)]][$c] * $this->FontSizePt / 1000 );
5803 }
5804 }
5805 }
5806 else {
5807 $c = mb_substr($s,$i,1,$this->mb_enc );
5808 $cw = ($this->GetCharWidthNonCore($c, false) * _MPDFK);
5809 if ($this->kerning && $this->useKerning && $i > 0) {
5810 $lastc = mb_substr($s,($i-1),1,$this->mb_enc );
5811 $ulastc = $this->UTF8StringToArray($lastc, false);
5812 $uc = $this->UTF8StringToArray($c, false);
5813 if (isset($this->CurrentFont['kerninfo'][$ulastc[0]][$uc[0]])) {
5814 $cw += ($this->CurrentFont['kerninfo'][$ulastc[0]][$uc[0]] * $this->FontSizePt / 1000 );
5815 }
5816 }
5817 }
5818
5819 if ($i==0) {
5820 $cw += $lbw*_MPDFK;
5821 $contentB[(count($contentB)-1)] .= 'L';
5822 }
5823 if ($i==($tmp-1)) {
5824 $cw += $rbw*_MPDFK;
5825 $contentB[(count($contentB)-1)] .= 'R';
5826 }
5827 // mPDF 5.6.45
5828 if ($c==' ') {
5829 $currContent .= $c;
5830 $cutoffWidth = $contentWidth;
5831 $contentWidth += $cw;
5832 continue;
5833 }
5834
5835 // ADDED for Paragraph_indent
5836 $WidthCorrection = 0;
5837 if (($newblock) && ($blockstate==1 || $blockstate==3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && (!$is_list) && ($align != 'C')) {
5838 $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
5839 $WidthCorrection = ($ti*_MPDFK);
5840 }
5841
5842 // Added mPDF 3.0 Float DIV
5843 $fpaddingR = 0;
5844 $fpaddingL = 0;
5845/*-- CSS-FLOAT --*/
5846 if (count($this->floatDivs)) {
5847 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
5848 if ($r_exists) { $fpaddingR = $r_width; }
5849 if ($l_exists) { $fpaddingL = $l_width; }
5850 }
5851/*-- END CSS-FLOAT --*/
5852
5853 $usey = $this->y + 0.002;
5854 if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) {
5855 $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
5856 }
5857
5858/*-- CSS-IMAGE-FLOAT --*/
5859 // If float exists at this level
5860 if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
5861 if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
5862/*-- END CSS-IMAGE-FLOAT --*/
5863
5864
5865
5866 // try adding another char
5867 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
5868 // it won't fit, output what we already have
5869 $lineCount++;
5870
5871 // contains any content that didn't make it into this print
5872 $savedContent = '';
5873 $savedContentB = '';
5874 $savedFont = array();
5875 $savedObj = array();
5876 // mPDF 5.6.20
5877 $savedPreContent = array();
5878 $savedPreContentB = array();
5879 $savedPreFont = array();
5880
5881 // cut off and save any partial words at the end of the string
5882 $words = explode( ' ', $currContent );
5883 ///////////////////
5884 // HYPHENATION
5885 $currWord = $words[count($words)-1] ;
5886 $success = false;
5887
5888 // mPDF 5.6.21 Hard Hyphens -
5889 $hardsuccess = false;
5890 if ($this->textparam['hyphens'] != 2 && preg_match("/\-/",$currWord)) {
5891 $rem = $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
5892 list($hardsuccess,$pre,$post,$prelength) = $this->hardHyphenate($currWord, (($rem-$cutoffWidth)/_MPDFK -$this->GetCharWidth("-", false)) );
5893 if ($hardsuccess) {
5894 $already = array_pop( $words );
5895 $forward = mb_substr($already,$prelength+1,mb_strlen($already, $this->mb_enc), $this->mb_enc);
5896 $words[] = $pre.'-';
5897 $words[] = $forward;
5898 $currContent = mb_substr($currContent,0,mb_strlen($currContent, $this->mb_enc)+1-mb_strlen($post, $this->mb_enc), $this->mb_enc) . '-';
5899 }
5900 }
5901
5902/*-- HYPHENATION --*/
5903 // Soft Hyphens chr(173)
5904 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
5905 $rem = $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
5906 list($success,$pre,$post,$prelength) = $this->softHyphenate($currWord, (($rem-$cutoffWidth)/_MPDFK -$this->GetCharWidth(" ", false)) );
5907 }
5908
5909 if (!$success && !$hardsuccess && $this->textparam['hyphens'] == 1 ) { // mPDF 5.6.06 // mPDF 5.6.21
5910 // Look ahead to get current word
5911 for($ac = $i; $ac<(mb_strlen($s)-1); $ac++) {
5912 $addc = mb_substr($s,$ac,1,$this->mb_enc );
5913 if ($addc == ' ') { break; }
5914 $currWord .= $addc;
5915 }
5916 $rem = $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
5917 list($success,$pre,$post,$prelength) = $this->hyphenateWord($currWord, (($rem-$cutoffWidth)/_MPDFK -$this->GetCharWidth(" ", false)) );
5918 }
5919 if ($success) {
5920 $already = array_pop( $words );
5921 $forward = mb_substr($already,$prelength,mb_strlen($already, $this->mb_enc), $this->mb_enc);
5922 $words[] = $pre.'-';
5923 $words[] = $forward;
5924 $currContent = mb_substr($currContent,0,mb_strlen($currContent, $this->mb_enc)+1-mb_strlen($post, $this->mb_enc), $this->mb_enc) . '-';
5925 }
5926/*-- END HYPHENATION --*/
5927
5928 // mPDF 5.6.13 Decimal alignment (cancel if wraps to > 1 line)
5929 if ($is_table && substr($align,0,1)=='D' ) { $align=substr($align,2,1); }
5930
5931/*-- CJK-FONTS --*/
5932 // mPDF 5.6.42
5933 if ($this->checkCJK) {
5934 $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
5935 }
5936 // Next character is suitable to add as overhanging or squeezed punctuation
5937 if ($this->checkCJK && preg_match("/[".$this->CJKoverflow."]/u", $c) && $this->allowCJKorphans && !$CJKoverflow) {
5938 // add character onto this line
5939 $currContent .= $c;
5940 $cutoffWidth = $contentWidth;
5941 $contentWidth += $cw;
5942 $CJKoverflow = true;
5943 continue;
5944 }
5945 // Last character that fits is not allowed to end a line - move lastchar(s) to start of next line
5946 else if ($this->checkCJK && preg_match("/[".$this->CJKleading."]/u", $lastchar)) {
5947 //move lastchar(s) to next line
5948 $m0 = $lastchar;
5949 $m1 = $c;
5950 while(preg_match("/[".$this->CJKleading."]/u", $m0) && mb_strlen($words[(count($words)-1)], $this->mb_enc)>2) {
5951 // trim last letter off word[0]
5952 $words[(count($words)-1)] = mb_substr($words[(count($words)-1)],0,mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, $this->mb_enc);
5953 // and add it to savedContent for next line
5954 $savedContent = $m0.$savedContent;
5955 $m1 = $lastchar;
5956 $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
5957 $m0 = $lastchar;
5958 }
5959 $lastContent = '';
5960 for ( $w = 0; $w < count( $words ) ; $w++) { $lastContent .= $words[ $w ]." "; }
5961 $savedFont = $this->saveFont();
5962 // replace the current content with the cropped version
5963 $currContent = rtrim( $lastContent );
5964 }
5965 // Next character is not allowed to start a new line
5966 else if ($this->checkCJK && preg_match("/[".$this->CJKfollowing."]/u", $c)) {
5967 // try squeezing another character(s) onto this line = Oikomi
5968 if ($this->allowCJKorphans && !$CJKoverflow) { // mPDF 5.6.40
5969 $lookahead = mb_substr($s,$i+1,1,$this->mb_enc );
5970 //if lookahead is not another following char
5971 if (!$lookahead || ($lookahead && !preg_match("/[".$this->CJKfollowing."]/u", $lookahead))) {
5972 $currContent .= $c;
5973 $cutoffWidth = $contentWidth;
5974 $contentWidth += $cw;
5975 if ($this->allowCJKoverflow && preg_match("/[".$this->CJKoverflow."]/u", $c)) { $CJKoverflow = true; }
5976 continue;
5977 }
5978 }
5979 // or move lastchar(s) to next line to keep $c company = Oidashi
5980 $m0 = $lastchar;
5981 $m1 = $c;
5982 while(preg_match("/[".$this->CJKfollowing."]/u", $m1) && mb_strlen($words[(count($words)-1)], $this->mb_enc)>2) {
5983 // trim last letter off word[0]
5984 $words[(count($words)-1)] = mb_substr($words[(count($words)-1)],0,mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, $this->mb_enc);
5985 // and add it to savedContent for next line
5986 $savedContent = $m0.$savedContent;
5987 $m1 = $lastchar;
5988 $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
5989 $m0 = $lastchar;
5990 }
5991 $lastContent = '';
5992 for ( $w = 0; $w < count( $words ) ; $w++) { $lastContent .= $words[ $w ]." "; }
5993 $savedFont = $this->saveFont();
5994 // replace the current content with the cropped version
5995 $currContent = rtrim( $lastContent );
5996 }
5997 // mPDF 5.6.42
5998 else if ($this->checkCJK && preg_match("/([".$this->pregCJKchars."]+[0-9\x{ff10}-\x{ff19}]+$)/u", $words[0])) {
5999 $lookahead = mb_substr($s,$i,16,$this->mb_enc );
6000 //and if lookahead starts with a few numerals
6001 if ($lookahead && (preg_match("/^([0-9\x{ff10}-\x{ff19}]+[".$this->pregCJKchars."]+)/u", $lookahead) || preg_match("/^([0-9\x{ff10}-\x{ff19}]+$)/u", $lookahead)) ) {
6002 // or move lastchar(s) to next line to keep numerals together
6003 $m0 = $lastchar;
6004 while(preg_match("/[0-9\x{ff10}-\x{ff19}]/u", $m0) && mb_strlen($words[(count($words)-1)], $this->mb_enc)>2) {
6005 // trim last letter off word[0]
6006 $words[(count($words)-1)] = mb_substr($words[(count($words)-1)],0,mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, $this->mb_enc);
6007 // and add it to savedContent for next line
6008 $savedContent = $m0.$savedContent;
6009 $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
6010 $m0 = $lastchar;
6011 }
6012 }
6013 $lastContent = '';
6014 for ( $w = 0; $w < count( $words ) ; $w++) { $lastContent .= $words[ $w ]." "; }
6015 $savedFont = $this->saveFont();
6016 // replace the current content with the cropped version
6017 $currContent = rtrim( $lastContent );
6018 }
6019 else
6020/*-- END CJK-FONTS --*/
6021 // if it looks like we didn't finish any words for this chunk
6022 if ( count( $words ) == 1 ) {
6023 // TO correct for error when word too wide for page - but only when one long word from left to right margin
6024 if (count($content) == 1 && $currContent != ' ') {
6025 $lastchar = mb_substr($words[0],mb_strlen($words[0], $this->mb_enc)-1, 1, $this->mb_enc);
6026 $lastContent = $words[0];
6027 $savedFont = $this->saveFont();
6028 // replace the current content with the cropped version
6029 $currContent = rtrim( $lastContent );
6030 }
6031 // mPDF 5.6.20
6032 else if ( count($content)>1
6033 && (!isset($this->objectbuffer[(count($content)-1)]) && !isset($this->objectbuffer[(count($content)-2)]))
6034 && substr($content[count($content)-2],-1,1) != ' '
6035 && substr($currContent,0,1) != ' '
6036 ) {
6037 // Go back to find a space in a previous chunk of content
6038 $found = false;
6039 for ($ix=count($content)-1;$ix>=0;$ix--) {
6040 // mPDF 5.6.29
6041 if ($this->usingCoreFont && preg_match('/[ '.chr(173).']/',$content[$ix],$m)) { $match = $m[0]; $found = $ix; break; }
6042 else if (!$this->usingCoreFont) {
6043 if (preg_match('/[ ]/',$content[$ix])) { $match = ' '; $found = $ix; break; }
6044 else if (preg_match('/[\x{00AD}]/u',$content[$ix])) {
6045 // even though it is UTF-8 replace it temporarily with chr(173)
6046 $content[$ix] = preg_replace('/[\x{00AD}]/u',chr(173),$content[$ix]);
6047 $match = chr(173); $found = $ix; break;
6048 }
6049 }
6050 }
6051 if ($found !== false) {
6052 $charpos = strrpos($content[$found],$match); // mPDF 5.6.29
6053 for ($ix=count($content)-1;$ix>$found;$ix--) {
6054 // save and crop off any subsequent chunks
6055 $savedPreContent[] = array_pop($content);
6056 $savedPreContentB[] = array_pop($contentB);
6057 $savedPreFont[] = array_pop($font);
6058 }
6059 if (substr($content[count($content)-1],$charpos+1,strlen($content[count($content)-1])-1) != '') {
6060 $savedPreContent[] = substr($content[count($content)-1],$charpos+1,strlen($content[count($content)-1])-1);
6061 $savedPreContentB[] = preg_replace('/L/','',$contentB[count($content)-1]); // ???
6062 $savedPreFont[] = $font[count($content)-1];
6063 }
6064 $savedContent = '';
6065 $savedContentB = '';
6066 $savedFont = array();
6067
6068 $currContent =& $content[ count( $content ) - 1 ];
6069 $currContent = substr($currContent,0,$charpos);
6070 if ($match == chr(173)) { $currContent .= '-'; } // mPDF 5.6.29
6071 if (strpos($contentB[(count($contentB)-1)],'R')!==false) { // ???
6072 $contentB[count($content)-1] = preg_replace('/R/','',$contentB[count($content)-1]); // ???
6073 }
6074
6075 $currContent = rtrim( $currContent );
6076 }
6077 else {
6078 $savedContent = array_pop( $content );
6079 $savedContentB = array_pop($contentB);
6080 $savedFont = array_pop( $font );
6081 $currContent =& $content[ count( $content ) - 1 ];
6082 $currContent = rtrim( $currContent );
6083 }
6084 }
6085 else {
6086 // save and crop off the content currently on the stack
6087 $savedContent = array_pop( $content );
6088 $savedContentB = array_pop($contentB); // mPDF 5.6.20
6089 $savedFont = array_pop( $font );
6090
6091 // mPDF 5.7.2
6092 // e.g: |first chunk |second chunk |[IndexEntry]|doesntfit
6093 if (isset($this->objectbuffer[(count($content)-1)]) && $this->objectbuffer[(count($content)-1)]['OUTER-WIDTH'] < 0.001) {
6094 $savedObj = $this->objectbuffer[(count($content)-1)];
6095 array_pop( $content );
6096 array_pop( $contentB );
6097 array_pop( $font );
6098 array_pop( $this->objectbuffer );
6099 }
6100
6101 // trim any trailing spaces off the last bit of content
6102 $currContent =& $content[ count( $content ) - 1 ];
6103 $currContent = rtrim( $currContent );
6104 }
6105 }
6106 else { // otherwise, we need to find which bit to cut off
6107 $lastContent = '';
6108 for ( $w = 0; $w < count( $words ) - 1; $w++) { $lastContent .= $words[ $w ]." "; }
6109 $savedContent = $words[ count( $words ) - 1 ];
6110 $savedFont = $this->saveFont();
6111 // replace the current content with the cropped version
6112 $currContent = rtrim( $lastContent );
6113 }
6114 // CJK - strip CJK space at end of line
6115 // &#x3000; = \xe3\x80\x80 = CJK space
6116 if ($this->checkCJK) { $currContent = preg_replace("/\xe3\x80\x80$/",'',$currContent) ; } // *CJK-FONTS*
6117
6118
6119 if (isset($this->objectbuffer[(count($content)-1)]) && $this->objectbuffer[(count($content)-1)]['type']=='dottab') {
6120 $savedObj = array_pop( $this->objectbuffer );
6121 $contentWidth -= ($this->objectbuffer[(count($content)-1)]['OUTER-WIDTH'] * _MPDFK);
6122 }
6123
6124 // Set Current lineheight (correction factor)
6125 $lhfixed = false;
6126/*-- LISTS --*/
6127 if ($is_list) {
6128 if (preg_match('/([0-9.,]+)mm/',$this->list_lineheight[$this->listlvl][$this->listOcc],$am)) {
6129 $lhfixed = true;
6130 $def_fontsize = $this->InlineProperties['LISTITEM'][$this->listlvl][$this->listOcc][$this->listnum]['size'];
6131 $this->lineheight_correction = $am[1] / $def_fontsize ;
6132 }
6133 else {
6134 $this->lineheight_correction = $this->list_lineheight[$this->listlvl][$this->listOcc];
6135 }
6136 }
6137 else
6138/*-- END LISTS --*/
6139/*-- TABLES --*/
6140 if ($is_table) {
6141 if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight,$am)) {
6142 $lhfixed = true;
6143 $def_fontsize = $this->FontSize; // needs to be default font-size for block ****
6144 $this->lineheight_correction = $lineHeight / $def_fontsize ;
6145 }
6146 else {
6147 $this->lineheight_correction = $this->table_lineheight;
6148 }
6149 }
6150 else
6151/*-- END TABLES --*/
6152 if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
6153 if (preg_match('/([0-9.,]+)mm/',$this->blk[$this->blklvl]['line_height'],$am)) {
6154 $lhfixed = true;
6155 $def_fontsize = $this->blk[$this->blklvl]['InlineProperties']['size']; // needs to be default font-size for block ****
6156 $this->lineheight_correction = $am[1] / $def_fontsize ;
6157 }
6158 else {
6159 $this->lineheight_correction = $this->blk[$this->blklvl]['line_height'];
6160 }
6161 }
6162 else {
6163 $this->lineheight_correction = $this->normalLineheight;
6164 }
6165 // update $contentWidth and $cutoffWidth since they changed with cropping
6166 // Also correct lineheight to maximum fontsize (not for tables)
6167 $contentWidth = 0;
6168 // correct lineheight to maximum fontsize
6169 if ($lhfixed) { $maxlineHeight = $this->lineheight; }
6170 else { $maxlineHeight = 0; }
6171 $this->forceExactLineheight = true;
6172 $maxfontsize = 0;
6173 // While we're at it, check for cursive text
6174 $checkCursive=false;
6175 if ($this->biDirectional) { $checkCursive=true; } // *RTL*
6176 foreach ( $content as $k => $chunk )
6177 {
6178 $this->restoreFont( $font[ $k ]);
6179 if (!isset($this->objectbuffer[$k])) {
6180 // mPDF 5.6.40
6181 if ($this->checkCJK && $k == count($content)-1 && $CJKoverflow && $align=='J' && $this->allowCJKoverflow && $this->CJKforceend) {
6182 // force-end overhang
6183 $hanger = mb_substr($chunk,mb_strlen($chunk,$this->mb_enc)-1,1,$this->mb_enc );
6184 $content[$k] = $chunk = mb_substr($chunk,0,mb_strlen($chunk,$this->mb_enc)-1,$this->mb_enc );
6185 }
6186 if (!$this->usingCoreFont) {
6187 $content[$k] = $chunk = str_replace("\xc2\xad",'',$chunk );
6188 if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) { $checkCursive=true; } // *INDIC*
6189 }
6190 // Soft Hyphens chr(173)
6191 else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
6192 $content[$k] = $chunk = str_replace(chr(173),'',$chunk );
6193 }
6194 $contentWidth += $this->GetStringWidth( $chunk ) * _MPDFK;
6195 if (!empty($this->spanborddet)) {
6196 if (strpos($contentB[$k],'L')!==false) $contentWidth += $this->spanborddet['L']['w'] * _MPDFK;
6197 if (strpos($contentB[$k],'R')!==false) $contentWidth += $this->spanborddet['R']['w'] * _MPDFK;
6198 }
6199 if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$this->FontSize * $this->lineheight_correction ); }
6200 if ($lhfixed && ($this->FontSize > $def_fontsize || ($this->FontSize > ($lineHeight * $this->lineheight_correction) && $is_list))) {
6201 $this->forceExactLineheight = false;
6202 }
6203 $maxfontsize = max($maxfontsize,$this->FontSize);
6204 }
6205 }
6206
6207 $lastfontreqstyle = $font[count($font)-1]['ReqFontStyle'];
6208 $lastfontstyle = $font[count($font)-1]['style'];
6209 if ($blockdir == 'ltr' && strpos($lastfontreqstyle,"I") !== false && strpos($lastfontstyle,"I") === false) { // Artificial italic
6210 $lastitalic = $this->FontSize*0.15*_MPDFK;
6211 }
6212 else { $lastitalic = 0; }
6213
6214
6215/*-- LISTS --*/
6216 if ($is_list && is_array($this->bulletarray) && $this->bulletarray) {
6217 $actfs = $this->bulletarray['fontsize'];
6218 if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$actfs * $this->lineheight_correction ); }
6219 if ($lhfixed && $actfs > $def_fontsize) { $this->forceExactLineheight = false; }
6220 $maxfontsize = max($maxfontsize,$actfs);
6221 }
6222/*-- END LISTS --*/
6223
6224 // when every text item checked i.e. $maxfontsize is set properly
6225
6226 $af = 0; // Above font
6227 $bf = 0; // Below font
6228 $mta = 0; // Maximum top-aligned
6229 $mba = 0; // Maximum bottom-aligned
6230
6231 foreach ( $content as $k => $chunk ) {
6232 if (isset($this->objectbuffer[$k]) && $this->objectbuffer[$k]) {
6233 $contentWidth += $this->objectbuffer[$k]['OUTER-WIDTH'] * _MPDFK;
6234 $oh = $this->objectbuffer[$k]['OUTER-HEIGHT'];
6235 $va = $this->objectbuffer[$k]['vertical-align']; // = $objattr['vertical-align'] = set as M,T,B,S
6236 if ($lhfixed && $oh > $def_fontsize) { $this->forceExactLineheight = false; }
6237
6238 if ($va == 'BS') { // (BASELINE default)
6239 $af = max($af, ($oh - ($maxfontsize * (0.5 + $this->baselineC))));
6240 }
6241 else if ($va == 'M') {
6242 $af = max($af, ($oh - $maxfontsize)/2);
6243 $bf = max($bf, ($oh - $maxfontsize)/2);
6244 }
6245 else if ($va == 'TT') {
6246 $bf = max($bf, ($oh - $maxfontsize));
6247 }
6248 else if ($va == 'TB') {
6249 $af = max($af, ($oh - $maxfontsize));
6250 }
6251 else if ($va == 'T') {
6252 $mta = max($mta, $oh);
6253 }
6254 else if ($va == 'B') {
6255 $mba = max($mba, $oh);
6256 }
6257 }
6258 }
6259 if ((!$lhfixed || !$this->forceExactLineheight) && ($af > (($maxlineHeight - $maxfontsize)/2) || $bf > (($maxlineHeight - $maxfontsize)/2))) {
6260 $maxlineHeight = $maxfontsize + $af + $bf;
6261 }
6262 else if (!$lhfixed) { $af = $bf = ($maxlineHeight - $maxfontsize)/2; }
6263
6264 if ($mta > $maxlineHeight) {
6265 $bf += ($mta - $maxlineHeight);
6266 $maxlineHeight = $mta;
6267 }
6268 if ($mba > $maxlineHeight) {
6269 $af += ($mba - $maxlineHeight);
6270 $maxlineHeight = $mba;
6271 }
6272
6273
6274 $lineHeight = $maxlineHeight;
6275 $cutoffWidth = $contentWidth;
6276 // If NOT images, and maxfontsize NOT > lineHeight - this value determines text baseline positioning
6277 if ($lhfixed && $af==0 && $bf==0 && $maxfontsize<=($def_fontsize * $this->lineheight_correction * 0.8 )) {
6278 $this->linemaxfontsize = $def_fontsize;
6279 }
6280 else { $this->linemaxfontsize = $maxfontsize; }
6281
6282
6283 $inclCursive=false;
6284 foreach ( $content as $k => $chunk ) {
6285 if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) {
6286 if ($this->usingCoreFont) {
6287 $content[$k] = str_replace(chr(160),chr(32),$chunk );
6288 }
6289 else {
6290 $content[$k] = str_replace(chr(194).chr(160),chr(32),$chunk );
6291 if ($checkCursive) {
6292 if (preg_match("/([".$this->pregRTLchars."])/u", $chunk)) { $inclCursive = true; } // *RTL*
6293 if (preg_match("/([".$this->pregHIchars.$this->pregBNchars.$this->pregPAchars."])/u", $chunk)) { $inclCursive = true; } // *INDIC*
6294 }
6295 }
6296 }
6297 }
6298
6299 // JUSTIFICATION J
6300 $jcharspacing = 0;
6301 $jws = 0;
6302 $nb_carac = 0;
6303 $nb_spaces = 0;
6304 // 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)
6305 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
6306 // JUSTIFY J (Use character spacing)
6307 // WORD SPACING
6308 foreach ( $content as $k => $chunk ) {
6309 if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) {
6310 $nb_carac += mb_strlen( $chunk, $this->mb_enc ) ;
6311 $nb_spaces += mb_substr_count( $chunk,' ', $this->mb_enc ) ;
6312 }
6313 }
6314 list($jcharspacing,$jws) = $this->GetJspacing($nb_carac,$nb_spaces,($maxWidth-$lastitalic-$cutoffWidth-$WidthCorrection-(($this->cMarginL+$this->cMarginR)*_MPDFK)-($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) )),$inclCursive);
6315 }
6316
6317
6318 // WORD SPACING
6319 $empty = $maxWidth - $lastitalic-$WidthCorrection - $contentWidth - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
6320
6321 $empty -= ($jcharspacing * $nb_carac);
6322 $empty -= ($jws * $nb_spaces);
6323
6324 $empty /= _MPDFK;
6325 $b = ''; //do not use borders
6326 // Get PAGEBREAK TO TEST for height including the top border/padding
6327 $check_h = max($this->divheight,$lineHeight);
6328 if (($newblock) && ($blockstate==1 || $blockstate==3) && ($this->blklvl > 0) && ($lineCount == 1) && (!$is_table) && (!$is_list)) {
6329 $check_h += ($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['border_top']['w']);
6330 }
6331
6332 if ($this->ColActive && $check_h > ($this->PageBreakTrigger - $this->y0)) {
6333 $this->SetCol($this->NbCol-1);
6334 }
6335
6336 // PAGEBREAK
6337 // 'If' below used in order to fix "first-line of other page with justify on" bug
6338 if(!$is_table && ($this->y+$check_h) > $this->PageBreakTrigger and !$this->InFooter and $this->AcceptPageBreak()) {
6339 $bak_x=$this->x;//Current X position
6340
6341 // WORD SPACING
6342 $ws=$this->ws;//Word Spacing
6343 $charspacing=$this->charspacing;//Character Spacing
6344 $this->ResetSpacing();
6345
6346 $this->AddPage($this->CurOrientation);
6347
6348 $this->x = $bak_x;
6349 // Added to correct for OddEven Margins
6350 $currentx += $this->MarginCorrection;
6351 $this->x += $this->MarginCorrection;
6352
6353 // WORD SPACING
6354 $this->SetSpacing($charspacing,$ws);
6355 }
6356
6357 if ($this->keep_block_together && !$is_table && $this->kt_p00 < $this->page && ($this->y+$check_h) > $this->kt_y00) {
6358 $this->printdivbuffer();
6359 $this->keep_block_together = 0;
6360 }
6361
6362 if ($this->kwt && !$is_table) { // mPDF 5.7+
6363 $this->printkwtbuffer();
6364 $this->kwt = false;
6365 }
6366
6367/*-- COLUMNS --*/
6368 // COLS
6369 // COLUMN CHANGE
6370 if ($this->CurrCol != $oldcolumn) {
6371 $currentx += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
6372 $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
6373 $oldcolumn = $this->CurrCol;
6374 }
6375
6376 if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
6377/*-- END COLUMNS --*/
6378
6379 // TOP MARGIN
6380 if (($newblock) && ($blockstate==1 || $blockstate==3) && ($this->blk[$this->blklvl]['margin_top']) && ($lineCount == 1) && (!$is_table) && (!$is_list)) {
6381 $this->DivLn($this->blk[$this->blklvl]['margin_top'],$this->blklvl-1,true,$this->blk[$this->blklvl]['margin_collapse']);
6382 if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
6383 }
6384
6385
6386 // Update y0 for top of block (used to paint border)
6387 if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 1) && (!$is_table) && (!$is_list)) {
6388 $this->blk[$this->blklvl]['y0'] = $this->y;
6389 $this->blk[$this->blklvl]['startpage'] = $this->page;
6390 if ($this->blk[$this->blklvl]['float']) { $this->blk[$this->blklvl]['float_start_y'] = $this->y; } // mPDF 5.6.63
6391 }
6392
6393 // TOP PADDING and BORDER spacing/fill
6394 if (($newblock) && ($blockstate==1 || $blockstate==3) && (($this->blk[$this->blklvl]['padding_top']) || ($this->blk[$this->blklvl]['border_top'])) && ($lineCount == 1) && (!$is_table) && (!$is_list)) {
6395 // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
6396 $this->DivLn($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'],-3,true,false,1);
6397 if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
6398 }
6399
6400 $arraysize = count($content);
6401
6402 $margins = ($this->cMarginL+$this->cMarginR) + ($ipaddingL+$ipaddingR + $fpaddingR + $fpaddingR );
6403
6404 // PAINT BACKGROUND FOR THIS LINE
6405 if (!$is_table) { $this->DivLn($lineHeight,$this->blklvl,false); } // false -> don't advance y
6406
6407 $this->x = $currentx + $this->cMarginL + $ipaddingL + $fpaddingL ;
6408 if ($align == 'R') { $this->x += $empty; }
6409 else if ($align == 'C') { $this->x += ($empty / 2); }
6410
6411 // Paragraph INDENT
6412 if (isset($this->blk[$this->blklvl]['text_indent']) && ($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 1) && (!$is_table) && ($blockdir !='rtl') && ($align !='C')) {
6413 $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
6414 $this->x += $ti;
6415 }
6416
6417 // DIRECTIONALITY RTL
6418 $all_rtl = false;
6419 $contains_rtl = false;
6420/*-- RTL --*/
6421 if ($blockdir == 'rtl' || $this->biDirectional) {
6422 $all_rtl = true;
6423 foreach ( $content as $k => $chunk ) {
6424 $reversed = $this->magic_reverse_dir($chunk, false, $blockdir);
6425
6426 if ($reversed > 0) { $contains_rtl = true; }
6427 if ($reversed < 2) { $all_rtl = false; }
6428 $content[$k] = $chunk;
6429 }
6430 if (($blockdir =='rtl' && $contains_rtl) || $all_rtl) {
6431 $content = array_reverse($content,false);
6432 $contentB = array_reverse($contentB,false);
6433 }
6434 }
6435/*-- END RTL --*/
6436
6437 foreach ( $content as $k => $chunk ) {
6438
6439 // FOR IMAGES - UPDATE POSITION
6440 if (($blockdir =='rtl' && $contains_rtl) || $all_rtl) { $dirk = $arraysize-1 - $k ; } else { $dirk = $k; }
6441
6442 $va = 'M'; // default for text
6443 if (isset($this->objectbuffer[$dirk]) && $this->objectbuffer[$dirk]) {
6444 $xadj = $this->x - $this->objectbuffer[$dirk]['OUTER-X'] ;
6445 $this->objectbuffer[$dirk]['OUTER-X'] += $xadj;
6446 $this->objectbuffer[$dirk]['BORDER-X'] += $xadj;
6447 $this->objectbuffer[$dirk]['INNER-X'] += $xadj;
6448 $va = $this->objectbuffer[$dirk]['vertical-align'];
6449 $yadj = $this->y - $this->objectbuffer[$dirk]['OUTER-Y'];
6450 if ($va == 'BS') {
6451 $yadj += $af + ($this->linemaxfontsize * (0.5 + $this->baselineC)) - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
6452 }
6453 else if ($va == 'M' || $va == '') {
6454 $yadj += $af + ($this->linemaxfontsize /2) - ($this->objectbuffer[$dirk]['OUTER-HEIGHT']/2);
6455 }
6456 else if ($va == 'TB') {
6457 $yadj += $af + $this->linemaxfontsize - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
6458 }
6459 else if ($va == 'TT') {
6460 $yadj += $af;
6461 }
6462 else if ($va == 'B') {
6463 $yadj += $af + $this->linemaxfontsize + $bf - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
6464 }
6465 else if ($va == 'T') {
6466 $yadj += 0;
6467 }
6468 $this->objectbuffer[$dirk]['OUTER-Y'] += $yadj;
6469 $this->objectbuffer[$dirk]['BORDER-Y'] += $yadj;
6470 $this->objectbuffer[$dirk]['INNER-Y'] += $yadj;
6471 }
6472
6473 // DIRECTIONALITY RTL
6474 if ((($blockdir == 'rtl') && ($contains_rtl )) || ($all_rtl )) { $this->restoreFont($font[$arraysize-1 - $k]); }
6475 else { $this->restoreFont( $font[ $k ] ); }
6476
6477 $this->SetSpacing(($this->fixedlSpacing*_MPDFK)+$jcharspacing,($this->fixedlSpacing+$this->minwSpacing)*_MPDFK+$jws);
6478 // Now unset these values so they don't influence GetStringwidth below or in fn. Cell
6479 $this->fixedlSpacing = false;
6480 $this->minwSpacing = 0;
6481
6482 // mPDF 5.6.26
6483 $save_vis = $this->visibility;
6484 if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->textparam['visibility'] != $this->visibility) {
6485 $this->SetVisibility($this->textparam['visibility']);
6486 }
6487 // *********** SPAN BACKGROUND COLOR ***************** //
6488 if ($this->spanbgcolor) {
6489 $cor = $this->spanbgcolorarray;
6490 $this->SetFColor($cor);
6491 $save_fill = $fill; $spanfill = 1; $fill = 1;
6492 }
6493 if (!empty($this->spanborddet)) {
6494 if (strpos($contentB[$k],'L')!==false) $this->x += $this->spanborddet['L']['w'];
6495 if (strpos($contentB[$k],'L')===false) $this->spanborddet['L']['s'] = $this->spanborddet['L']['w'] = 0;
6496 if (strpos($contentB[$k],'R')===false) $this->spanborddet['R']['s'] = $this->spanborddet['R']['w'] = 0;
6497 }
6498
6499 // WORD SPACING
6500 $stringWidth = $this->GetStringWidth($chunk );
6501 $stringWidth += ( $this->charspacing * mb_strlen($chunk,$this->mb_enc ) / _MPDFK );
6502 $stringWidth += ( $this->ws * mb_substr_count($chunk,' ',$this->mb_enc ) / _MPDFK );
6503 if (isset($this->objectbuffer[$dirk])) { $stringWidth = $this->objectbuffer[$dirk]['OUTER-WIDTH']; }
6504
6505 if ($stringWidth==0) { $stringWidth = 0.000001; }
6506 if ($k == $arraysize-1) {
6507 $stringWidth -= ( $this->charspacing / _MPDFK );
6508 // mPDF 5.6.40
6509 if ($this->checkCJK && $CJKoverflow && $align=='J' && $this->allowCJKoverflow && $hanger && $this->CJKforceend) {
6510 // force-end overhang
6511 $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true );
6512 $this->Cell( $this->GetStringWidth($hanger), $lineHeight, $hanger, '', 1, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true );
6513 }
6514 else {
6515 $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)
6516 }
6517
6518 }
6519 else $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, 0, 0,0,'M', $fill, $af, $bf, true );//first or middle part
6520
6521 if (!empty($this->spanborddet)) {
6522 if (strpos($contentB[$k],'R')!==false && $k != $arraysize-1) $this->x += $this->spanborddet['R']['w'];
6523 }
6524 // *********** SPAN BACKGROUND COLOR OFF - RESET BLOCK BGCOLOR ***************** //
6525 if (isset($spanfill) && $spanfill) {
6526 $fill = $save_fill; $spanfill = 0;
6527 if ($fill) { $this->SetFColor($bcor); }
6528 }
6529 // mPDF 5.6.26
6530 if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->visibility != $save_vis) {
6531 $this->SetVisibility($save_vis);
6532 }
6533
6534 }
6535 if (!$is_table) {
6536 $this->maxPosR = max($this->maxPosR , ($this->w - $this->rMargin - $this->blk[$this->blklvl]['outer_right_margin']));
6537 $this->maxPosL = min($this->maxPosL , ($this->lMargin + $this->blk[$this->blklvl]['outer_left_margin']));
6538 }
6539
6540 // move on to the next line, reset variables, tack on saved content and current char
6541
6542 $this->printobjectbuffer($is_table, $blockdir);
6543 $this->objectbuffer = array();
6544
6545/*-- LISTS --*/
6546 // LIST BULLETS/NUMBERS
6547 if ($is_list && is_array($this->bulletarray) && ($lineCount == 1) ) {
6548
6549 $this->ResetSpacing();
6550
6551 $bull = $this->bulletarray;
6552 if (isset($bull['level']) && isset($bull['occur']) && isset($this->InlineProperties['LIST'][$bull['level']][$bull['occur']])) {
6553 $this->restoreInlineProperties($this->InlineProperties['LIST'][$bull['level']][$bull['occur']]);
6554 }
6555 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']]); }
6556 if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
6557 $this->bullet = true;
6558 $this->SetFont('czapfdingbats','',$this->FontSizePt/2.5);
6559 }
6560 else { $this->SetFont($this->FontFamily,$this->FontStyle,$this->FontSizePt,true,true); } // force output
6561 //Output bullet
6562 $this->x = $currentx;
6563 if (isset($bull['x'])) { $this->x += $bull['x']; }
6564 $this->y -= $lineHeight;
6565 if (isset($bull['col']) && $bull['col']) { $this->SetTColor($bull['col']); } // mPDF 5.6.67
6566 if (isset($bull['txt'])) { $this->Cell($bull['w'], $lineHeight,$bull['txt'],'','',$bull['align'],0,'',0,-$this->cMarginL, -$this->cMarginR ); }
6567 if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
6568 $this->bullet = false;
6569 }
6570 $this->x = $currentx; // Reset
6571 $this->y += $lineHeight;
6572
6573 if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
6574
6575 $this->bulletarray = array(); // prevents repeat of bullet/number if <li>....<br />.....</li>
6576 }
6577/*-- END LISTS --*/
6578
6579
6580/*-- CSS-IMAGE-FLOAT --*/
6581 // Update values if set to skipline
6582 if ($this->floatmargins) { $this->_advanceFloatMargins(); }
6583/*-- END CSS-IMAGE-FLOAT --*/
6584
6585 // Reset lineheight
6586 $lineHeight = $this->divheight;
6587 $valign = 'M';
6588
6589 $font = array();
6590 $content = array();
6591 $contentB = array();
6592 $contentWidth = 0;
6593 if (!empty($savedObj)) {
6594 $this->objectbuffer[] = $savedObj;
6595 $font[] = $savedFont;
6596 $content[] = '';
6597 $contentB[] = '';
6598 $contentWidth += $savedObj['OUTER-WIDTH'] * _MPDFK;
6599 }
6600 // mPDF 5.6.20
6601 if (count($savedPreContent) > 0) {
6602 for($ix=count($savedPreContent)-1;$ix>=0;$ix--) {
6603 $font[] = $savedPreFont[$ix];
6604 $content[] = $savedPreContent[$ix];
6605 $contentB[] = $savedPreContentB[$ix];
6606 $this->restoreFont( $savedPreFont[$ix] );
6607 $lbw = $rbw = 0; // Border widths
6608 if (!empty($this->spanborddet)) {
6609 $lbw = $this->spanborddet['L']['w'];
6610 $rbw = $this->spanborddet['R']['w'];
6611 }
6612 if ($ix>0) {
6613 $contentWidth += $this->GetStringWidth( $savedPreContent[$ix] ) * _MPDFK;
6614 if (strpos($savedPreContentB[$ix],'L')!==false) $contentWidth += $lbw;
6615 if (strpos($savedPreContentB[$ix],'R')!==false) $contentWidth += $rbw;
6616 }
6617 }
6618 $savedPreContent = array();
6619 $savedPreContentB = array();
6620 $savedPreFont = array();
6621 $content[ (count($content)-1) ] .= $c;
6622 }
6623 else {
6624 $font[] = $savedFont;
6625 $content[] = $savedContent . $c;
6626 $contentB[] = $savedContentB ;
6627 }
6628
6629 $currContent =& $content[ (count($content)-1) ];
6630
6631 // CJK - strip CJK space at end of line
6632 // &#x3000; = \xe3\x80\x80 = CJK space
6633 if ($this->checkCJK && $currContent == "\xe3\x80\x80") { $currContent = '' ; } // *CJK-FONTS*
6634
6635 $this->restoreFont( $savedFont );
6636 $lbw = $rbw = 0; // Border widths
6637 if (!empty($this->spanborddet)) {
6638 $lbw = $this->spanborddet['L']['w'];
6639 $rbw = $this->spanborddet['R']['w'];
6640 }
6641 $contentWidth += $this->GetStringWidth( $currContent ) * _MPDFK;
6642 if (strpos($savedContentB,'L')!==false) $contentWidth += $lbw;
6643 $cutoffWidth = $contentWidth;
6644 $CJKoverflow = false;
6645 $hanger = ''; // mPDF 5.6.40
6646 }
6647 // another character will fit, so add it on
6648 else {
6649 $contentWidth += $cw;
6650 $currContent .= $c;
6651 }
6652 }
6653 unset($content);
6654 unset($contentB);
6655}
6656//----------------------END OF FLOWING BLOCK------------------------------------//
6657
6658
6659/*-- CSS-IMAGE-FLOAT --*/
6660// Update values if set to skipline
6661function _advanceFloatMargins() {
6662 // Update floatmargins - L
6663 if (isset($this->floatmargins['L']) && $this->floatmargins['L']['skipline'] && $this->floatmargins['L']['y0'] != $this->y) {
6664 $yadj = $this->y - $this->floatmargins['L']['y0'];
6665 $this->floatmargins['L']['y0'] = $this->y;
6666 $this->floatmargins['L']['y1'] += $yadj;
6667
6668 // Update objattr in floatbuffer
6669 if ($this->floatbuffer[$this->floatmargins['L']['id']]['border_left']['w']) {
6670 $this->floatbuffer[$this->floatmargins['L']['id']]['BORDER-Y'] += $yadj;
6671 }
6672 $this->floatbuffer[$this->floatmargins['L']['id']]['INNER-Y'] += $yadj;
6673 $this->floatbuffer[$this->floatmargins['L']['id']]['OUTER-Y'] += $yadj;
6674
6675 // Unset values
6676 $this->floatbuffer[$this->floatmargins['L']['id']]['skipline'] = false;
6677 $this->floatmargins['L']['skipline'] = false;
6678 $this->floatmargins['L']['id'] = '';
6679 }
6680 // Update floatmargins - R
6681 if (isset($this->floatmargins['R']) && $this->floatmargins['R']['skipline'] && $this->floatmargins['R']['y0'] != $this->y) {
6682 $yadj = $this->y - $this->floatmargins['R']['y0'];
6683 $this->floatmargins['R']['y0'] = $this->y;
6684 $this->floatmargins['R']['y1'] += $yadj;
6685
6686 // Update objattr in floatbuffer
6687 if ($this->floatbuffer[$this->floatmargins['R']['id']]['border_left']['w']) {
6688 $this->floatbuffer[$this->floatmargins['R']['id']]['BORDER-Y'] += $yadj;
6689 }
6690 $this->floatbuffer[$this->floatmargins['R']['id']]['INNER-Y'] += $yadj;
6691 $this->floatbuffer[$this->floatmargins['R']['id']]['OUTER-Y'] += $yadj;
6692
6693 // Unset values
6694 $this->floatbuffer[$this->floatmargins['R']['id']]['skipline'] = false;
6695 $this->floatmargins['R']['skipline'] = false;
6696 $this->floatmargins['R']['id'] = '';
6697 }
6698}
6699/*-- END CSS-IMAGE-FLOAT --*/
6700
6701
6702
6703////////////////////////////////////////////////////////////////////////////////
6704// ADDED forcewrap - to call from inline OBJECT functions to breakwords if necessary in cell
6705////////////////////////////////////////////////////////////////////////////////
6706function WordWrap(&$text, $maxwidth, $forcewrap = 0) {
6707 $biggestword=0;
6708 $toonarrow=false;
6709
6710 $text = trim($text);
6711
6712 if ($text==='') return 0;
6713 $space = $this->GetCharWidth(' ',false);
6714 $lines = explode("\n", $text);
6715 $text = '';
6716 $count = 0;
6717 foreach ($lines as $line) {
6718 $words = explode(' ', $line);
6719 $width = 0;
6720 foreach ($words as $word) {
6721 $word = trim($word);
6722 $wordwidth = $this->GetStringWidth($word);
6723 //Warn user that maxwidth is insufficient
6724 if ($wordwidth > $maxwidth + 0.0001) {
6725 if ($wordwidth > $biggestword) { $biggestword = $wordwidth; }
6726 $toonarrow=true;
6727 // ADDED
6728 if ($forcewrap) {
6729 while($wordwidth > $maxwidth) {
6730 $chw = 0; // check width
6731 for ( $i = 0; $i < mb_strlen($word, $this->mb_enc ); $i++ ) {
6732 $chw = $this->GetStringWidth(mb_substr($word,0,$i+1,$this->mb_enc ));
6733 if ($chw > $maxwidth ) {
6734 if ($text) {
6735 $text = rtrim($text)."\n".mb_substr($word,0,$i,$this->mb_enc );
6736 $count++;
6737 }
6738 else {
6739 $text = mb_substr($word,0,$i,$this->mb_enc );
6740 }
6741 $word = mb_substr($word,$i,mb_strlen($word, $this->mb_enc )-$i,$this->mb_enc );
6742 $wordwidth = $this->GetStringWidth($word);
6743 $width = $maxwidth;
6744 break;
6745 }
6746 }
6747 }
6748 }
6749 }
6750
6751 if ($width + $wordwidth < $maxwidth - 0.0001) {
6752 $width += $wordwidth + $space;
6753 $text .= $word.' ';
6754 }
6755 else {
6756 $width = $wordwidth + $space;
6757 $text = rtrim($text)."\n".$word.' ';
6758 $count++;
6759 }
6760 }
6761 $text .= "\n";
6762 $count++;
6763 }
6764 $text = rtrim($text);
6765
6766 //Return -(wordsize) if word is bigger than maxwidth
6767
6768 // ADDED
6769 if ($forcewrap) { return $count; }
6770 if (($toonarrow) && ($this->table_error_report)) {
6771 $this->Error("Word is too long to fit in table - ".$this->table_error_report_param);
6772 }
6773 if ($toonarrow) return -$biggestword;
6774 else return $count;
6775}
6776
6777/*-- END HTML-CSS --*/
6778
6779function _SetTextRendering($mode) {
6780 if (!(($mode == 0) || ($mode == 1) || ($mode == 2)))
6781 $this->Error("Text rendering mode should be 0, 1 or 2 (value : $mode)");
6782 $tr = ($mode.' Tr');
6783 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); }
6784 $this->pageoutput[$this->page]['TextRendering'] = $tr;
6785
6786}
6787
6788function SetTextOutline($params=array()) { // mPDF 5.6.07
6789 if (isset($params['outline-s']) && $params['outline-s'])
6790 {
6791 $this->SetLineWidth($params['outline-WIDTH']);
6792 $this->SetDColor($params['outline-COLOR']);
6793 $tr = ('2 Tr');
6794 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); }
6795 $this->pageoutput[$this->page]['TextRendering'] = $tr;
6796 }
6797 else //Now resets all values
6798 {
6799 $this->SetLineWidth(0.2);
6800 $this->SetDColor($this->ConvertColor(0));
6801 $this->_SetTextRendering(0);
6802 $tr = ('0 Tr');
6803 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); }
6804 $this->pageoutput[$this->page]['TextRendering'] = $tr;
6805 }
6806}
6807
6808function Image($file,$x,$y,$w=0,$h=0,$type='',$link='',$paint=true, $constrain=true, $watermark=false, $shownoimg=true, $allowvector=true) {
6809 $orig_srcpath = $file;
6810 $this->GetFullPath($file);
6811
6812 $info=$this->_getImage($file, true, $allowvector, $orig_srcpath );
6813 if(!$info && $paint) {
6814 $info = $this->_getImage($this->noImageFile);
6815 if ($info) {
6816 $file = $this->noImageFile;
6817 $w = ($info['w'] * (25.4/$this->dpi)); // 14 x 16px
6818 $h = ($info['h'] * (25.4/$this->dpi)); // 14 x 16px
6819 }
6820 }
6821 if(!$info) return false;
6822 //Automatic width and height calculation if needed
6823 if($w==0 and $h==0) {
6824/*-- IMAGES-WMF --*/
6825 if ($info['type']=='wmf') {
6826 // WMF units are twips (1/20pt)
6827 // divide by 20 to get points
6828 // divide by k to get user units
6829 $w = abs($info['w'])/(20*_MPDFK);
6830 $h = abs($info['h']) / (20*_MPDFK);
6831 }
6832 else
6833/*-- END IMAGES-WMF --*/
6834 if ($info['type']=='svg') {
6835 // returned SVG units are pts
6836 // divide by k to get user units (mm)
6837 $w = abs($info['w'])/_MPDFK;
6838 $h = abs($info['h']) /_MPDFK;
6839 }
6840 else {
6841 //Put image at default image dpi
6842 $w=($info['w']/_MPDFK) * (72/$this->img_dpi);
6843 $h=($info['h']/_MPDFK) * (72/$this->img_dpi);
6844 }
6845 }
6846 if($w==0) $w=abs($h*$info['w']/$info['h']);
6847 if($h==0) $h=abs($w*$info['h']/$info['w']);
6848
6849/*-- WATERMARK --*/
6850 if ($watermark) {
6851 $maxw = $this->w;
6852 $maxh = $this->h;
6853 // Size = D PF or array
6854 if (is_array($this->watermark_size)) {
6855 $w = $this->watermark_size[0];
6856 $h = $this->watermark_size[1];
6857 }
6858 else if (!is_string($this->watermark_size)) {
6859 $maxw -= $this->watermark_size*2;
6860 $maxh -= $this->watermark_size*2;
6861 $w = $maxw;
6862 $h=abs($w*$info['h']/$info['w']);
6863 if ($h > $maxh ) {
6864 $h = $maxh ; $w=abs($h*$info['w']/$info['h']);
6865 }
6866 }
6867 else if ($this->watermark_size == 'F') {
6868 if ($this->ColActive) { $maxw = $this->w - ($this->DeflMargin + $this->DefrMargin); }
6869 else { $maxw = $this->pgwidth; }
6870 $maxh = $this->h - ($this->tMargin + $this->bMargin);
6871 $w = $maxw;
6872 $h=abs($w*$info['h']/$info['w']);
6873 if ($h > $maxh ) {
6874 $h = $maxh ; $w=abs($h*$info['w']/$info['h']);
6875 }
6876 }
6877 else if ($this->watermark_size == 'P') { // Default P
6878 $w = $maxw;
6879 $h=abs($w*$info['h']/$info['w']);
6880 if ($h > $maxh ) {
6881 $h = $maxh ; $w=abs($h*$info['w']/$info['h']);
6882 }
6883 }
6884 // Automatically resize to maximum dimensions of page if too large
6885 if ($w > $maxw) {
6886 $w = $maxw;
6887 $h=abs($w*$info['h']/$info['w']);
6888 }
6889 if ($h > $maxh ) {
6890 $h = $maxh ;
6891 $w=abs($h*$info['w']/$info['h']);
6892 }
6893 // Position
6894 if (is_array($this->watermark_pos)) {
6895 $x = $this->watermark_pos[0];
6896 $y = $this->watermark_pos[1];
6897 }
6898 else if ($this->watermark_pos == 'F') { // centred on printable area
6899 if ($this->ColActive) { // *COLUMNS*
6900 if (($this->mirrorMargins) && (($this->page)%2==0)) { $xadj = $this->DeflMargin-$this->DefrMargin; } // *COLUMNS*
6901 else { $xadj = 0; } // *COLUMNS*
6902 $x = ($this->DeflMargin - $xadj + ($this->w - ($this->DeflMargin + $this->DefrMargin))/2) - ($w/2); // *COLUMNS*
6903 } // *COLUMNS*
6904 else { // *COLUMNS*
6905 $x = ($this->lMargin + ($this->pgwidth)/2) - ($w/2);
6906 } // *COLUMNS*
6907 $y = ($this->tMargin + ($this->h - ($this->tMargin + $this->bMargin))/2) - ($h/2);
6908 }
6909 else { // default P - centred on whole page
6910 $x = ($this->w/2) - ($w/2);
6911 $y = ($this->h/2) - ($h/2);
6912 }
6913/*-- IMAGES-WMF --*/
6914 if ($info['type']=='wmf') {
6915 $sx = $w*_MPDFK / $info['w'];
6916 $sy = -$h*_MPDFK / $info['h'];
6917 $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']);
6918 }
6919 else
6920/*-- END IMAGES-WMF --*/
6921 if ($info['type']=='svg') {
6922 $sx = $w*_MPDFK / $info['w'];
6923 $sy = -$h*_MPDFK / $info['h'];
6924 $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']);
6925 }
6926 else {
6927 $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']);
6928 }
6929
6930 if ($this->watermarkImgBehind) {
6931 $outstring = $this->watermarkImgAlpha . "\n" . $outstring . "\n" . $this->SetAlpha(1, 'Normal', true) . "\n";
6932 $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', "\n".$outstring."\n".'\\1', $this->pages[$this->page]);
6933 }
6934 else { $this->_out($outstring); }
6935
6936 return 0;
6937 } // end of IF watermark
6938/*-- END WATERMARK --*/
6939
6940 if ($constrain) {
6941 // Automatically resize to maximum dimensions of page if too large
6942 if (isset($this->blk[$this->blklvl]['inner_width']) && $this->blk[$this->blklvl]['inner_width']) { $maxw = $this->blk[$this->blklvl]['inner_width']; }
6943 else { $maxw = $this->pgwidth; }
6944 if ($w > $maxw) {
6945 $w = $maxw;
6946 $h=abs($w*$info['h']/$info['w']);
6947 }
6948 if ($h > $this->h - ($this->tMargin + $this->bMargin + 1)) { // see below - +10 to avoid drawing too close to border of page
6949 $h = $this->h - ($this->tMargin + $this->bMargin + 1) ;
6950 if ($this->fullImageHeight) { $h = $this->fullImageHeight; }
6951 $w=abs($h*$info['w']/$info['h']);
6952 }
6953
6954
6955 //Avoid drawing out of the paper(exceeding width limits).
6956 //if ( ($x + $w) > $this->fw ) {
6957 if ( ($x + $w) > $this->w ) {
6958 $x = $this->lMargin;
6959 $y += 5;
6960 }
6961
6962 $changedpage = false;
6963 $oldcolumn = $this->CurrCol;
6964 //Avoid drawing out of the page.
6965 if($y+$h>$this->PageBreakTrigger and !$this->InFooter and $this->AcceptPageBreak()) {
6966 $this->AddPage($this->CurOrientation);
6967 // Added to correct for OddEven Margins
6968 $x=$x +$this->MarginCorrection;
6969 $y = $tMargin + $this->margin_header;
6970 $changedpage = true;
6971 }
6972/*-- COLUMNS --*/
6973 // COLS
6974 // COLUMN CHANGE
6975 if ($this->CurrCol != $oldcolumn) {
6976 $y = $this->y0;
6977 $x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
6978 $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
6979 }
6980/*-- END COLUMNS --*/
6981 } // end of IF constrain
6982
6983/*-- IMAGES-WMF --*/
6984 if ($info['type']=='wmf') {
6985 $sx = $w*_MPDFK / $info['w'];
6986 $sy = -$h*_MPDFK / $info['h'];
6987 $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']);
6988 }
6989 else
6990/*-- END IMAGES-WMF --*/
6991 if ($info['type']=='svg') {
6992 $sx = $w*_MPDFK / $info['w'];
6993 $sy = -$h*_MPDFK / $info['h'];
6994 $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']);
6995 }
6996 else {
6997 $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']);
6998 }
6999
7000 if($paint) {
7001 $this->_out($outstring);
7002 if($link) $this->Link($x,$y,$w,$h,$link);
7003
7004 // Avoid writing text on top of the image. // THIS WAS OUTSIDE THE if ($paint) bit!!!!!!!!!!!!!!!!
7005 $this->y = $y + $h;
7006 }
7007
7008 //Return width-height array
7009 $sizesarray['WIDTH'] = $w;
7010 $sizesarray['HEIGHT'] = $h;
7011 $sizesarray['X'] = $x; //Position before painting image
7012 $sizesarray['Y'] = $y; //Position before painting image
7013 $sizesarray['OUTPUT'] = $outstring;
7014
7015 $sizesarray['IMAGE_ID'] = $info['i'];
7016 $sizesarray['itype'] = $info['type'];
7017 $sizesarray['set-dpi'] = $info['set-dpi'];
7018 return $sizesarray;
7019}
7020
7021
7022
7023//=============================================================
7024//=============================================================
7025//=============================================================
7026//=============================================================
7027//=============================================================
7028/*-- HTML-CSS --*/
7029
7030function _getObjAttr($t) {
7031 $c = explode("\xbb\xa4\xac",$t,2);
7032 $c = explode(",",$c[1],2);
7033 foreach($c as $v) {
7034 $v = explode("=",$v,2);
7035 $sp[$v[0]] = $v[1];
7036 }
7037 return (unserialize($sp['objattr']));
7038}
7039
7040
7041function inlineObject($type,$x,$y,$objattr,$Lmargin,$widthUsed,$maxWidth,$lineHeight,$paint=false,$is_table=false)
7042{
7043 if ($is_table) { $k = $this->shrin_k; } else { $k = 1; }
7044
7045 // NB $x is only used when paint=true
7046 // Lmargin not used
7047 $w = 0;
7048 if (isset($objattr['width'])) { $w = $objattr['width']/$k; }
7049 $h = 0;
7050 if (isset($objattr['height'])) { $h = abs($objattr['height']/$k); }
7051 $widthLeft = $maxWidth - $widthUsed;
7052 $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 10) ;
7053 if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
7054 // For Images
7055 if (isset($objattr['border_left'])) {
7056 $extraWidth = ($objattr['border_left']['w'] + $objattr['border_right']['w'] + $objattr['margin_left']+ $objattr['margin_right'])/$k;
7057 $extraHeight = ($objattr['border_top']['w'] + $objattr['border_bottom']['w'] + $objattr['margin_top']+ $objattr['margin_bottom'])/$k;
7058
7059 if ($type == 'image' || $type == 'barcode' || $type == 'textcircle') {
7060 $extraWidth += ($objattr['padding_left'] + $objattr['padding_right'])/$k;
7061 $extraHeight += ($objattr['padding_top'] + $objattr['padding_bottom'])/$k;
7062 }
7063 }
7064
7065 if (!isset($objattr['vertical-align'])) { $objattr['vertical-align'] = 'M'; }
7066
7067 if ($type == 'image' || (isset($objattr['subtype']) && $objattr['subtype'] == 'IMAGE')) {
7068 if (isset($objattr['itype']) && ($objattr['itype'] == 'wmf' || $objattr['itype'] == 'svg')) {
7069 $file = $objattr['file'];
7070 $info=$this->formobjects[$file];
7071 }
7072 else if (isset($objattr['file'])) {
7073 $file = $objattr['file'];
7074 $info=$this->images[$file];
7075 }
7076 }
7077 if ($type == 'annot' || $type == 'bookmark' || $type == 'indexentry' || $type == 'toc') {
7078 $w = 0.00001;
7079 $h = 0.00001;
7080 }
7081
7082 // TEST whether need to skipline
7083 if (!$paint) {
7084 if ($type == 'hr') { // always force new line
7085 if (($y + $h + $lineHeight > $this->PageBreakTrigger) && !$this->InFooter && !$is_table) { return array(-2, $w ,$h ); } // New page + new line
7086 else { return array(1, $w ,$h ); } // new line
7087 }
7088 else {
7089 if ($widthUsed > 0 && $w > $widthLeft && (!$is_table || $type != 'image')) { // New line needed
7090 if (($y + $h + $lineHeight > $this->PageBreakTrigger) && !$this->InFooter) { return array(-2,$w ,$h ); } // New page + new line
7091 return array(1,$w ,$h ); // new line
7092 }
7093 else if ($widthUsed > 0 && $w > $widthLeft && $is_table) { // New line needed in TABLE
7094 return array(1,$w ,$h ); // new line
7095 }
7096 // Will fit on line but NEW PAGE REQUIRED
7097 else if (($y + $h > $this->PageBreakTrigger) && !$this->InFooter && !$is_table) { return array(-1,$w ,$h ); }
7098 else { return array(0,$w ,$h ); }
7099 }
7100 }
7101
7102 if ($type == 'annot' || $type == 'bookmark' || $type == 'indexentry' || $type == 'toc') {
7103 $w = 0.00001;
7104 $h = 0.00001;
7105 $objattr['BORDER-WIDTH'] = 0;
7106 $objattr['BORDER-HEIGHT'] = 0;
7107 $objattr['BORDER-X'] = $x;
7108 $objattr['BORDER-Y'] = $y;
7109 $objattr['INNER-WIDTH'] = 0;
7110 $objattr['INNER-HEIGHT'] = 0;
7111 $objattr['INNER-X'] = $x;
7112 $objattr['INNER-Y'] = $y;
7113 }
7114
7115 if ($type == 'image') {
7116 // Automatically resize to width remaining
7117 if ($w > $widthLeft && !$is_table) {
7118 $w = $widthLeft ;
7119 $h=abs($w*$info['h']/$info['w']);
7120 }
7121 $img_w = $w - $extraWidth ;
7122 $img_h = $h - $extraHeight ;
7123
7124 $objattr['BORDER-WIDTH'] = $img_w + $objattr['padding_left']/$k + $objattr['padding_right']/$k + (($objattr['border_left']['w']/$k + $objattr['border_right']['w']/$k)/2) ;
7125 $objattr['BORDER-HEIGHT'] = $img_h + $objattr['padding_top']/$k + $objattr['padding_bottom']/$k + (($objattr['border_top']['w']/$k + $objattr['border_bottom']['w']/$k)/2) ;
7126 $objattr['BORDER-X'] = $x + $objattr['margin_left']/$k + (($objattr['border_left']['w']/$k)/2) ;
7127 $objattr['BORDER-Y'] = $y + $objattr['margin_top']/$k + (($objattr['border_top']['w']/$k)/2) ;
7128 $objattr['INNER-WIDTH'] = $img_w;
7129 $objattr['INNER-HEIGHT'] = $img_h;
7130 $objattr['INNER-X'] = $x + $objattr['padding_left']/$k + $objattr['margin_left']/$k + ($objattr['border_left']['w']/$k);
7131 $objattr['INNER-Y'] = $y + $objattr['padding_top']/$k + $objattr['margin_top']/$k + ($objattr['border_top']['w']/$k) ;
7132 $objattr['ID'] = $info['i'];
7133 }
7134
7135 if ($type == 'input' && $objattr['subtype'] == 'IMAGE') {
7136 $img_w = $w - $extraWidth ;
7137 $img_h = $h - $extraHeight ;
7138 $objattr['BORDER-WIDTH'] = $img_w + (($objattr['border_left']['w']/$k + $objattr['border_right']['w']/$k)/2) ;
7139 $objattr['BORDER-HEIGHT'] = $img_h + (($objattr['border_top']['w']/$k + $objattr['border_bottom']['w']/$k)/2) ;
7140 $objattr['BORDER-X'] = $x + $objattr['margin_left']/$k + (($objattr['border_left']['w']/$k)/2) ;
7141 $objattr['BORDER-Y'] = $y + $objattr['margin_top']/$k + (($objattr['border_top']['w']/$k)/2) ;
7142 $objattr['INNER-WIDTH'] = $img_w;
7143 $objattr['INNER-HEIGHT'] = $img_h;
7144 $objattr['INNER-X'] = $x + $objattr['margin_left']/$k + ($objattr['border_left']['w']/$k);
7145 $objattr['INNER-Y'] = $y + $objattr['margin_top']/$k + ($objattr['border_top']['w']/$k) ;
7146 $objattr['ID'] = $info['i'];
7147 }
7148
7149 if ($type == 'barcode' || $type == 'textcircle') {
7150 $b_w = $w - $extraWidth ;
7151 $b_h = $h - $extraHeight ;
7152 $objattr['BORDER-WIDTH'] = $b_w + $objattr['padding_left']/$k + $objattr['padding_right']/$k + (($objattr['border_left']['w']/$k + $objattr['border_right']['w']/$k)/2) ;
7153 $objattr['BORDER-HEIGHT'] = $b_h + $objattr['padding_top']/$k + $objattr['padding_bottom']/$k + (($objattr['border_top']['w']/$k + $objattr['border_bottom']['w']/$k)/2) ;
7154 $objattr['BORDER-X'] = $x + $objattr['margin_left']/$k + (($objattr['border_left']['w']/$k)/2) ;
7155 $objattr['BORDER-Y'] = $y + $objattr['margin_top']/$k + (($objattr['border_top']['w']/$k)/2) ;
7156 $objattr['INNER-X'] = $x + $objattr['padding_left']/$k + $objattr['margin_left']/$k + ($objattr['border_left']['w']/$k);
7157 $objattr['INNER-Y'] = $y + $objattr['padding_top']/$k + $objattr['margin_top']/$k + ($objattr['border_top']['w']/$k) ;
7158 $objattr['INNER-WIDTH'] = $b_w;
7159 $objattr['INNER-HEIGHT'] = $b_h;
7160 }
7161
7162
7163 if ($type == 'textarea') {
7164 // Automatically resize to width remaining
7165 if ($w > $widthLeft && !$is_table) {
7166 $w = $widthLeft ;
7167 }
7168 if (($y + $h > $this->PageBreakTrigger) && !$this->InFooter) {
7169 $h=$this->h - $y - $this->bMargin;
7170 }
7171 }
7172
7173 if ($type == 'hr') {
7174 if ($is_table) {
7175 $objattr['INNER-WIDTH'] = $maxWidth * $objattr['W-PERCENT']/100;
7176 $objattr['width'] = $objattr['INNER-WIDTH'];
7177 $w = $maxWidth;
7178 }
7179 else {
7180 if ($w>$maxWidth) { $w = $maxWidth; }
7181 $objattr['INNER-WIDTH'] = $w;
7182 $w = $maxWidth;
7183 }
7184 }
7185
7186
7187
7188 if (($type == 'select') || ($type == 'input' && ($objattr['subtype'] == 'TEXT' || $objattr['subtype'] == 'PASSWORD'))) {
7189 // Automatically resize to width remaining
7190 if ($w > $widthLeft && !$is_table) {
7191 $w = $widthLeft;
7192 }
7193 }
7194
7195 if ($type == 'textarea' || $type == 'select' || $type == 'input') {
7196 if (isset($objattr['fontsize'])) $objattr['fontsize'] /= $k;
7197 if (isset($objattr['linewidth'])) $objattr['linewidth'] /= $k;
7198 }
7199
7200 if (!isset($objattr['BORDER-Y'])) { $objattr['BORDER-Y'] = 0; }
7201 if (!isset($objattr['BORDER-X'])) { $objattr['BORDER-X'] = 0; }
7202 if (!isset($objattr['INNER-Y'])) { $objattr['INNER-Y'] = 0; }
7203 if (!isset($objattr['INNER-X'])) { $objattr['INNER-X'] = 0; }
7204
7205 //Return width-height array
7206 $objattr['OUTER-WIDTH'] = $w;
7207 $objattr['OUTER-HEIGHT'] = $h;
7208 $objattr['OUTER-X'] = $x;
7209 $objattr['OUTER-Y'] = $y;
7210 return $objattr;
7211}
7212
7213/*-- END HTML-CSS --*/
7214
7215//=============================================================
7216//=============================================================
7217//=============================================================
7218//=============================================================
7219//=============================================================
7220
7221function SetLineJoin($mode=0)
7222{
7223 $s=sprintf('%d j',$mode);
7224 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); }
7225 $this->pageoutput[$this->page]['LineJoin'] = $s;
7226
7227}
7228function SetLineCap($mode=2) {
7229 $s=sprintf('%d J',$mode);
7230 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); }
7231 $this->pageoutput[$this->page]['LineCap'] = $s;
7232
7233}
7234
7235function SetDash($black=false,$white=false)
7236{
7237 if($black and $white) $s=sprintf('[%.3F %.3F] 0 d',$black*_MPDFK,$white*_MPDFK);
7238 else $s='[] 0 d';
7239 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); }
7240 $this->pageoutput[$this->page]['Dash'] = $s;
7241
7242}
7243
7244function SetDisplayPreferences($preferences) {
7245 // String containing any or none of /HideMenubar/HideToolbar/HideWindowUI/DisplayDocTitle/CenterWindow/FitWindow
7246 $this->DisplayPreferences .= $preferences;
7247}
7248
7249
7250function Ln($h='',$collapsible=0)
7251{
7252// Added collapsible to allow collapsible top-margin on new page
7253 //Line feed; default value is last cell height
7254 $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
7255 if ($collapsible && ($this->y==$this->tMargin) && (!$this->ColActive)) { $h = 0; }
7256 if(is_string($h)) $this->y+=$this->lasth;
7257 else $this->y+=$h;
7258}
7259
7260/*-- HTML-CSS --*/
7261// $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
7262function DivLn($h,$level=-3,$move_y=true,$collapsible=false,$state=0) {
7263 // this->x is returned as it was
7264 // adds lines (y) where DIV bgcolors are filled in
7265 // allows .00001 as nominal height used for bookmarks/annotations etc.
7266 if ($collapsible && (sprintf("%0.4f", $this->y)==sprintf("%0.4f", $this->tMargin)) && (!$this->ColActive)) { return; }
7267 if ($collapsible && (sprintf("%0.4f", $this->y)==sprintf("%0.4f", $this->y0)) && ($this->ColActive) && $this->CurrCol == 0) { return; } // *COLUMNS*
7268
7269 // Still use this method if columns or page-break-inside: avoid, as it allows repositioning later
7270 // otherwise, now uses PaintDivBB()
7271 if (!$this->ColActive && !$this->keep_block_together && !$this->kwt) {
7272 if ($move_y && !$this->ColActive) { $this->y += $h; }
7273 return;
7274 }
7275
7276 if ($level == -3) { $level = $this->blklvl; }
7277 $firstblockfill = $this->GetFirstBlockFill();
7278 if ($firstblockfill && $this->blklvl > 0 && $this->blklvl >= $firstblockfill) {
7279 $last_x = 0;
7280 $last_w = 0;
7281 $last_fc = $this->FillColor;
7282 $bak_x = $this->x;
7283 $bak_h = $this->divheight;
7284 $this->divheight = 0; // Temporarily turn off divheight - as Cell() uses it to check for PageBreak
7285 for ($blvl=$firstblockfill;$blvl<=$level;$blvl++) {
7286 $this->SetBlockFill($blvl);
7287 $this->x = $this->lMargin + $this->blk[$blvl]['outer_left_margin'];
7288 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
7289 $x = $this->x;
7290 $this->Cell( ($this->blk[$blvl]['width']), $h, '', '', 0, '', 1);
7291 if (!$this->keep_block_together && !$this->writingHTMLheader && !$this->writingHTMLfooter) {
7292 $this->x = $x;
7293 // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
7294 if ($blvl == $this->blklvl) { $this->PaintDivLnBorder($state,$blvl,$h); }
7295 else { $this->PaintDivLnBorder(0,$blvl,$h); }
7296 }
7297 }
7298 $last_x = $this->lMargin + $this->blk[$blvl]['outer_left_margin'];
7299 $last_w = $this->blk[$blvl]['width'];
7300 $last_fc = $this->FillColor;
7301 }
7302 // Reset current block fill
7303 if (isset($this->blk[$this->blklvl]['bgcolorarray'])) {
7304 $bcor = $this->blk[$this->blklvl]['bgcolorarray'];
7305 $this->SetFColor($bcor);
7306 }
7307 $this->x = $bak_x;
7308 $this->divheight = $bak_h;
7309 }
7310 if ($move_y) { $this->y += $h; }
7311}
7312/*-- END HTML-CSS --*/
7313
7314
7315function SetX($x)
7316{
7317 //Set x position
7318 if($x >= 0) $this->x=$x;
7319 else $this->x = $this->w + $x;
7320}
7321
7322function SetY($y)
7323{
7324 //Set y position and reset x
7325 $this->x=$this->lMargin;
7326 if($y>=0)
7327 $this->y=$y;
7328 else
7329 $this->y=$this->h+$y;
7330}
7331
7332function SetXY($x,$y)
7333{
7334 //Set x and y positions
7335 $this->SetY($y);
7336 $this->SetX($x);
7337}
7338
7339
7340function Output($name='',$dest='')
7341{
7342 //Output PDF to some destination
7343 if ($this->showStats) {
7344 echo '<div>Generated in '.sprintf('%.2F',(microtime(true) - $this->time0)).' seconds</div>';
7345 }
7346 //Finish document if necessary
7347 if ($this->progressBar) { $this->UpdateProgressBar(1,'100','Finished'); } // *PROGRESS-BAR*
7348 if($this->state < 3) $this->Close();
7349 if ($this->progressBar) { $this->UpdateProgressBar(2,'100','Finished'); } // *PROGRESS-BAR*
7350 // fn. error_get_last is only in PHP>=5.2
7351 if ($this->debug && function_exists('error_get_last') && error_get_last()) {
7352 $e = error_get_last();
7353 if (($e['type'] < 2048 && $e['type'] != 8) || (intval($e['type']) & intval(ini_get("error_reporting")))) {
7354 echo "<p>Error message detected - PDF file generation aborted.</p>";
7355 echo $e['message'].'<br />';
7356 echo 'File: '.$e['file'].'<br />';
7357 echo 'Line: '.$e['line'].'<br />';
7358 exit;
7359 }
7360 }
7361
7362
7363 if (($this->PDFA || $this->PDFX) && $this->encrypted) { $this->Error("PDFA1-b or PDFX/1-a does not permit encryption of documents."); }
7364 if (count($this->PDFAXwarnings) && (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto))) {
7365 if ($this->PDFA) {
7366 echo '<div>WARNING - This file could not be generated as it stands as a PDFA1-b compliant file.</div>';
7367 echo '<div>These issues can be automatically fixed by mPDF using <i>$mpdf-&gt;PDFAauto=true;</i></div>';
7368 echo '<div>Action that mPDF will take to automatically force PDFA1-b compliance are shown in brackets.</div>';
7369 }
7370 else {
7371 echo '<div>WARNING - This file could not be generated as it stands as a PDFX/1-a compliant file.</div>';
7372 echo '<div>These issues can be automatically fixed by mPDF using <i>$mpdf-&gt;PDFXauto=true;</i></div>';
7373 echo '<div>Action that mPDF will take to automatically force PDFX/1-a compliance are shown in brackets.</div>';
7374 }
7375 echo '<div>Warning(s) generated:</div><ul>';
7376 $this->PDFAXwarnings = array_unique($this->PDFAXwarnings);
7377 foreach($this->PDFAXwarnings AS $w) {
7378 echo '<li>'.$w.'</li>';
7379 }
7380 echo '</ul>';
7381 exit;
7382 }
7383
7384 if ($this->showStats) {
7385 echo '<div>Compiled in '.sprintf('%.2F',(microtime(true) - $this->time0)).' seconds (total)</div>';
7386 echo '<div>Peak Memory usage '.number_format((memory_get_peak_usage(true)/(1024*1024)),2).' MB</div>';
7387 echo '<div>PDF file size '.number_format((strlen($this->buffer)/1024)).' kB</div>';
7388 echo '<div>Number of fonts '.count($this->fonts).'</div>';
7389 exit;
7390 }
7391
7392
7393 if(is_bool($dest)) $dest=$dest ? 'D' : 'F';
7394 $dest=strtoupper($dest);
7395 if($dest=='') {
7396 if($name=='') {
7397 $name='mpdf.pdf';
7398 $dest='I';
7399 }
7400 else { $dest='F'; }
7401 }
7402
7403/*-- PROGRESS-BAR --*/
7404 if ($this->progressBar && ($dest=='D' || $dest=='I')) {
7405 if($name=='') { $name='mpdf.pdf'; }
7406 $tempfile = '_tempPDF'.uniqid(rand(1,100000),true);
7407 //Save to local file
7408 $f=fopen(_MPDF_TEMP_PATH.$tempfile.'.pdf','wb');
7409 if(!$f) $this->Error('Unable to create temporary output file: '.$tempfile.'.pdf');
7410 fwrite($f,$this->buffer,strlen($this->buffer));
7411 fclose($f);
7412 $this->UpdateProgressBar(3,'','Finished');
7413
7414 echo '<script type="text/javascript">
7415
7416 var form = document.createElement("form");
7417 form.setAttribute("method", "post");
7418 form.setAttribute("action", "'._MPDF_URI.'includes/out.php");
7419
7420 var hiddenField = document.createElement("input");
7421 hiddenField.setAttribute("type", "hidden");
7422 hiddenField.setAttribute("name", "filename");
7423 hiddenField.setAttribute("value", "'.$tempfile.'");
7424 form.appendChild(hiddenField);
7425
7426 var hiddenField = document.createElement("input");
7427 hiddenField.setAttribute("type", "hidden");
7428 hiddenField.setAttribute("name", "dest");
7429 hiddenField.setAttribute("value", "'.$dest.'");
7430 form.appendChild(hiddenField);
7431
7432 var hiddenField = document.createElement("input");
7433 hiddenField.setAttribute("type", "hidden");
7434 hiddenField.setAttribute("name", "opname");
7435 hiddenField.setAttribute("value", "'.$name.'");
7436 form.appendChild(hiddenField);
7437
7438 var hiddenField = document.createElement("input");
7439 hiddenField.setAttribute("type", "hidden");
7440 hiddenField.setAttribute("name", "path");
7441 hiddenField.setAttribute("value", "'.urlencode(_MPDF_TEMP_PATH).'");
7442 form.appendChild(hiddenField);
7443
7444 document.body.appendChild(form);
7445 form.submit();
7446
7447 </script>
7448 </div>
7449 </body>
7450 </html>';
7451 exit;
7452 }
7453 else {
7454 if ($this->progressBar) { $this->UpdateProgressBar(3,'','Finished'); }
7455/*-- END PROGRESS-BAR --*/
7456
7457 switch($dest) {
7458 case 'I':
7459 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; }
7460 //Send to standard output
7461 if(PHP_SAPI!='cli') {
7462 //We send to a browser
7463 header('Content-Type: application/pdf');
7464 if(headers_sent())
7465 $this->Error('Some data has already been output to browser, can\'t send PDF file');
7466 if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
7467 // don't use length if server using compression
7468 header('Content-Length: '.strlen($this->buffer));
7469 }
7470 header('Content-disposition: inline; filename="'.$name.'"');
7471 header('Cache-Control: public, must-revalidate, max-age=0');
7472 header('Pragma: public');
7473 header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
7474 header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
7475 }
7476 echo $this->buffer;
7477 break;
7478 case 'D':
7479 //Download file
7480 header('Content-Description: File Transfer');
7481 if (headers_sent())
7482 $this->Error('Some data has already been output to browser, can\'t send PDF file');
7483 header('Content-Transfer-Encoding: binary');
7484 header('Cache-Control: public, must-revalidate, max-age=0');
7485 header('Pragma: public');
7486 header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
7487 header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
7488 header('Content-Type: application/force-download');
7489 header('Content-Type: application/octet-stream', false);
7490 header('Content-Type: application/download', false);
7491 header('Content-Type: application/pdf', false);
7492 if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
7493 // don't use length if server using compression
7494 header('Content-Length: '.strlen($this->buffer));
7495 }
7496 header('Content-disposition: attachment; filename="'.$name.'"');
7497 echo $this->buffer;
7498 break;
7499 case 'F':
7500 //Save to local file
7501 $f=fopen($name,'wb');
7502 if(!$f) $this->Error('Unable to create output file: '.$name);
7503 fwrite($f,$this->buffer,strlen($this->buffer));
7504 fclose($f);
7505 break;
7506 case 'S':
7507 //Return as a string
7508 return $this->buffer;
7509 default:
7510 $this->Error('Incorrect output destination: '.$dest);
7511 }
7512
7513 } // *PROGRESS-BAR*
7514 //======================================================================================================
7515 // DELETE OLD TMP FILES - Housekeeping
7516 // Delete any files in tmp/ directory that are >1 hrs old
7517 $interval = 3600;
7518 if ($handle = opendir(preg_replace('/\/$/','',_MPDF_TEMP_PATH))) {
7519 while (false !== ($file = readdir($handle))) {
7520 if (!is_dir($file) && ((filemtime(_MPDF_TEMP_PATH.$file)+$interval) < time()) && ($file != "..") && ($file != ".") && (substr($file, 0, 1) !== '.') && ($file !='dummy.txt')) { // mPDF 5.7
7521 unlink(_MPDF_TEMP_PATH.$file);
7522 }
7523 }
7524 closedir($handle);
7525 }
7526 //==============================================================================================================
7527
7528 return '';
7529}
7530
7531
7532// *****************************************************************************
7533// *
7534// Protected methods *
7535// *
7536// *****************************************************************************
7537function _dochecks()
7538{
7539 //Check for locale-related bug
7540 if(1.1==1)
7541 $this->Error('Don\'t alter the locale before including mPDF');
7542 //Check for decimal separator
7543 if(sprintf('%.1f',1.0)!='1.0')
7544 setlocale(LC_NUMERIC,'C');
7545 // mPDF 5.4.11
7546 $mqr=ini_get("magic_quotes_runtime");
7547 if ($mqr) { $this->Error('mPDF requires magic_quotes_runtime to be turned off e.g. by using ini_set("magic_quotes_runtime", 0);'); }
7548}
7549
7550function _begindoc()
7551{
7552 //Start document
7553 $this->state=1;
7554 $this->_out('%PDF-'.$this->pdf_version);
7555 $this->_out('%'.chr(226).chr(227).chr(207).chr(211)); // 4 chars > 128 to show binary file
7556}
7557
7558
7559/*-- HTMLHEADERS-FOOTERS --*/
7560function _puthtmlheaders() {
7561 $this->state=2;
7562 $nb=$this->page;
7563 for($n=1;$n<=$nb;$n++) {
7564 if ($this->mirrorMargins && $n%2==0) { $OE = 'E'; } // EVEN
7565 else { $OE = 'O'; }
7566 $this->page = $n;
7567 if (isset($this->saveHTMLHeader[$n][$OE])) {
7568 $html = $this->saveHTMLHeader[$n][$OE]['html'];
7569 $this->lMargin = $this->saveHTMLHeader[$n][$OE]['ml'];
7570 $this->rMargin = $this->saveHTMLHeader[$n][$OE]['mr'];
7571 $this->tMargin = $this->saveHTMLHeader[$n][$OE]['mh'];
7572 $this->bMargin = $this->saveHTMLHeader[$n][$OE]['mf'];
7573 $this->margin_header = $this->saveHTMLHeader[$n][$OE]['mh'];
7574 $this->margin_footer = $this->saveHTMLHeader[$n][$OE]['mf'];
7575 $this->w = $this->saveHTMLHeader[$n][$OE]['pw'];
7576 $this->h = $this->saveHTMLHeader[$n][$OE]['ph'];
7577 $rotate = (isset($this->saveHTMLHeader[$n][$OE]['rotate']) ? $this->saveHTMLHeader[$n][$OE]['rotate'] : null);
7578 $this->Reset();
7579 $this->pageoutput[$n] = array();
7580 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
7581 $this->x = $this->lMargin;
7582 $this->y = $this->margin_header;
7583 // mPDF 5.6.47
7584 $pn = $this->docPageNum($n);
7585 if ($pn)
7586 $pnstr = $this->pagenumPrefix.$pn.$this->pagenumSuffix;
7587 else { $pnstr = ''; }
7588 $html = str_replace('{PAGENO}',$pnstr,$html);
7589 $pnt = $this->docPageNumTotal($n);
7590 if ($pnt)
7591 $pntstr = $this->nbpgPrefix.$pnt.$this->nbpgSuffix;
7592 else { $pntstr = ''; }
7593 $html = str_replace($this->aliasNbPgGp,$pntstr,$html ); // {nbpg}
7594 $html = str_replace($this->aliasNbPg,$nb,$html ); // {nb}
7595 $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$html ); // mPDF 5.7
7596
7597 $this->HTMLheaderPageLinks = array();
7598 $this->HTMLheaderPageAnnots = array();
7599 $this->HTMLheaderPageForms = array();
7600 $this->pageBackgrounds = array();
7601
7602 $this->writingHTMLheader = true;
7603 $this->WriteHTML($html , 4); // parameter 4 saves output to $this->headerbuffer
7604 $this->writingHTMLheader = false;
7605 $this->Reset();
7606 $this->pageoutput[$n] = array();
7607
7608 $s = $this->PrintPageBackgrounds();
7609 $this->headerbuffer = $s . $this->headerbuffer;
7610 $os = '';
7611 if ($rotate) {
7612 $os .= sprintf('q 0 -1 1 0 0 %.3F cm ',($this->w*_MPDFK));
7613 }
7614 $os .= $this->headerbuffer ;
7615 if ($rotate) {
7616 $os .= ' Q' . "\n";
7617 }
7618
7619 // Writes over the page background but behind any other output on page
7620 $os = preg_replace('/\\\\/','\\\\\\\\',$os);
7621 $this->pages[$n] = preg_replace('/(___HEADER___MARKER'.$this->uniqstr.')/', "\n".$os."\n".'\\1', $this->pages[$n]);
7622
7623 $lks = $this->HTMLheaderPageLinks;
7624 foreach($lks AS $lk) {
7625 if ($rotate) {
7626 $lw = $lk[2];
7627 $lh = $lk[3];
7628 $lk[2] = $lh;
7629 $lk[3] = $lw; // swap width and height
7630 $ax = $lk[0]/_MPDFK;
7631 $ay = $lk[1]/_MPDFK;
7632 $bx = $ay-($lh/_MPDFK);
7633 $by = $this->w-$ax;
7634 $lk[0] = $bx*_MPDFK;
7635 $lk[1] = ($this->h-$by)*_MPDFK - $lw;
7636 }
7637 $this->PageLinks[$n][]=$lk;
7638 }
7639/*-- FORMS --*/
7640 foreach($this->HTMLheaderPageForms AS $f) {
7641 $this->form->forms[$f['n']] = $f;
7642 }
7643/*-- END FORMS --*/
7644
7645
7646 }
7647 if (isset($this->saveHTMLFooter[$n][$OE])) {
7648 $html = $this->saveHTMLFooter[$this->page][$OE]['html'];
7649 $this->lMargin = $this->saveHTMLFooter[$n][$OE]['ml'];
7650 $this->rMargin = $this->saveHTMLFooter[$n][$OE]['mr'];
7651 $this->tMargin = $this->saveHTMLFooter[$n][$OE]['mh'];
7652 $this->bMargin = $this->saveHTMLFooter[$n][$OE]['mf'];
7653 $this->margin_header = $this->saveHTMLFooter[$n][$OE]['mh'];
7654 $this->margin_footer = $this->saveHTMLFooter[$n][$OE]['mf'];
7655 $this->w = $this->saveHTMLFooter[$n][$OE]['pw'];
7656 $this->h = $this->saveHTMLFooter[$n][$OE]['ph'];
7657 $rotate = (isset($this->saveHTMLFooter[$n][$OE]['rotate']) ? $this->saveHTMLFooter[$n][$OE]['rotate'] : null);
7658 $this->Reset();
7659 $this->pageoutput[$n] = array();
7660 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
7661 $this->x = $this->lMargin;
7662 $top_y = $this->y = $this->h - $this->margin_footer;
7663
7664 // if bottom-margin==0, corrects to avoid division by zero
7665 if ($this->y == $this->h) { $top_y = $this->y = ($this->h - 0.1); }
7666 // mPDF 5.6.47
7667 $pn = $this->docPageNum($n);
7668 if ($pn)
7669 $pnstr = $this->pagenumPrefix.$pn.$this->pagenumSuffix;
7670 else { $pnstr = ''; }
7671 $html = str_replace('{PAGENO}',$pnstr,$html);
7672 $pnt = $this->docPageNumTotal($n);
7673 if ($pnt)
7674 $pntstr = $this->nbpgPrefix.$pnt.$this->nbpgSuffix;
7675 else { $pntstr = ''; }
7676 $html = str_replace($this->aliasNbPgGp,$pntstr,$html ); // {nbpg}
7677 $html = str_replace($this->aliasNbPg,$nb,$html ); // {nb}
7678 $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$html ); // mPDF 5.7
7679
7680
7681 $this->HTMLheaderPageLinks = array();
7682 $this->HTMLheaderPageAnnots = array();
7683 $this->HTMLheaderPageForms = array();
7684 $this->pageBackgrounds = array();
7685
7686 $this->writingHTMLfooter = true;
7687 $this->InFooter = true;
7688 $this->WriteHTML($html , 4); // parameter 4 saves output to $this->headerbuffer
7689 $this->writingHTMLfooter = false;
7690 $this->InFooter = false;
7691 $this->Reset();
7692 $this->pageoutput[$n] = array();
7693
7694 $fheight = $this->y - $top_y;
7695 $adj = -$fheight;
7696
7697 $s = $this->PrintPageBackgrounds(-$adj);
7698 $this->headerbuffer = $s . $this->headerbuffer;
7699
7700 $os = '';
7701 $os .= $this->StartTransform(true)."\n";
7702 if ($rotate) {
7703 $os .= sprintf('q 0 -1 1 0 0 %.3F cm ',($this->w*_MPDFK));
7704 }
7705 $os .= $this->transformTranslate(0, $adj, true)."\n";
7706 $os .= $this->headerbuffer ;
7707 if ($rotate) {
7708 $os .= ' Q' . "\n";
7709 }
7710 $os .= $this->StopTransform(true)."\n";
7711 // Writes over the page background but behind any other output on page
7712 $os = preg_replace('/\\\\/','\\\\\\\\',$os);
7713 $this->pages[$n] = preg_replace('/(___HEADER___MARKER'.$this->uniqstr.')/', "\n".$os."\n".'\\1', $this->pages[$n]);
7714
7715 $lks = $this->HTMLheaderPageLinks;
7716 foreach($lks AS $lk) {
7717 $lk[1] -= $adj*_MPDFK;
7718 if ($rotate) {
7719 $lw = $lk[2];
7720 $lh = $lk[3];
7721 $lk[2] = $lh;
7722 $lk[3] = $lw; // swap width and height
7723
7724 $ax = $lk[0]/_MPDFK;
7725 $ay = $lk[1]/_MPDFK;
7726 $bx = $ay-($lh/_MPDFK);
7727 $by = $this->w-$ax;
7728 $lk[0] = $bx*_MPDFK;
7729 $lk[1] = ($this->h-$by)*_MPDFK - $lw;
7730 }
7731 $this->PageLinks[$n][]=$lk;
7732 }
7733/*-- FORMS --*/
7734 foreach($this->HTMLheaderPageForms AS $f) {
7735 $f['y'] += $adj;
7736 $this->form->forms[$f['n']] = $f;
7737 }
7738/*-- END FORMS --*/
7739 }
7740 }
7741 $this->page=$nb;
7742 $this->state=1;
7743}
7744/*-- END HTMLHEADERS-FOOTERS --*/
7745
7746
7747function _putpages()
7748{
7749 $nb=$this->page;
7750 $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
7751
7752 if($this->DefOrientation=='P') {
7753 $defwPt=$this->fwPt;
7754 $defhPt=$this->fhPt;
7755 }
7756 else {
7757 $defwPt=$this->fhPt;
7758 $defhPt=$this->fwPt;
7759 }
7760 $annotid=(3+2*$nb);
7761
7762 // Active Forms
7763 $totaladdnum = 0;
7764 for($n=1;$n<=$nb;$n++) {
7765 if (isset($this->PageLinks[$n])) { $totaladdnum += count($this->PageLinks[$n]); }
7766/*-- ANNOTATIONS --*/
7767 if (isset($this->PageAnnots[$n])) {
7768 foreach ($this->PageAnnots[$n] as $k => $pl) {
7769 if (!empty($pl['opt']['popup']) || !empty($pl['opt']['file'])) { $totaladdnum += 2 ; }
7770 else { $totaladdnum++; }
7771 }
7772 }
7773/*-- END ANNOTATIONS --*/
7774
7775/*-- FORMS --*/
7776 if ( count($this->form->forms) > 0 ) {
7777 $this->form->countPageForms($n, $totaladdnum);
7778 }
7779/*-- END FORMS --*/
7780 }
7781/*-- FORMS --*/
7782 // Make a note in the radio button group of the obj_id it will have
7783 $ctr = 0;
7784 if (count($this->form->form_radio_groups)) {
7785 foreach($this->form->form_radio_groups AS $name=>$frg) {
7786 $this->form->form_radio_groups[$name]['obj_id'] = $annotid + $totaladdnum + $ctr;
7787 $ctr++;
7788 }
7789 }
7790/*-- END FORMS --*/
7791
7792 // Select unused fonts (usually default font)
7793 $unused = array();
7794 foreach($this->fonts as $fk=>$font) {
7795 if (!$font['used'] && ($font['type']=='TTF')) {
7796 $unused[] = $fk;
7797 }
7798 }
7799
7800
7801 for($n=1;$n<=$nb;$n++)
7802 {
7803 $thispage = $this->pages[$n];
7804// unset($this->pages[$n]); // mPDF 5.6.47
7805 if(isset($this->OrientationChanges[$n])) {
7806 $hPt=$this->pageDim[$n]['w']*_MPDFK;
7807 $wPt=$this->pageDim[$n]['h']*_MPDFK;
7808 $owidthPt_LR = $this->pageDim[$n]['outer_width_TB']*_MPDFK;
7809 $owidthPt_TB = $this->pageDim[$n]['outer_width_LR']*_MPDFK;
7810 }
7811 else {
7812 $wPt=$this->pageDim[$n]['w']*_MPDFK;
7813 $hPt=$this->pageDim[$n]['h']*_MPDFK;
7814 $owidthPt_LR = $this->pageDim[$n]['outer_width_LR']*_MPDFK;
7815 $owidthPt_TB = $this->pageDim[$n]['outer_width_TB']*_MPDFK;
7816 }
7817 // Remove references to unused fonts (usually default font)
7818 foreach($unused as $fk) {
7819 if ($this->fonts[$fk]['sip'] || $this->fonts[$fk]['smp']) {
7820 foreach($this->fonts[$fk]['subsetfontids'] AS $k => $fid) {
7821 $thispage = preg_replace('/\s\/F'.$fid.' \d[\d.]* Tf\s/is',' ',$thispage);
7822 }
7823 }
7824 else {
7825 $thispage = preg_replace('/\s\/F'.$this->fonts[$fk]['i'].' \d[\d.]* Tf\s/is',' ',$thispage);
7826 }
7827 }
7828 //Replace number of pages
7829 if(!empty($this->aliasNbPg)) {
7830 if (!$this->onlyCoreFonts) { $s1 = $this->UTF8ToUTF16BE($this->aliasNbPg, false); }
7831 $s2 = $this->aliasNbPg;
7832 if (!$this->onlyCoreFonts) { $r1 = $this->UTF8ToUTF16BE($nb, false); }
7833 $r2 = $nb;
7834 if (preg_match_all('/{mpdfheadernbpg (C|R) ff=(\S*) fs=(\S*) fz=(.*?)}/',$thispage,$m)) {
7835 for($hi=0;$hi<count($m[0]);$hi++) {
7836 $pos = $m[1][$hi];
7837 $hff = $m[2][$hi];
7838 $hfst = $m[3][$hi];
7839 $hfsz = $m[4][$hi];
7840 $this->SetFont($hff,$hfst,$hfsz, false);
7841 $x1 = $this->GetStringWidth($this->aliasNbPg);
7842 $x2 = $this->GetStringWidth($nb);
7843 $xadj = $x1 - $x2;
7844 if ($pos=='C') { $xadj /= 2; }
7845 $rep = sprintf(' q 1 0 0 1 %.3F 0 cm ', $xadj*_MPDFK);
7846 $thispage = str_replace($m[0][$hi], $rep, $thispage);
7847 }
7848 }
7849 if (!$this->onlyCoreFonts) { $thispage=str_replace($s1,$r1,$thispage); }
7850 $thispage=str_replace($s2,$r2,$thispage);
7851
7852 // And now for any SMP/SIP fonts subset using <HH> format
7853 $r = '';
7854 $nstr = "$nb";
7855 for($i=0;$i<strlen($nstr);$i++) {
7856 $r .= sprintf("%02s", strtoupper(dechex(intval($nstr[$i])+48)));
7857 }
7858 $thispage=str_replace($this->aliasNbPgHex,$r,$thispage);
7859
7860 }
7861 //Replace number of pages in group
7862 if(!empty($this->aliasNbPgGp)) {
7863 if (!$this->onlyCoreFonts) { $s1 = $this->UTF8ToUTF16BE($this->aliasNbPgGp, false); }
7864 $s2 = $this->aliasNbPgGp;
7865 $nbt = $this->docPageNumTotal($n);
7866 if (!$this->onlyCoreFonts) { $r1 = $this->UTF8ToUTF16BE($nbt, false); }
7867 $r2 = $nbt;
7868 if (preg_match_all('/{mpdfheadernbpggp (C|R) ff=(\S*) fs=(\S*) fz=(.*?)}/',$thispage,$m)) {
7869 for($hi=0;$hi<count($m[0]);$hi++) {
7870 $pos = $m[1][$hi];
7871 $hff = $m[2][$hi];
7872 $hfst = $m[3][$hi];
7873 $hfsz = $m[4][$hi];
7874 $this->SetFont($hff,$hfst,$hfsz, false);
7875 $x1 = $this->GetStringWidth($this->aliasNbPgGp);
7876 $x2 = $this->GetStringWidth($nbt);
7877 $xadj = $x1 - $x2;
7878 if ($pos=='C') { $xadj /= 2; }
7879 $rep = sprintf(' q 1 0 0 1 %.3F 0 cm ', $xadj*_MPDFK);
7880 $thispage = str_replace($m[0][$hi], $rep, $thispage);
7881 }
7882 }
7883 if (!$this->onlyCoreFonts) { $thispage=str_replace($s1,$r1,$thispage); }
7884 $thispage=str_replace($s2,$r2,$thispage);
7885
7886 // And now for any SMP/SIP fonts subset using <HH> format
7887 $r = '';
7888 $nstr = "$nbt";
7889 for($i=0;$i<strlen($nstr);$i++) {
7890 $r .= sprintf("%02s", strtoupper(dechex(intval($nstr[$i])+48)));
7891 }
7892 $thispage=str_replace($this->aliasNbPgGpHex,$r,$thispage);
7893
7894 }
7895 $thispage = preg_replace('/(\s*___BACKGROUND___PATTERNS'.$this->uniqstr.'\s*)/', " ", $thispage);
7896 $thispage = preg_replace('/(\s*___HEADER___MARKER'.$this->uniqstr.'\s*)/', " ", $thispage);
7897 $thispage = preg_replace('/(\s*___PAGE___START'.$this->uniqstr.'\s*)/', " ", $thispage);
7898 $thispage = preg_replace('/(\s*___TABLE___BACKGROUNDS'.$this->uniqstr.'\s*)/', " ", $thispage);
7899
7900 //Page
7901 $this->_newobj();
7902 $this->_out('<</Type /Page');
7903 $this->_out('/Parent 1 0 R');
7904 if(isset($this->OrientationChanges[$n])) {
7905 $this->_out(sprintf('/MediaBox [0 0 %.3F %.3F]',$hPt,$wPt));
7906 //If BleedBox is defined, it must be larger than the TrimBox, but smaller than the MediaBox
7907 $bleedMargin = $this->pageDim[$n]['bleedMargin']*_MPDFK;
7908 if ($bleedMargin && ($owidthPt_TB || $owidthPt_LR)) {
7909 $x0 = $owidthPt_TB-$bleedMargin;
7910 $y0 = $owidthPt_LR-$bleedMargin;
7911 $x1 = $hPt-$owidthPt_TB+$bleedMargin;
7912 $y1 = $wPt-$owidthPt_LR+$bleedMargin;
7913 $this->_out(sprintf('/BleedBox [%.3F %.3F %.3F %.3F]', $x0, $y0, $x1, $y1));
7914 }
7915 $this->_out(sprintf('/TrimBox [%.3F %.3F %.3F %.3F]', $owidthPt_TB, $owidthPt_LR, ($hPt-$owidthPt_TB), ($wPt-$owidthPt_LR)));
7916 if (isset($this->OrientationChanges[$n]) && $this->displayDefaultOrientation) {
7917 if ($this->DefOrientation=='P') { $this->_out('/Rotate 270'); }
7918 else { $this->_out('/Rotate 90'); }
7919 }
7920 }
7921 //else if($wPt != $defwPt || $hPt != $defhPt) {
7922 else {
7923 $this->_out(sprintf('/MediaBox [0 0 %.3F %.3F]',$wPt,$hPt));
7924 $bleedMargin = $this->pageDim[$n]['bleedMargin']*_MPDFK;
7925 if ($bleedMargin && ($owidthPt_TB || $owidthPt_LR)) {
7926 $x0 = $owidthPt_LR-$bleedMargin;
7927 $y0 = $owidthPt_TB-$bleedMargin;
7928 $x1 = $wPt-$owidthPt_LR+$bleedMargin;
7929 $y1 = $hPt-$owidthPt_TB+$bleedMargin;
7930 $this->_out(sprintf('/BleedBox [%.3F %.3F %.3F %.3F]', $x0, $y0, $x1, $y1));
7931 }
7932 $this->_out(sprintf('/TrimBox [%.3F %.3F %.3F %.3F]', $owidthPt_LR, $owidthPt_TB, ($wPt-$owidthPt_LR), ($hPt-$owidthPt_TB)));
7933 }
7934 $this->_out('/Resources 2 0 R');
7935
7936 // Important to keep in RGB colorSpace when using transparency
7937 if (!$this->PDFA && !$this->PDFX) {
7938 if ($this->restrictColorSpace == 3)
7939 $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceCMYK >> ');
7940 else if ($this->restrictColorSpace == 1)
7941 $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceGray >> ');
7942 else
7943 $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceRGB >> ');
7944 }
7945
7946 $annotsnum = 0;
7947 $embeddedfiles = array(); // mPDF 5.7.2 /EmbeddedFiles
7948
7949 if (isset($this->PageLinks[$n])) { $annotsnum += count($this->PageLinks[$n]); }
7950/*-- ANNOTATIONS --*/
7951 if (isset($this->PageAnnots[$n])) {
7952 foreach ($this->PageAnnots[$n] as $k => $pl) {
7953 if (!empty($pl['opt']['file'])) { $embeddedfiles[$annotsnum+1] = true ; } // mPDF 5.7.2 /EmbeddedFiles
7954 if (!empty($pl['opt']['popup']) || !empty($pl['opt']['file'])) { $annotsnum += 2 ; }
7955 else { $annotsnum++; }
7956 $this->PageAnnots[$n][$k]['pageobj'] = $this->n;
7957 }
7958 }
7959/*-- END ANNOTATIONS --*/
7960
7961/*-- FORMS --*/
7962 // Active Forms
7963 $formsnum = 0;
7964 if ( count($this->form->forms) > 0 ) {
7965 foreach( $this->form->forms as $val ) {
7966 if ( $val['page'] == $n )
7967 $formsnum++;
7968 }
7969 }
7970/*-- END FORMS --*/
7971 if ($annotsnum || $formsnum) {
7972 $s = '/Annots [ ';
7973 for($i=0;$i<$annotsnum;$i++) {
7974 if (!isset($embeddedfiles[$i])) { $s .= ($annotid + $i) . ' 0 R '; } // mPDF 5.7.2 /EmbeddedFiles
7975 }
7976 $annotid += $annotsnum;
7977/*-- FORMS --*/
7978 if ( count($this->form->forms) > 0 ) {
7979 $this->form->addFormIds($n, $s, $annotid);
7980 }
7981/*-- END FORMS --*/
7982 $s .= '] ';
7983 $this->_out($s);
7984 }
7985
7986 $this->_out('/Contents '.($this->n+1).' 0 R>>');
7987 $this->_out('endobj');
7988
7989 //Page content
7990 $this->_newobj();
7991 $p=($this->compress) ? gzcompress($thispage) : $thispage;
7992 $this->_out('<<'.$filter.'/Length '.strlen($p).'>>');
7993 $this->_putstream($p);
7994 $this->_out('endobj');
7995 }
7996 $this->_putannots(); // mPDF 5.7.2
7997
7998 //Pages root
7999 $this->offsets[1]=strlen($this->buffer);
8000 $this->_out('1 0 obj');
8001 $this->_out('<</Type /Pages');
8002 $kids='/Kids [';
8003 for($i=0;$i<$nb;$i++)
8004 $kids.=(3+2*$i).' 0 R ';
8005 $this->_out($kids.']');
8006 $this->_out('/Count '.$nb);
8007 $this->_out(sprintf('/MediaBox [0 0 %.3F %.3F]',$defwPt,$defhPt));
8008 $this->_out('>>');
8009 $this->_out('endobj');
8010}
8011
8012
8013function _putannots() { // mPDF 5.7.2
8014 $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
8015 $nb=$this->page;
8016 for($n=1;$n<=$nb;$n++)
8017 {
8018 $annotobjs = array();
8019 if(isset($this->PageLinks[$n]) || isset($this->PageAnnots[$n]) || count($this->form->forms) > 0 ) {
8020 $wPt=$this->pageDim[$n]['w']*_MPDFK;
8021 $hPt=$this->pageDim[$n]['h']*_MPDFK;
8022
8023 //Links
8024 if(isset($this->PageLinks[$n])) {
8025 foreach($this->PageLinks[$n] as $key => $pl) {
8026 $this->_newobj();
8027 $annot='';
8028 $rect=sprintf('%.3F %.3F %.3F %.3F',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]);
8029 $annot .= '<</Type /Annot /Subtype /Link /Rect ['.$rect.']';
8030 $annot .= ' /Contents '.$this->_UTF16BEtextstring($pl[4]);
8031 $annot .= ' /NM '.$this->_textstring(sprintf('%04u-%04u', $n, $key));
8032 $annot .= ' /M '.$this->_textstring('D:'.date('YmdHis'));
8033 $annot .= ' /Border [0 0 0]';
8034 // Use this (instead of /Border) to specify border around link
8035 // $annot .= ' /BS <</W 1'; // Width on points; 0 = no line
8036 // $annot .= ' /S /D'; // style - [S]olid, [D]ashed, [B]eveled, [I]nset, [U]nderline
8037 // $annot .= ' /D [3 2]'; // Dash array - if dashed
8038 // $annot .= ' >>';
8039 // $annot .= ' /C [1 0 0]'; // Color RGB
8040
8041 if ($this->PDFA || $this->PDFX) { $annot .= ' /F 28'; }
8042 if (strpos($pl[4],'@')===0) {
8043 $p=substr($pl[4],1);
8044 // $h=isset($this->OrientationChanges[$p]) ? $wPt : $hPt;
8045 $htarg=$this->pageDim[$p]['h']*_MPDFK;
8046 $annot.=sprintf(' /Dest [%d 0 R /XYZ 0 %.3F null]>>',1+2*$p,$htarg);
8047 }
8048 else if(is_string($pl[4])) {
8049 $annot .= ' /A <</S /URI /URI '.$this->_textstring($pl[4]).'>> >>';
8050 }
8051 else {
8052 $l=$this->links[$pl[4]];
8053 // may not be set if #link points to non-existent target
8054 if (isset($this->pageDim[$l[0]]['h'])) { $htarg=$this->pageDim[$l[0]]['h']*_MPDFK; }
8055 else { $htarg=$this->h*_MPDFK; } // doesn't really matter
8056 $annot.=sprintf(' /Dest [%d 0 R /XYZ 0 %.3F null]>>',1+2*$l[0],$htarg-$l[1]*_MPDFK);
8057 }
8058 $this->_out($annot);
8059 $this->_out('endobj');
8060 }
8061 }
8062
8063
8064/*-- ANNOTATIONS --*/
8065 if(isset($this->PageAnnots[$n])) {
8066 foreach ($this->PageAnnots[$n] as $key => $pl) {
8067 if ($pl['opt']['file']) { $FileAttachment=true; }
8068 else { $FileAttachment=false; }
8069 $this->_newobj();
8070 $annot='';
8071 $pl['opt'] = array_change_key_case($pl['opt'], CASE_LOWER);
8072 $x = $pl['x'];
8073 if ($this->annotMargin <> 0 || $x==0 || $x<0) { // Odd page
8074 $x = ($wPt/_MPDFK) - $this->annotMargin;
8075 }
8076 $w = $h = 0;
8077 $a = $x * _MPDFK;
8078 $b = $hPt - ($pl['y'] * _MPDFK);
8079 $annot .= '<</Type /Annot ';
8080 if ($FileAttachment) {
8081 $annot .= '/Subtype /FileAttachment';
8082 // Need to set a size for FileAttachment icons
8083 if ($pl['opt']['icon']=='Paperclip') { $w=8.235; $h=20; } // 7,17
8084 else if ($pl['opt']['icon']=='Tag') { $w=20; $h=16; }
8085 else if ($pl['opt']['icon']=='Graph') { $w=20; $h=20; }
8086 else { $w=14; $h=20; } // PushPin
8087 $f = $pl['opt']['file'];
8088 $f = preg_replace('/^.*\//', '', $f);
8089 $f = preg_replace('/[^a-zA-Z0-9._]/', '', $f);
8090 $annot .= '/FS <</Type /Filespec /F ('.$f.')';
8091 $annot .= '/EF <</F '.($this->n+1).' 0 R>>';
8092 $annot .= '>>';
8093 }
8094 else {
8095 $annot .= '/Subtype /Text';
8096 }
8097 $rect = sprintf('%.3F %.3F %.3F %.3F', $a, $b-$h, $a+$w, $b);
8098 $annot .= '/Rect ['.$rect.']';
8099
8100 // contents = description of file in free text
8101 $annot .= ' /Contents '.$this->_UTF16BEtextstring($pl['txt']);
8102 $annot .= ' /NM '.$this->_textstring(sprintf('%04u-%04u', $n, (2000 + $key)));
8103 $annot .= ' /M '.$this->_textstring('D:'.date('YmdHis'));
8104 $annot .= ' /CreationDate '.$this->_textstring('D:'.date('YmdHis'));
8105 $annot .= ' /Border [0 0 0]';
8106 if ($this->PDFA || $this->PDFX) {
8107 $annot .= ' /F 28';
8108 $annot .= ' /CA 1';
8109 }
8110 else if ($pl['opt']['ca']>0) { $annot .= ' /CA '.$pl['opt']['ca']; }
8111
8112 $annotcolor = ' /C [';
8113 if (isset($pl['opt']['c']) AND $pl['opt']['c']) {
8114 $col = $pl['opt']['c'];
8115 if ($col{0}==3 || $col{0}==5) { $annotcolor .= sprintf("%.3F %.3F %.3F", ord($col{1})/255,ord($col{2})/255,ord($col{3})/255); }
8116 else if ($col{0}==1) { $annotcolor .= sprintf("%.3F", ord($col{1})/255); }
8117 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); }
8118 else { $annotcolor .= '1 1 0'; }
8119 }
8120 else { $annotcolor .= '1 1 0'; }
8121 $annotcolor .= ']';
8122 $annot .= $annotcolor;
8123 // Usually Author
8124 // Use as Title for fileattachment
8125 if (isset($pl['opt']['t']) AND is_string($pl['opt']['t'])) {
8126 $annot .= ' /T '.$this->_UTF16BEtextstring($pl['opt']['t']);
8127 }
8128 if ($FileAttachment) {
8129 $iconsapp = array('Paperclip', 'Graph', 'PushPin', 'Tag');
8130 }
8131 else { $iconsapp = array('Comment', 'Help', 'Insert', 'Key', 'NewParagraph', 'Note', 'Paragraph'); }
8132 if (isset($pl['opt']['icon']) AND in_array($pl['opt']['icon'], $iconsapp)) {
8133 $annot .= ' /Name /'.$pl['opt']['icon'];
8134 }
8135 else if ($FileAttachment) { $annot .= ' /Name /PushPin'; }
8136 else { $annot .= ' /Name /Note'; }
8137 if (!$FileAttachment) {
8138 // /Subj is PDF 1.5 spec.
8139 if (isset($pl['opt']['subj']) && !$this->PDFA && !$this->PDFX) {
8140 $annot .= ' /Subj '.$this->_UTF16BEtextstring($pl['opt']['subj']);
8141 }
8142 if (!empty($pl['opt']['popup'])) {
8143 $annot .= ' /Open true';
8144 $annot .= ' /Popup '.($this->n+1).' 0 R';
8145 }
8146 else { $annot .= ' /Open false'; }
8147 }
8148 $annot .= ' /P '.$pl['pageobj'].' 0 R';
8149 $annot .= '>>';
8150 $this->_out($annot);
8151 $this->_out('endobj');
8152
8153 if ($FileAttachment) {
8154 $file = @file_get_contents($pl['opt']['file']) or die('mPDF Error: Cannot access file attachment - '.$pl['opt']['file']);
8155 $filestream = gzcompress($file);
8156 $this->_newobj();
8157 $this->_out('<</Type /EmbeddedFile');
8158 $this->_out('/Length '.strlen($filestream));
8159 $this->_out('/Filter /FlateDecode');
8160 $this->_out('>>');
8161 $this->_putstream($filestream);
8162 $this->_out('endobj');
8163 }
8164 else if (!empty($pl['opt']['popup'])) {
8165 $this->_newobj();
8166 $annot='';
8167 if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][0])) { $x = $pl['opt']['popup'][0] * _MPDFK; }
8168 else { $x = $pl['x'] * _MPDFK; }
8169 if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][1])) { $y = $hPt - ($pl['opt']['popup'][1] * _MPDFK); }
8170 else { $y = $hPt - ($pl['y'] * _MPDFK); }
8171 if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][2])) { $w = $pl['opt']['popup'][2] * _MPDFK; }
8172 else { $w = 180; }
8173 if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][3])) { $h = $pl['opt']['popup'][3] * _MPDFK; }
8174 else { $h = 120; }
8175 $rect = sprintf('%.3F %.3F %.3F %.3F', $x, $y-$h, $x+$w, $y);
8176 $annot .= '<</Type /Annot /Subtype /Popup /Rect ['.$rect.']';
8177 $annot .= ' /M '.$this->_textstring('D:'.date('YmdHis'));
8178 if ($this->PDFA || $this->PDFX) { $annot .= ' /F 28'; }
8179 $annot .= ' /Parent '.($this->n-1).' 0 R';
8180 $annot .= '>>';
8181 $this->_out($annot);
8182 $this->_out('endobj');
8183 }
8184 }
8185 }
8186/*-- END ANNOTATIONS --*/
8187
8188/*-- FORMS --*/
8189 // Active Forms
8190 if ( count($this->form->forms) > 0 ) {
8191 $this->form->_putFormItems($n, $hPt);
8192 }
8193/*-- END FORMS --*/
8194 }
8195 }
8196/*-- FORMS --*/
8197 // Active Forms - Radio Button Group entries
8198 // Output Radio Button Group form entries (radio_on_obj_id already determined)
8199 if (count($this->form->form_radio_groups)) {
8200 $this->form->_putRadioItems($n);
8201 }
8202/*-- END FORMS --*/
8203}
8204
8205
8206/*-- ANNOTATIONS --*/
8207function Annotation($text, $x=0, $y=0, $icon='Note', $author='', $subject='', $opacity=0, $colarray=false, $popup='', $file='') {
8208 if (is_array($colarray) && count($colarray)==3) { $colarray = $this->ConvertColor('rgb('.$colarray[0].','.$colarray[1].','.$colarray[2].')'); }
8209 if ($colarray === false) { $colarray = $this->ConvertColor('yellow'); }
8210 if ($x==0) { $x = $this->x; }
8211 if ($y==0) { $y = $this->y; }
8212 $page = $this->page;
8213 if ($page < 1) { // Document has not been started - assume it's for first page
8214 $page = 1;
8215 if ($x==0) { $x = $this->lMargin; }
8216 if ($y==0) { $y = $this->tMargin; }
8217 }
8218
8219 if ($this->PDFA || $this->PDFX) {
8220 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)"; }
8221 $x = ($this->w) - $this->rMargin*0.66;
8222 }
8223 if (!$this->annotMargin) { $y -= $this->FontSize / 2; }
8224
8225 if (!$opacity && $this->annotMargin) { $opacity = 1; }
8226 else if (!$opacity) { $opacity = $this->annotOpacity; }
8227
8228 $an = array('txt' => $text, 'x' => $x, 'y' => $y, 'opt' => array('Icon'=>$icon, 'T'=>$author, 'Subj'=>$subject, 'C'=>$colarray, 'CA'=>$opacity, 'popup'=>$popup, 'file'=>$file));
8229
8230 if ($this->keep_block_together) { // Save to array - don't write yet
8231 $this->ktAnnots[$this->page][]= $an;
8232 return;
8233 }
8234 else if ($this->table_rotate) {
8235 $this->tbrot_Annots[$this->page][]= $an;
8236 return;
8237 }
8238 else if ($this->kwt) {
8239 $this->kwt_Annots[$this->page][]= $an;
8240 return;
8241 }
8242 // mPDF 5.0
8243 if ($this->writingHTMLheader || $this->writingHTMLfooter) {
8244 $this->HTMLheaderPageAnnots[]= $an;
8245 return;
8246 }
8247 //Put an Annotation on the page
8248 $this->PageAnnots[$page][] = $an;
8249/*-- COLUMNS --*/
8250 // Save cross-reference to Column buffer
8251 $ref = count($this->PageAnnots[$this->page])-1;
8252 $this->columnAnnots[$this->CurrCol][INTVAL($this->x)][INTVAL($this->y)] = $ref;
8253/*-- END COLUMNS --*/
8254}
8255/*-- END ANNOTATIONS --*/
8256
8257
8258function _putfonts() {
8259 $nf=$this->n;
8260 foreach($this->FontFiles as $fontkey=>$info) {
8261 // TrueType embedded
8262 if (isset($info['type']) && $info['type']=='TTF' && !$info['sip'] && !$info['smp']) {
8263 $used = true;
8264 $asSubset = false;
8265 foreach($this->fonts AS $k=>$f) {
8266 if ($f['fontkey'] == $fontkey && $f['type']=='TTF') {
8267 $used = $f['used'];
8268 if ($used) {
8269 $nChars = (ord($f['cw'][0]) << 8) + ord($f['cw'][1]);
8270 $usage = intval(count($f['subset'])*100 / $nChars);
8271 $fsize = $info['length1'];
8272 // Always subset the very large TTF files
8273 if ($fsize > ($this->maxTTFFilesize *1024)) { $asSubset = true; }
8274 else if ($usage < $this->percentSubset) { $asSubset = true; }
8275 }
8276 if ($f['unAGlyphs']) $aaSubset = true; // mPDF 5.4.05
8277 if ($this->PDFA || $this->PDFX) $asSubset = false;
8278 $this->fonts[$k]['asSubset'] = $asSubset;
8279 break;
8280 }
8281 }
8282 if ($used && !$asSubset) {
8283 //Font file embedding
8284 $this->_newobj();
8285 $this->FontFiles[$fontkey]['n']=$this->n;
8286 $font='';
8287 $originalsize = $info['length1'];
8288 if ($this->repackageTTF || $this->fonts[$fontkey]['TTCfontID']>0) {
8289 // First see if there is a cached compressed file
8290 if (file_exists(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.z')) {
8291 $f=fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.z','rb');
8292 if(!$f) { $this->Error('Font file .ps.z not found'); }
8293 while(!feof($f)) { $font .= fread($f, 2048); }
8294 fclose($f);
8295 include(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.php'); // sets $originalsize (of repackaged font)
8296 }
8297 else {
8298 if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
8299 $ttf = new TTFontFile();
8300 $font = $ttf->repackageTTF($this->FontFiles[$fontkey]['ttffile'], $this->fonts[$fontkey]['TTCfontID'], $this->debugfonts, $this->fonts[$fontkey]['unAGlyphs']); // mPDF 5.4.05
8301
8302 $originalsize = strlen($font);
8303 $font = gzcompress($font);
8304 unset($ttf);
8305 if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
8306 $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.z',"wb");
8307 fwrite($fh,$font,strlen($font));
8308 fclose($fh);
8309 $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.php',"wb");
8310 $len = "<?php \n";
8311 $len.='$originalsize='.$originalsize.";\n";
8312 $len.="?>";
8313 fwrite($fh,$len,strlen($len));
8314 fclose($fh);
8315 }
8316 }
8317 }
8318 else {
8319 // First see if there is a cached compressed file
8320 if (file_exists(_MPDF_TTFONTDATAPATH.$fontkey.'.z')) {
8321 $f=fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.z','rb');
8322 if(!$f) { $this->Error('Font file not found'); }
8323 while(!feof($f)) { $font .= fread($f, 2048); }
8324 fclose($f);
8325 }
8326 else {
8327 $f=fopen($this->FontFiles[$fontkey]['ttffile'],'rb');
8328 if(!$f) { $this->Error('Font file not found'); }
8329 while(!feof($f)) { $font .= fread($f, 2048); }
8330 fclose($f);
8331 $font = gzcompress($font);
8332 if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
8333 $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.z',"wb");
8334 fwrite($fh,$font,strlen($font));
8335 fclose($fh);
8336 }
8337 }
8338 }
8339
8340 $this->_out('<</Length '.strlen($font));
8341 $this->_out('/Filter /FlateDecode');
8342 $this->_out('/Length1 '.$originalsize);
8343 $this->_out('>>');
8344 $this->_putstream($font);
8345 $this->_out('endobj');
8346 }
8347 }
8348 }
8349
8350 $nfonts = count($this->fonts);
8351 $fctr = 1;
8352 foreach($this->fonts as $k=>$font) {
8353 //Font objects
8354 $type=$font['type'];
8355 $name=$font['name'];
8356 if ((!isset($font['used']) || !$font['used']) && $type=='TTF') { continue; }
8357 if ($this->progressBar) { $this->UpdateProgressBar(2,intval($fctr*100/$nfonts),'Writing Fonts'); $fctr++; } // *PROGRESS-BAR*
8358 if (isset($font['asSubset'])) { $asSubset = $font['asSubset']; }
8359 else { $asSubset = ''; }
8360/*-- CJK-FONTS --*/
8361 if($type=='Type0') { // = Adobe CJK Fonts
8362 $this->fonts[$k]['n']=$this->n+1;
8363 $this->_newobj();
8364 $this->_out('<</Type /Font');
8365 $this->_putType0($font);
8366 }
8367 else
8368/*-- END CJK-FONTS --*/
8369 if($type=='core') {
8370 //Standard font
8371 $this->fonts[$k]['n']=$this->n+1;
8372 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.)'); }
8373 $this->_newobj();
8374 $this->_out('<</Type /Font');
8375 $this->_out('/BaseFont /'.$name);
8376 $this->_out('/Subtype /Type1');
8377 if($name!='Symbol' && $name!='ZapfDingbats') {
8378 $this->_out('/Encoding /WinAnsiEncoding');
8379 }
8380 $this->_out('>>');
8381 $this->_out('endobj');
8382 }
8383 // TrueType embedded SUBSETS for SIP (CJK extB containing Supplementary Ideographic Plane 2)
8384 // Or Unicode Plane 1 - Supplementary Multilingual Plane
8385 else if ($type=='TTF' && ($font['sip'] || $font['smp'])) {
8386 if (!$font['used']) { continue; }
8387 $ssfaid="AA";
8388 if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
8389 $ttf = new TTFontFile();
8390 for($sfid=0;$sfid<count($font['subsetfontids']);$sfid++) {
8391 $this->fonts[$k]['n'][$sfid]=$this->n+1; // NB an array for subset
8392 $subsetname = 'MPDF'.$ssfaid.'+'.$font['name'];
8393 $ssfaid++;
8394 $subset = $font['subsets'][$sfid];
8395 unset($subset[0]);
8396 $ttfontstream = $ttf->makeSubsetSIP($font['ttffile'], $subset, $font['TTCfontID'], $this->debugfonts);
8397 $ttfontsize = strlen($ttfontstream);
8398 $fontstream = gzcompress($ttfontstream);
8399 $widthstring = '';
8400 $toUnistring = '';
8401 foreach($font['subsets'][$sfid] AS $cp=>$u) {
8402 $w = $this->_getCharWidth($font['cw'], $u);
8403 if ($w !== false) {
8404 $widthstring .= $w.' ';
8405 }
8406 else {
8407 $widthstring .= round($ttf->defaultWidth).' ';
8408 }
8409 if ($u > 65535) {
8410 $utf8 = chr(($u>>18)+240).chr((($u>>12)&63)+128).chr((($u>>6)&63)+128) .chr(($u&63)+128);
8411 $utf16 = mb_convert_encoding($utf8, 'UTF-16BE', 'UTF-8');
8412 $l1 = ord($utf16[0]);
8413 $h1 = ord($utf16[1]);
8414 $l2 = ord($utf16[2]);
8415 $h2 = ord($utf16[3]);
8416 $toUnistring .= sprintf("<%02s> <%02s%02s%02s%02s>\n", strtoupper(dechex($cp)), strtoupper(dechex($l1)), strtoupper(dechex($h1)), strtoupper(dechex($l2)), strtoupper(dechex($h2)));
8417 }
8418 else {
8419 $toUnistring .= sprintf("<%02s> <%04s>\n", strtoupper(dechex($cp)), strtoupper(dechex($u)));
8420 }
8421 }
8422
8423 //Additional Type1 or TrueType font
8424 $this->_newobj();
8425 $this->_out('<</Type /Font');
8426 $this->_out('/BaseFont /'.$subsetname);
8427 $this->_out('/Subtype /TrueType');
8428 $this->_out('/FirstChar 0 /LastChar '.(count($font['subsets'][$sfid])-1));
8429 $this->_out('/Widths '.($this->n+1).' 0 R');
8430 $this->_out('/FontDescriptor '.($this->n+2).' 0 R');
8431 $this->_out('/ToUnicode '.($this->n + 3).' 0 R');
8432 $this->_out('>>');
8433 $this->_out('endobj');
8434
8435 //Widths
8436 $this->_newobj();
8437 $this->_out('['.$widthstring.']');
8438 $this->_out('endobj');
8439
8440 //Descriptor
8441 $this->_newobj();
8442 $s='<</Type /FontDescriptor /FontName /'.$subsetname."\n";
8443 foreach($font['desc'] as $kd=>$v) {
8444 if ($kd == 'Flags') { $v = $v | 4; $v = $v & ~32; } // SYMBOLIC font flag
8445 $s.=' /'.$kd.' '.$v."\n";
8446 }
8447 $s.='/FontFile2 '.($this->n + 2).' 0 R';
8448 $this->_out($s.'>>');
8449 $this->_out('endobj');
8450
8451 // ToUnicode
8452 $this->_newobj();
8453 $toUni = "/CIDInit /ProcSet findresource begin\n";
8454 $toUni .= "12 dict begin\n";
8455 $toUni .= "begincmap\n";
8456 $toUni .= "/CIDSystemInfo\n";
8457 $toUni .= "<</Registry (Adobe)\n";
8458 $toUni .= "/Ordering (UCS)\n";
8459 $toUni .= "/Supplement 0\n";
8460 $toUni .= ">> def\n";
8461 $toUni .= "/CMapName /Adobe-Identity-UCS def\n";
8462 $toUni .= "/CMapType 2 def\n";
8463 $toUni .= "1 begincodespacerange\n";
8464 $toUni .= "<00> <FF>\n";
8465 $toUni .= "endcodespacerange\n";
8466 $toUni .= count($font['subsets'][$sfid])." beginbfchar\n";
8467 $toUni .= $toUnistring;
8468 $toUni .= "endbfchar\n";
8469 $toUni .= "endcmap\n";
8470 $toUni .= "CMapName currentdict /CMap defineresource pop\n";
8471 $toUni .= "end\n";
8472 $toUni .= "end\n";
8473
8474 $this->_out('<</Length '.(strlen($toUni)).'>>');
8475 $this->_putstream($toUni);
8476 $this->_out('endobj');
8477
8478 //Font file
8479 $this->_newobj();
8480 $this->_out('<</Length '.strlen($fontstream));
8481 $this->_out('/Filter /FlateDecode');
8482 $this->_out('/Length1 '.$ttfontsize);
8483 $this->_out('>>');
8484 $this->_putstream($fontstream);
8485 $this->_out('endobj');
8486 } // foreach subset
8487 unset($ttf);
8488 }
8489 // TrueType embedded SUBSETS or FULL
8490 else if ($type=='TTF') {
8491 $this->fonts[$k]['n']=$this->n+1;
8492 if ($asSubset ) {
8493 $ssfaid="A";
8494 if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
8495 $ttf = new TTFontFile();
8496 $fontname = 'MPDFA'.$ssfaid.'+'.$font['name'];
8497 $subset = $font['subset'];
8498 unset($subset[0]);
8499 $ttfontstream = $ttf->makeSubset($font['ttffile'], $subset, $font['TTCfontID'], $this->debugfonts, $font['unAGlyphs']); // mPDF 5.4.05
8500 $ttfontsize = strlen($ttfontstream);
8501 $fontstream = gzcompress($ttfontstream);
8502 $codeToGlyph = $ttf->codeToGlyph;
8503 unset($codeToGlyph[0]);
8504 }
8505 else { $fontname = $font['name']; }
8506 // Type0 Font
8507 // A composite font - a font composed of other fonts, organized hierarchically
8508 $this->_newobj();
8509 $this->_out('<</Type /Font');
8510 $this->_out('/Subtype /Type0');
8511 $this->_out('/BaseFont /'.$fontname.'');
8512 $this->_out('/Encoding /Identity-H');
8513 $this->_out('/DescendantFonts ['.($this->n + 1).' 0 R]');
8514 $this->_out('/ToUnicode '.($this->n + 2).' 0 R');
8515 $this->_out('>>');
8516 $this->_out('endobj');
8517
8518 // CIDFontType2
8519 // A CIDFont whose glyph descriptions are based on TrueType font technology
8520 $this->_newobj();
8521 $this->_out('<</Type /Font');
8522 $this->_out('/Subtype /CIDFontType2');
8523 $this->_out('/BaseFont /'.$fontname.'');
8524 $this->_out('/CIDSystemInfo '.($this->n + 2).' 0 R');
8525 $this->_out('/FontDescriptor '.($this->n + 3).' 0 R');
8526 if (isset($font['desc']['MissingWidth'])){
8527 $this->_out('/DW '.$font['desc']['MissingWidth'].'');
8528 }
8529
8530 if (!$asSubset && file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw')) {
8531 $w = '';
8532 $w=file_get_contents(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw');
8533 $this->_out($w);
8534 }
8535 else {
8536 $this->_putTTfontwidths($font, $asSubset, $ttf->maxUni);
8537 }
8538
8539 $this->_out('/CIDToGIDMap '.($this->n + 4).' 0 R');
8540 $this->_out('>>');
8541 $this->_out('endobj');
8542
8543 // ToUnicode
8544 $this->_newobj();
8545 $toUni = "/CIDInit /ProcSet findresource begin\n";
8546 $toUni .= "12 dict begin\n";
8547 $toUni .= "begincmap\n";
8548 $toUni .= "/CIDSystemInfo\n";
8549 $toUni .= "<</Registry (Adobe)\n";
8550 $toUni .= "/Ordering (UCS)\n";
8551 $toUni .= "/Supplement 0\n";
8552 $toUni .= ">> def\n";
8553 $toUni .= "/CMapName /Adobe-Identity-UCS def\n";
8554 $toUni .= "/CMapType 2 def\n";
8555 $toUni .= "1 begincodespacerange\n";
8556 $toUni .= "<0000> <FFFF>\n";
8557 $toUni .= "endcodespacerange\n";
8558 $toUni .= "1 beginbfrange\n";
8559 $toUni .= "<0000> <FFFF> <0000>\n";
8560 $toUni .= "endbfrange\n";
8561 $toUni .= "endcmap\n";
8562 $toUni .= "CMapName currentdict /CMap defineresource pop\n";
8563 $toUni .= "end\n";
8564 $toUni .= "end\n";
8565 $this->_out('<</Length '.(strlen($toUni)).'>>');
8566 $this->_putstream($toUni);
8567 $this->_out('endobj');
8568
8569
8570 // CIDSystemInfo dictionary
8571 $this->_newobj();
8572 $this->_out('<</Registry (Adobe)');
8573 $this->_out('/Ordering (UCS)');
8574 $this->_out('/Supplement 0');
8575 $this->_out('>>');
8576 $this->_out('endobj');
8577
8578 // Font descriptor
8579 $this->_newobj();
8580 $this->_out('<</Type /FontDescriptor');
8581 $this->_out('/FontName /'.$fontname);
8582 foreach($font['desc'] as $kd=>$v) {
8583 if ($asSubset && $kd == 'Flags') { $v = $v | 4; $v = $v & ~32; } // SYMBOLIC font flag
8584 $this->_out(' /'.$kd.' '.$v);
8585 }
8586 if ($font['panose']) {
8587 $this->_out(' /Style << /Panose <'.$font['panose'].'> >>');
8588 }
8589 if ($asSubset ) {
8590 $this->_out('/FontFile2 '.($this->n + 2).' 0 R');
8591 }
8592 else if ($font['fontkey']) {
8593 // obj ID of a stream containing a TrueType font program
8594 $this->_out('/FontFile2 '.$this->FontFiles[$font['fontkey']]['n'].' 0 R');
8595 }
8596 $this->_out('>>');
8597 $this->_out('endobj');
8598
8599 // Embed CIDToGIDMap
8600 // A specification of the mapping from CIDs to glyph indices
8601 if ($asSubset ) {
8602 $cidtogidmap = '';
8603 $cidtogidmap = str_pad('', 256*256*2, "\x00");
8604 foreach($codeToGlyph as $cc=>$glyph) {
8605 $cidtogidmap[$cc*2] = chr($glyph >> 8);
8606 $cidtogidmap[$cc*2 + 1] = chr($glyph & 0xFF);
8607 }
8608 $cidtogidmap = gzcompress($cidtogidmap);
8609 }
8610 else {
8611 // First see if there is a cached CIDToGIDMapfile
8612 $cidtogidmap = '';
8613 if (file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cgm')) {
8614 $f=fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cgm','rb');
8615 while(!feof($f)) { $cidtogidmap .= fread($f, 2048); }
8616 fclose($f);
8617 }
8618 else {
8619 if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
8620 $ttf = new TTFontFile();
8621 $charToGlyph = $ttf->getCTG($font['ttffile'], $font['TTCfontID'], $this->debugfonts, $font['unAGlyphs']); // mPDF 5.4.05
8622 $cidtogidmap = str_pad('', 256*256*2, "\x00");
8623 foreach($charToGlyph as $cc=>$glyph) {
8624 $cidtogidmap[$cc*2] = chr($glyph >> 8);
8625 $cidtogidmap[$cc*2 + 1] = chr($glyph & 0xFF);
8626 }
8627 unset($ttf);
8628 $cidtogidmap = gzcompress($cidtogidmap);
8629 if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
8630 $fh = fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cgm',"wb");
8631 fwrite($fh,$cidtogidmap,strlen($cidtogidmap));
8632 fclose($fh);
8633 }
8634 }
8635 }
8636 $this->_newobj();
8637 $this->_out('<</Length '.strlen($cidtogidmap).'');
8638 $this->_out('/Filter /FlateDecode');
8639 $this->_out('>>');
8640 $this->_putstream($cidtogidmap);
8641 $this->_out('endobj');
8642
8643 //Font file
8644 if ($asSubset ) {
8645 $this->_newobj();
8646 $this->_out('<</Length '.strlen($fontstream));
8647 $this->_out('/Filter /FlateDecode');
8648 $this->_out('/Length1 '.$ttfontsize);
8649 $this->_out('>>');
8650 $this->_putstream($fontstream);
8651 $this->_out('endobj');
8652 unset($ttf);
8653 }
8654 }
8655 else { $this->Error('Unsupported font type: '.$type.' ('.$name.')'); }
8656 }
8657}
8658
8659
8660
8661function _putTTfontwidths(&$font, $asSubset, $maxUni) {
8662 if ($asSubset && file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php')) {
8663 include(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php') ;
8664 $startcid = 128;
8665 }
8666 else {
8667 $rangeid = 0;
8668 $range = array();
8669 $prevcid = -2;
8670 $prevwidth = -1;
8671 $interval = false;
8672 $startcid = 1;
8673 }
8674 if ($asSubset) { $cwlen = $maxUni + 1; }
8675 else { $cwlen = (strlen($font['cw'])/2); }
8676
8677 // for each character
8678 for ($cid=$startcid; $cid<$cwlen; $cid++) {
8679 if ($cid==128 && $asSubset && (!file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php'))) {
8680 if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
8681 $fh = fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php',"wb");
8682 $cw127='<?php'."\n";
8683 $cw127.='$rangeid='.$rangeid.";\n";
8684 $cw127.='$prevcid='.$prevcid.";\n";
8685 $cw127.='$prevwidth='.$prevwidth.";\n";
8686 if ($interval) { $cw127.='$interval=true'.";\n"; }
8687 else { $cw127.='$interval=false'.";\n"; }
8688 $cw127.='$range='.var_export($range,true).";\n";
8689 $cw127.="?>";
8690 fwrite($fh,$cw127,strlen($cw127));
8691 fclose($fh);
8692 }
8693 }
8694 if ($font['cw'][$cid*2] == "\00" && $font['cw'][$cid*2+1] == "\00") { continue; }
8695 $width = (ord($font['cw'][$cid*2]) << 8) + ord($font['cw'][$cid*2+1]);
8696 if ($width == 65535) { $width = 0; }
8697 if ($asSubset && $cid > 255 && (!isset($font['subset'][$cid]) || !$font['subset'][$cid])) {
8698 continue;
8699 }
8700 if (!isset($font['dw']) || (isset($font['dw']) && $width != $font['dw'])) {
8701 if ($cid == ($prevcid + 1)) {
8702 // consecutive CID
8703 if ($width == $prevwidth) {
8704 if ($width == $range[$rangeid][0]) {
8705 $range[$rangeid][] = $width;
8706 } else {
8707 array_pop($range[$rangeid]);
8708 // new range
8709 $rangeid = $prevcid;
8710 $range[$rangeid] = array();
8711 $range[$rangeid][] = $prevwidth;
8712 $range[$rangeid][] = $width;
8713 }
8714 $interval = true;
8715 $range[$rangeid]['interval'] = true;
8716 } else {
8717 if ($interval) {
8718 // new range
8719 $rangeid = $cid;
8720 $range[$rangeid] = array();
8721 $range[$rangeid][] = $width;
8722 } else {
8723 $range[$rangeid][] = $width;
8724 }
8725 $interval = false;
8726 }
8727 } else {
8728 // new range
8729 $rangeid = $cid;
8730 $range[$rangeid] = array();
8731 $range[$rangeid][] = $width;
8732 $interval = false;
8733 }
8734 $prevcid = $cid;
8735 $prevwidth = $width;
8736 }
8737 }
8738 $w = $this->_putfontranges($range);
8739 $this->_out($w);
8740 if (!$asSubset) {
8741 if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
8742 $fh = fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw',"wb");
8743 fwrite($fh,$w,strlen($w));
8744 fclose($fh);
8745 }
8746 }
8747}
8748
8749function _putfontranges(&$range) {
8750 // optimize ranges
8751 $prevk = -1;
8752 $nextk = -1;
8753 $prevint = false;
8754 foreach ($range as $k => $ws) {
8755 $cws = count($ws);
8756 if (($k == $nextk) AND (!$prevint) AND ((!isset($ws['interval'])) OR ($cws < 4))) {
8757 if (isset($range[$k]['interval'])) {
8758 unset($range[$k]['interval']);
8759 }
8760 $range[$prevk] = array_merge($range[$prevk], $range[$k]);
8761 unset($range[$k]);
8762 } else {
8763 $prevk = $k;
8764 }
8765 $nextk = $k + $cws;
8766 if (isset($ws['interval'])) {
8767 if ($cws > 3) {
8768 $prevint = true;
8769 } else {
8770 $prevint = false;
8771 }
8772 unset($range[$k]['interval']);
8773 --$nextk;
8774 } else {
8775 $prevint = false;
8776 }
8777 }
8778 // output data
8779 $w = '';
8780 foreach ($range as $k => $ws) {
8781 if (count(array_count_values($ws)) == 1) {
8782 // interval mode is more compact
8783 $w .= ' '.$k.' '.($k + count($ws) - 1).' '.$ws[0];
8784 } else {
8785 // range mode
8786 $w .= ' '.$k.' [ '.implode(' ', $ws).' ]' . "\n";
8787 }
8788 }
8789 return '/W ['.$w.' ]';
8790}
8791
8792
8793function _putfontwidths(&$font, $cidoffset=0) {
8794 ksort($font['cw']);
8795 unset($font['cw'][65535]);
8796 $rangeid = 0;
8797 $range = array();
8798 $prevcid = -2;
8799 $prevwidth = -1;
8800 $interval = false;
8801 // for each character
8802 foreach ($font['cw'] as $cid => $width) {
8803 $cid -= $cidoffset;
8804 if (!isset($font['dw']) || (isset($font['dw']) && $width != $font['dw'])) {
8805 if ($cid == ($prevcid + 1)) {
8806 // consecutive CID
8807 if ($width == $prevwidth) {
8808 if ($width == $range[$rangeid][0]) {
8809 $range[$rangeid][] = $width;
8810 } else {
8811 array_pop($range[$rangeid]);
8812 // new range
8813 $rangeid = $prevcid;
8814 $range[$rangeid] = array();
8815 $range[$rangeid][] = $prevwidth;
8816 $range[$rangeid][] = $width;
8817 }
8818 $interval = true;
8819 $range[$rangeid]['interval'] = true;
8820 } else {
8821 if ($interval) {
8822 // new range
8823 $rangeid = $cid;
8824 $range[$rangeid] = array();
8825 $range[$rangeid][] = $width;
8826 } else {
8827 $range[$rangeid][] = $width;
8828 }
8829 $interval = false;
8830 }
8831 } else {
8832 // new range
8833 $rangeid = $cid;
8834 $range[$rangeid] = array();
8835 $range[$rangeid][] = $width;
8836 $interval = false;
8837 }
8838 $prevcid = $cid;
8839 $prevwidth = $width;
8840 }
8841 }
8842 $this->_out($this->_putfontranges($range));
8843}
8844
8845
8846/*-- CJK-FONTS --*/
8847
8848// from class PDF_Chinese CJK EXTENSIONS
8849function _putType0(&$font)
8850{
8851 //Type0
8852 $this->_out('/Subtype /Type0');
8853 $this->_out('/BaseFont /'.$font['name'].'-'.$font['CMap']);
8854 $this->_out('/Encoding /'.$font['CMap']);
8855 $this->_out('/DescendantFonts ['.($this->n+1).' 0 R]');
8856 $this->_out('>>');
8857 $this->_out('endobj');
8858 //CIDFont
8859 $this->_newobj();
8860 $this->_out('<</Type /Font');
8861 $this->_out('/Subtype /CIDFontType0');
8862 $this->_out('/BaseFont /'.$font['name']);
8863
8864 $cidinfo = '/Registry '.$this->_textstring('Adobe');
8865 $cidinfo .= ' /Ordering '.$this->_textstring($font['registry']['ordering']);
8866 $cidinfo .= ' /Supplement '.$font['registry']['supplement'];
8867 $this->_out('/CIDSystemInfo <<'.$cidinfo.'>>');
8868
8869 $this->_out('/FontDescriptor '.($this->n+1).' 0 R');
8870 if (isset($font['MissingWidth'])){
8871 $this->_out('/DW '.$font['MissingWidth'].'');
8872 }
8873 $this->_putfontwidths($font, 31);
8874 $this->_out('>>');
8875 $this->_out('endobj');
8876
8877 //Font descriptor
8878 $this->_newobj();
8879 $s = '<</Type /FontDescriptor /FontName /'.$font['name'];
8880 foreach ($font['desc'] as $k => $v) {
8881 if ($k != 'Style') {
8882 $s .= ' /'.$k.' '.$v.'';
8883 }
8884 }
8885 $this->_out($s.'>>');
8886 $this->_out('endobj');
8887}
8888/*-- END CJK-FONTS --*/
8889
8890
8891
8892function _putimages()
8893{
8894 $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
8895 reset($this->images);
8896 while(list($file,$info)=each($this->images)) {
8897 $this->_newobj();
8898 $this->images[$file]['n']=$this->n;
8899 $this->_out('<</Type /XObject');
8900 $this->_out('/Subtype /Image');
8901 $this->_out('/Width '.$info['w']);
8902 $this->_out('/Height '.$info['h']);
8903 if (isset($info['masked'])) {
8904 $this->_out('/SMask '.($this->n - 1).' 0 R');
8905 }
8906 if($info['cs']=='Indexed') {
8907 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.")."); }
8908 $this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]');
8909 }
8910 else {
8911 $this->_out('/ColorSpace /'.$info['cs']);
8912 if($info['cs']=='DeviceCMYK') {
8913 if ($this->PDFA && $this->restrictColorSpace!=3) { $this->Error("PDFA1-b does not permit Images using mixed colour space (".$file.")."); }
8914 if($info['type']=='jpg') { $this->_out('/Decode [1 0 1 0 1 0 1 0]'); }
8915 }
8916 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.")."); }
8917 }
8918 $this->_out('/BitsPerComponent '.$info['bpc']);
8919 if (isset($info['f']) && $info['f']) { $this->_out('/Filter /'.$info['f']); }
8920 if(isset($info['parms'])) { $this->_out($info['parms']); }
8921 if(isset($info['trns']) and is_array($info['trns'])) {
8922 $trns='';
8923 for($i=0;$i<count($info['trns']);$i++)
8924 $trns.=$info['trns'][$i].' '.$info['trns'][$i].' ';
8925 $this->_out('/Mask ['.$trns.']');
8926 }
8927 $this->_out('/Length '.strlen($info['data']).'>>');
8928 $this->_putstream($info['data']);
8929
8930 unset($this->images[$file]['data']);
8931 $this->_out('endobj');
8932 //Palette
8933 if($info['cs']=='Indexed') {
8934 $this->_newobj();
8935 $pal=($this->compress) ? gzcompress($info['pal']) : $info['pal'];
8936 $this->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
8937 $this->_putstream($pal);
8938 $this->_out('endobj');
8939 }
8940 }
8941}
8942
8943function _putinfo()
8944{
8945 $this->_out('/Producer '.$this->_UTF16BEtextstring('mPDF '.mPDF_VERSION));
8946 if(!empty($this->title))
8947 $this->_out('/Title '.$this->_UTF16BEtextstring($this->title));
8948 if(!empty($this->subject))
8949 $this->_out('/Subject '.$this->_UTF16BEtextstring($this->subject));
8950 if(!empty($this->author))
8951 $this->_out('/Author '.$this->_UTF16BEtextstring($this->author));
8952 if(!empty($this->keywords))
8953 $this->_out('/Keywords '.$this->_UTF16BEtextstring($this->keywords));
8954 if(!empty($this->creator))
8955 $this->_out('/Creator '.$this->_UTF16BEtextstring($this->creator));
8956
8957 $z = date('O'); // +0200
8958 $offset = substr($z,0,3)."'".substr($z,3,2)."'";
8959 $this->_out('/CreationDate '.$this->_textstring(date('YmdHis').$offset));
8960 $this->_out('/ModDate '.$this->_textstring(date('YmdHis').$offset));
8961 if ($this->PDFX) {
8962 $this->_out('/Trapped/False');
8963 $this->_out('/GTS_PDFXVersion(PDF/X-1a:2003)');
8964 }
8965}
8966
8967function _putmetadata() {
8968 $this->_newobj();
8969 $this->MetadataRoot = $this->n;
8970 $Producer = 'mPDF '.mPDF_VERSION;
8971 $z = date('O'); // +0200
8972 $offset = substr($z,0,3).':'.substr($z,3,2);
8973 $CreationDate = date('Y-m-d\TH:i:s').$offset; // 2006-03-10T10:47:26-05:00 2006-06-19T09:05:17Z
8974 $uuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff),
8975 mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000,
8976 mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff) );
8977
8978
8979 $m = '<?xpacket begin="'.chr(239).chr(187).chr(191).'" id="W5M0MpCehiHzreSzNTczkc9d"?>'."\n"; // begin = FEFF BOM
8980 $m .= ' <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1-701">'."\n";
8981 $m .= ' <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">'."\n";
8982 $m .= ' <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">'."\n";
8983 $m .= ' <pdf:Producer>'.$Producer.'</pdf:Producer>'."\n";
8984 if(!empty($this->keywords)) { $m .= ' <pdf:Keywords>'.$this->keywords.'</pdf:Keywords>'."\n"; }
8985 $m .= ' </rdf:Description>'."\n";
8986
8987 $m .= ' <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:xmp="http://ns.adobe.com/xap/1.0/">'."\n";
8988 $m .= ' <xmp:CreateDate>'.$CreationDate.'</xmp:CreateDate>'."\n";
8989 $m .= ' <xmp:ModifyDate>'.$CreationDate.'</xmp:ModifyDate>'."\n";
8990 $m .= ' <xmp:MetadataDate>'.$CreationDate.'</xmp:MetadataDate>'."\n";
8991 if(!empty($this->creator)) { $m .= ' <xmp:CreatorTool>'.$this->creator.'</xmp:CreatorTool>'."\n"; }
8992 $m .= ' </rdf:Description>'."\n";
8993
8994 // DC elements
8995 $m .= ' <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:dc="http://purl.org/dc/elements/1.1/">'."\n";
8996 $m .= ' <dc:format>application/pdf</dc:format>'."\n";
8997 if(!empty($this->title)) {
8998 $m .= ' <dc:title>
8999 <rdf:Alt>
9000 <rdf:li xml:lang="x-default">'.$this->title.'</rdf:li>
9001 </rdf:Alt>
9002 </dc:title>'."\n";
9003 }
9004 if(!empty($this->keywords)) {
9005 $m .= ' <dc:subject>
9006 <rdf:Bag>
9007 <rdf:li>'.$this->keywords.'</rdf:li>
9008 </rdf:Bag>
9009 </dc:subject>'."\n";
9010 }
9011 if(!empty($this->subject)) {
9012 $m .= ' <dc:description>
9013 <rdf:Alt>
9014 <rdf:li xml:lang="x-default">'.$this->subject.'</rdf:li>
9015 </rdf:Alt>
9016 </dc:description>'."\n";
9017 }
9018 if(!empty($this->author)) {
9019 $m .= ' <dc:creator>
9020 <rdf:Seq>
9021 <rdf:li>'.$this->author.'</rdf:li>
9022 </rdf:Seq>
9023 </dc:creator>'."\n";
9024 }
9025 $m .= ' </rdf:Description>'."\n";
9026
9027
9028 // This bit is specific to PDFX-1a
9029 if ($this->PDFX) {
9030 $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";
9031 }
9032
9033 // This bit is specific to PDFA-1b
9034 else if ($this->PDFA) {
9035 $m .= ' <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/" >'."\n";
9036 $m .= ' <pdfaid:part>1</pdfaid:part>'."\n";
9037 $m .= ' <pdfaid:conformance>B</pdfaid:conformance>'."\n";
9038 $m .= ' <pdfaid:amd>2005</pdfaid:amd>'."\n";
9039 $m .= ' </rdf:Description>'."\n";
9040 }
9041
9042 $m .= ' <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">'."\n";
9043 $m .= ' <xmpMM:DocumentID>uuid:'.$uuid.'</xmpMM:DocumentID>'."\n";
9044 $m .= ' </rdf:Description>'."\n";
9045 $m .= ' </rdf:RDF>'."\n";
9046 $m .= ' </x:xmpmeta>'."\n";
9047 $m .= str_repeat(str_repeat(' ',100)."\n",20); // 2-4kB whitespace padding required
9048 $m .= '<?xpacket end="w"?>'; // "r" read only
9049 $this->_out('<</Type/Metadata/Subtype/XML/Length '.strlen($m).'>>');
9050 $this->_putstream($m);
9051 $this->_out('endobj');
9052}
9053
9054function _putoutputintent() {
9055 $this->_newobj();
9056 $this->OutputIntentRoot = $this->n;
9057 $this->_out('<</Type /OutputIntent');
9058
9059 if ($this->PDFA) {
9060 $this->_out('/S /GTS_PDFA1');
9061 if ($this->ICCProfile) {
9062 $this->_out('/Info ('.preg_replace('/_/',' ',$this->ICCProfile).')');
9063 $this->_out('/OutputConditionIdentifier (Custom)');
9064 $this->_out('/OutputCondition ()');
9065 }
9066 else {
9067 $this->_out('/Info (sRGB IEC61966-2.1)');
9068 $this->_out('/OutputConditionIdentifier (sRGB IEC61966-2.1)');
9069 $this->_out('/OutputCondition ()');
9070 }
9071 $this->_out('/DestOutputProfile '.($this->n+1).' 0 R');
9072 }
9073 else if ($this->PDFX) { // always a CMYK profile
9074 $this->_out('/S /GTS_PDFX');
9075 if ($this->ICCProfile) {
9076 $this->_out('/Info ('.preg_replace('/_/',' ',$this->ICCProfile).')');
9077 $this->_out('/OutputConditionIdentifier (Custom)');
9078 $this->_out('/OutputCondition ()');
9079 $this->_out('/DestOutputProfile '.($this->n+1).' 0 R');
9080 }
9081 else {
9082 $this->_out('/Info (CGATS TR 001)');
9083 $this->_out('/OutputConditionIdentifier (CGATS TR 001)');
9084 $this->_out('/OutputCondition (CGATS TR 001 (SWOP))');
9085 $this->_out('/RegistryName (http://www.color.org)');
9086 }
9087 }
9088 $this->_out('>>');
9089 $this->_out('endobj');
9090
9091 if ($this->PDFX && !$this->ICCProfile) { return; } // no ICCProfile embedded
9092
9093 $this->_newobj();
9094 if ($this->ICCProfile)
9095 $s = file_get_contents(_MPDF_PATH.'iccprofiles/'.$this->ICCProfile.'.icc');
9096 else
9097 $s = file_get_contents(_MPDF_PATH.'iccprofiles/sRGB_IEC61966-2-1.icc');
9098 if ($this->compress) { $s = gzcompress($s); }
9099 $this->_out('<<');
9100 if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace == 3)) { $this->_out('/N 4'); }
9101 else { $this->_out('/N 3'); }
9102 if ($this->compress)
9103 $this->_out('/Filter /FlateDecode ');
9104 $this->_out('/Length '.strlen($s).'>>');
9105 $this->_putstream($s);
9106 $this->_out('endobj');
9107}
9108
9109
9110function _putcatalog() {
9111 $this->_out('/Type /Catalog');
9112 $this->_out('/Pages 1 0 R');
9113 if($this->ZoomMode=='fullpage') $this->_out('/OpenAction [3 0 R /Fit]');
9114 elseif($this->ZoomMode=='fullwidth') $this->_out('/OpenAction [3 0 R /FitH null]');
9115 elseif($this->ZoomMode=='real') $this->_out('/OpenAction [3 0 R /XYZ null null 1]');
9116 elseif(!is_string($this->ZoomMode)) $this->_out('/OpenAction [3 0 R /XYZ null null '.($this->ZoomMode/100).']');
9117 else $this->_out('/OpenAction [3 0 R /XYZ null null null]');
9118 if($this->LayoutMode=='single') $this->_out('/PageLayout /SinglePage');
9119 elseif($this->LayoutMode=='continuous') $this->_out('/PageLayout /OneColumn');
9120 elseif($this->LayoutMode=='twoleft') $this->_out('/PageLayout /TwoColumnLeft');
9121 elseif($this->LayoutMode=='tworight') $this->_out('/PageLayout /TwoColumnRight');
9122 elseif($this->LayoutMode=='two') {
9123 if ($this->mirrorMargins) { $this->_out('/PageLayout /TwoColumnRight'); }
9124 else { $this->_out('/PageLayout /TwoColumnLeft'); }
9125 }
9126
9127/*-- BOOKMARKS --*/
9128 if(count($this->BMoutlines)>0) {
9129 $this->_out('/Outlines '.$this->OutlineRoot.' 0 R');
9130 $this->_out('/PageMode /UseOutlines');
9131 }
9132/*-- END BOOKMARKS --*/
9133 if(is_int(strpos($this->DisplayPreferences,'FullScreen'))) $this->_out('/PageMode /FullScreen');
9134
9135 // Metadata
9136 if ($this->PDFA || $this->PDFX) {
9137 $this->_out('/Metadata '.$this->MetadataRoot.' 0 R');
9138 }
9139 // OutputIntents
9140 if ($this->PDFA || $this->PDFX || $this->ICCProfile) {
9141 $this->_out('/OutputIntents ['.$this->OutputIntentRoot.' 0 R]');
9142 }
9143
9144/*-- FORMS --*/
9145 if (count($this->form->forms)>0) {
9146 $this->form->_putFormsCatalog();
9147 }
9148/*-- END FORMS --*/
9149 if ( isset($this->js) ) {
9150 $this->_out('/Names << /JavaScript '.($this->n_js).' 0 R >> ');
9151 }
9152
9153 if($this->DisplayPreferences || $this->directionality == 'rtl' || $this->mirrorMargins) {
9154 $this->_out('/ViewerPreferences<<');
9155 if(is_int(strpos($this->DisplayPreferences,'HideMenubar'))) $this->_out('/HideMenubar true');
9156 if(is_int(strpos($this->DisplayPreferences,'HideToolbar'))) $this->_out('/HideToolbar true');
9157 if(is_int(strpos($this->DisplayPreferences,'HideWindowUI'))) $this->_out('/HideWindowUI true');
9158 if(is_int(strpos($this->DisplayPreferences,'DisplayDocTitle'))) $this->_out('/DisplayDocTitle true');
9159 if(is_int(strpos($this->DisplayPreferences,'CenterWindow'))) $this->_out('/CenterWindow true');
9160 if(is_int(strpos($this->DisplayPreferences,'FitWindow'))) $this->_out('/FitWindow true');
9161 // /PrintScaling is PDF 1.6 spec.
9162 if(is_int(strpos($this->DisplayPreferences,'NoPrintScaling')) && !$this->PDFA && !$this->PDFX)
9163 $this->_out('/PrintScaling /None');
9164 if($this->directionality == 'rtl') $this->_out('/Direction /R2L');
9165 // /Duplex is PDF 1.7 spec.
9166 if($this->mirrorMargins && !$this->PDFA && !$this->PDFX) {
9167 // if ($this->DefOrientation=='P') $this->_out('/Duplex /DuplexFlipShortEdge');
9168 $this->_out('/Duplex /DuplexFlipLongEdge'); // PDF v1.7+
9169 }
9170 $this->_out('>>');
9171 }
9172 // mPDF 5.6.01
9173 if($this->open_layer_pane && ($this->hasOC || count($this->layers)))
9174 $this->_out('/PageMode /UseOC');
9175
9176 // mPDF 5.6.01
9177 if ($this->hasOC || count($this->layers)) {
9178 $p = $v = $h = $l = $loff = $lall = $as = ''; // mPDF 5.6.28
9179 if ($this->hasOC) {
9180 if (($this->hasOC & 1) == 1) $p=$this->n_ocg_print.' 0 R';
9181 if (($this->hasOC & 2) == 2) $v=$this->n_ocg_view.' 0 R';
9182 if (($this->hasOC & 4) == 4) $h=$this->n_ocg_hidden.' 0 R';
9183 $as="<</Event /Print /OCGs [$p $v $h] /Category [/Print]>> <</Event /View /OCGs [$p $v $h] /Category [/View]>>";
9184 }
9185
9186 if(count($this->layers)) {
9187 foreach($this->layers as $k=>$layer) { // mPDF 5.6.28
9188 if (strtolower($this->layerDetails[$k]['state'])=='hidden') { $loff .= $layer['n'].' 0 R '; }
9189 else { $l .= $layer['n'].' 0 R '; }
9190 $lall .= $layer['n'].' 0 R ';
9191 }
9192 }
9193 $this->_out("/OCProperties <</OCGs [$p $v $h $lall] /D <</ON [$p $l] /OFF [$v $h $loff] "); // mPDF 5.6.28
9194 $this->_out("/Order [$v $p $h $lall] "); // mPDF 5.6.28
9195 if ($as) $this->_out("/AS [$as] ");
9196 $this->_out(">>>>");
9197
9198 }
9199
9200}
9201
9202// Inactive function left for backwards compatability
9203function SetUserRights($enable=true, $annots="", $form="", $signature="") {
9204 // Does nothing
9205}
9206
9207function _enddoc() {
9208 if ($this->progressBar) { $this->UpdateProgressBar(2,'10','Writing Headers & Footers'); } // *PROGRESS-BAR*
9209 $this->_puthtmlheaders(); // *HTMLHEADERS-FOOTERS*
9210 if ($this->progressBar) { $this->UpdateProgressBar(2,'20','Writing Pages'); } // *PROGRESS-BAR*
9211 // Remove references to unused fonts (usually default font)
9212 foreach($this->fonts as $fk=>$font) {
9213 if (!$font['used'] && ($font['type']=='TTF')) {
9214 if ($font['sip'] || $font['smp']) {
9215 foreach($font['subsetfontids'] AS $k => $fid) {
9216 foreach($this->pages AS $pn=>$page) {
9217 $this->pages[$pn] = preg_replace('/\s\/F'.$fid.' \d[\d.]* Tf\s/is',' ',$this->pages[$pn]);
9218 }
9219 }
9220 }
9221 else {
9222 foreach($this->pages AS $pn=>$page) {
9223 $this->pages[$pn] = preg_replace('/\s\/F'.$font['i'].' \d[\d.]* Tf\s/is',' ',$this->pages[$pn]);
9224 }
9225 }
9226 }
9227 }
9228
9229 // mPDF 5.6.01 - LAYERS
9230 if (count($this->layers)) {
9231 foreach($this->pages AS $pn=>$page) {
9232 preg_match_all('/\/OCZ-index \/ZI(\d+) BDC(.*?)(EMCZ)-index/is',$this->pages[$pn],$m1);
9233 preg_match_all('/\/OCBZ-index \/ZI(\d+) BDC(.*?)(EMCBZ)-index/is',$this->pages[$pn],$m2);
9234 preg_match_all('/\/OCGZ-index \/ZI(\d+) BDC(.*?)(EMCGZ)-index/is',$this->pages[$pn],$m3);
9235 $m = array();
9236 for ($i=0;$i<4;$i++) {
9237 $m[$i] = array_merge($m1[$i],$m2[$i],$m3[$i]);
9238 }
9239 if (count($m[0])) {
9240 $sortarr = array();
9241 for($i=0;$i<count($m[0]);$i++) {
9242 $key = $m[1][$i]*2;
9243 if ($m[3][$i]=='EMCZ') $key +=2; // background first then gradient then normal
9244 else if ($m[3][$i]=='EMCGZ') $key +=1;
9245 $sortarr[$i] = $key;
9246 }
9247 asort($sortarr);
9248 foreach($sortarr AS $i=>$k) {
9249 $this->pages[$pn] = str_replace($m[0][$i],'',$this->pages[$pn] );
9250 $this->pages[$pn] .= "\n".$m[0][$i]."\n";
9251 }
9252 $this->pages[$pn] = preg_replace('/\/OC[BG]{0,1}Z-index \/ZI(\d+) BDC/is','/OC /ZI\\1 BDC ',$this->pages[$pn]);
9253 $this->pages[$pn] = preg_replace('/EMC[BG]{0,1}Z-index/is','EMC',$this->pages[$pn]);
9254 }
9255 }
9256 }
9257
9258 $this->_putpages();
9259 if ($this->progressBar) { $this->UpdateProgressBar(2,'30','Writing document resources'); } // *PROGRESS-BAR*
9260
9261 $this->_putresources();
9262 //Info
9263 $this->_newobj();
9264 $this->InfoRoot = $this->n;
9265 $this->_out('<<');
9266 if ($this->progressBar) { $this->UpdateProgressBar(2,'80','Writing document info'); } // *PROGRESS-BAR*
9267 $this->_putinfo();
9268 $this->_out('>>');
9269 $this->_out('endobj');
9270
9271 // METADATA
9272 if ($this->PDFA || $this->PDFX) { $this->_putmetadata(); }
9273 // OUTPUTINTENT
9274 if ($this->PDFA || $this->PDFX || $this->ICCProfile) { $this->_putoutputintent(); }
9275
9276 //Catalog
9277 $this->_newobj();
9278 $this->_out('<<');
9279 if ($this->progressBar) { $this->UpdateProgressBar(2,'90','Writing document catalog'); } // *PROGRESS-BAR*
9280 $this->_putcatalog();
9281 $this->_out('>>');
9282 $this->_out('endobj');
9283 //Cross-ref
9284 $o=strlen($this->buffer);
9285 $this->_out('xref');
9286 $this->_out('0 '.($this->n+1));
9287 $this->_out('0000000000 65535 f ');
9288 for($i=1; $i <= $this->n ; $i++)
9289 $this->_out(sprintf('%010d 00000 n ',$this->offsets[$i]));
9290 //Trailer
9291 $this->_out('trailer');
9292 $this->_out('<<');
9293 $this->_puttrailer();
9294 $this->_out('>>');
9295 $this->_out('startxref');
9296 $this->_out($o);
9297
9298 $this->buffer .= '%%EOF';
9299 $this->state=3;
9300/*-- IMPORTS --*/
9301
9302 if ($this->enableImports && count($this->parsers) > 0) {
9303 foreach ($this->parsers as $k => $_){
9304 $this->parsers[$k]->closeFile();
9305 $this->parsers[$k] = null;
9306 unset($this->parsers[$k]);
9307 }
9308 }
9309/*-- END IMPORTS --*/
9310}
9311
9312function _beginpage($orientation,$mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0,$pagesel='',$newformat='') {
9313 if (!($pagesel && $this->page==1 && (sprintf("%0.4f", $this->y)==sprintf("%0.4f", $this->tMargin)))) {
9314 $this->page++;
9315 $this->pages[$this->page]='';
9316 }
9317 $this->state=2;
9318 $resetHTMLHeadersrequired = false;
9319
9320 if ($newformat) { $this->_setPageSize($newformat, $orientation); }
9321/*-- CSS-PAGE --*/
9322 // Paged media (page-box)
9323
9324 if ($pagesel || (isset($this->page_box['using']) && $this->page_box['using'])) {
9325 if ($pagesel || $this->page==1) { $first = true; }
9326 else { $first = false; }
9327 if ($this->mirrorMargins && ($this->page % 2==0)) { $oddEven = 'E'; }
9328 else { $oddEven = 'O'; }
9329 if ($pagesel) { $psel = $pagesel; }
9330 else if ($this->page_box['current']) { $psel = $this->page_box['current']; }
9331 else { $psel = ''; }
9332 list($orientation,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$hname,$fname,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat) = $this->SetPagedMediaCSS($psel, $first, $oddEven);
9333 if ($this->mirrorMargins && ($this->page % 2==0)) {
9334 if ($hname) { $ehvalue = 1; $ehname = $hname; } else { $ehvalue = -1; }
9335 if ($fname) { $efvalue = 1; $efname = $fname; } else { $efvalue = -1; }
9336 }
9337 else {
9338 if ($hname) { $ohvalue = 1; $ohname = $hname; } else { $ohvalue = -1; }
9339 if ($fname) { $ofvalue = 1; $ofname = $fname; } else { $ofvalue = -1; }
9340 }
9341 if ($resetpagenum || $pagenumstyle || $suppress) {
9342 $this->PageNumSubstitutions[] = array('from'=>($this->page), 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=>$suppress);
9343 }
9344 // PAGED MEDIA - CROP / CROSS MARKS from @PAGE
9345 $this->show_marks = $marks;
9346
9347 // Background color
9348 if (isset($bg['BACKGROUND-COLOR'])) {
9349 $cor = $this->ConvertColor($bg['BACKGROUND-COLOR']);
9350 if ($cor) {
9351 $this->bodyBackgroundColor = $cor;
9352 }
9353 }
9354 else { $this->bodyBackgroundColor = false; }
9355
9356/*-- BACKGROUNDS --*/
9357 if (isset($bg['BACKGROUND-GRADIENT'])) {
9358 $this->bodyBackgroundGradient = $bg['BACKGROUND-GRADIENT'];
9359 }
9360 else { $this->bodyBackgroundGradient = false; }
9361
9362 // Tiling Patterns
9363 if (isset($bg['BACKGROUND-IMAGE']) && $bg['BACKGROUND-IMAGE']) {
9364 $ret = $this->SetBackground($bg, $this->pgwidth);
9365 if ($ret) { $this->bodyBackgroundImage = $ret; }
9366 }
9367 else { $this->bodyBackgroundImage = false; }
9368/*-- END BACKGROUNDS --*/
9369
9370 $this->page_box['current'] = $psel;
9371 $this->page_box['using'] = true;
9372 }
9373/*-- END CSS-PAGE --*/
9374
9375 //Page orientation
9376 if(!$orientation)
9377 $orientation=$this->DefOrientation;
9378 else {
9379 $orientation=strtoupper(substr($orientation,0,1));
9380 if($orientation!=$this->DefOrientation)
9381 $this->OrientationChanges[$this->page]=true;
9382 }
9383 if($orientation!=$this->CurOrientation || $newformat) {
9384
9385 //Change orientation
9386 if($orientation=='P') {
9387 $this->wPt=$this->fwPt;
9388 $this->hPt=$this->fhPt;
9389 $this->w=$this->fw;
9390 $this->h=$this->fh;
9391 if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation=='P') {
9392 $this->tMargin = $this->orig_tMargin;
9393 $this->bMargin = $this->orig_bMargin;
9394 $this->DeflMargin = $this->orig_lMargin;
9395 $this->DefrMargin = $this->orig_rMargin;
9396 $this->margin_header = $this->orig_hMargin;
9397 $this->margin_footer = $this->orig_fMargin;
9398 }
9399 else { $resetHTMLHeadersrequired = true; } // *HTMLHEADERS-FOOTERS*
9400 }
9401 else {
9402 $this->wPt=$this->fhPt;
9403 $this->hPt=$this->fwPt;
9404 $this->w=$this->fh;
9405 $this->h=$this->fw;
9406 if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation=='P') {
9407 $this->tMargin = $this->orig_lMargin;
9408 $this->bMargin = $this->orig_rMargin;
9409 $this->DeflMargin = $this->orig_bMargin;
9410 $this->DefrMargin = $this->orig_tMargin;
9411 $this->margin_header = $this->orig_hMargin;
9412 $this->margin_footer = $this->orig_fMargin;
9413 }
9414 else { $resetHTMLHeadersrequired = true; } // *HTMLHEADERS-FOOTERS*
9415
9416 }
9417 $this->CurOrientation=$orientation;
9418 $this->ResetMargins();
9419 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
9420 $this->PageBreakTrigger=$this->h-$this->bMargin;
9421 }
9422
9423 $this->pageDim[$this->page]['w']=$this->w ;
9424 $this->pageDim[$this->page]['h']=$this->h ;
9425
9426 $this->pageDim[$this->page]['outer_width_LR'] = isset($this->page_box['outer_width_LR']) ? $this->page_box['outer_width_LR'] : 0;
9427 $this->pageDim[$this->page]['outer_width_TB'] = isset($this->page_box['outer_width_TB']) ? $this->page_box['outer_width_TB'] : 0;
9428 if (!isset($this->page_box['outer_width_LR']) && !isset($this->page_box['outer_width_TB'])) {
9429 $this->pageDim[$this->page]['bleedMargin'] = 0;
9430 }
9431 else if ($this->bleedMargin <= $this->page_box['outer_width_LR'] && $this->bleedMargin <= $this->page_box['outer_width_TB']) {
9432 $this->pageDim[$this->page]['bleedMargin'] = $this->bleedMargin;
9433 }
9434 else {
9435 $this->pageDim[$this->page]['bleedMargin'] = min($this->page_box['outer_width_LR'], $this->page_box['outer_width_TB'])-0.01;
9436 }
9437
9438 // If Page Margins are re-defined
9439 // strlen()>0 is used to pick up (integer) 0, (string) '0', or set value
9440 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)) {
9441 if (strlen($mgl)>0) $this->DeflMargin = $mgl;
9442 if (strlen($mgr)>0) $this->DefrMargin = $mgr;
9443 if (strlen($mgt)>0) $this->tMargin = $mgt;
9444 if (strlen($mgb)>0) $this->bMargin = $mgb;
9445 if (strlen($mgh)>0) $this->margin_header=$mgh;
9446 if (strlen($mgf)>0) $this->margin_footer=$mgf;
9447 $this->ResetMargins();
9448 $this->SetAutoPageBreak($this->autoPageBreak,$this->bMargin);
9449 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
9450 $resetHTMLHeadersrequired = true; // *HTMLHEADERS-FOOTERS*
9451 }
9452
9453 $this->ResetMargins();
9454 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
9455 $this->SetAutoPageBreak($this->autoPageBreak,$this->bMargin);
9456
9457 // Reset column top margin
9458 $this->y0 = $this->tMargin;
9459
9460 $this->x=$this->lMargin;
9461 $this->y=$this->tMargin;
9462 $this->FontFamily='';
9463
9464 // HEADERS AND FOOTERS
9465 if ($ohvalue<0 || strtoupper($ohvalue)=='OFF') {
9466 $this->HTMLHeader = '';
9467 $this->headerDetails['odd'] = array();
9468 $resetHTMLHeadersrequired = true; // *HTMLHEADERS-FOOTERS*
9469 }
9470 else if ($ohname && $ohvalue>0) {
9471/*-- HTMLHEADERS-FOOTERS --*/
9472 if (preg_match('/^html_(.*)$/i',$ohname,$n)) {
9473 if (isset($this->pageHTMLheaders[$n[1]])) { $this->HTMLHeader = $this->pageHTMLheaders[$n[1]]; }
9474 else { $this->HTMLHeader = ''; }
9475 $this->headerDetails['odd'] = array();
9476 $resetHTMLHeadersrequired = true;
9477 }
9478 else {
9479/*-- END HTMLHEADERS-FOOTERS --*/
9480 if (isset($this->pageheaders[$ohname])) { $this->headerDetails['odd'] = $this->pageheaders[$ohname]; }
9481 else if ($ohname!='_default') { $this->headerDetails['odd'] = array(); }
9482 $this->HTMLHeader = '';
9483/*-- HTMLHEADERS-FOOTERS --*/
9484 $resetHTMLHeadersrequired = false;
9485 }
9486/*-- END HTMLHEADERS-FOOTERS --*/
9487 }
9488
9489 if ($ehvalue<0 || strtoupper($ehvalue)=='OFF') {
9490 $this->HTMLHeaderE = '';
9491 $this->headerDetails['even'] = array();
9492 $resetHTMLHeadersrequired = true; // *HTMLHEADERS-FOOTERS*
9493 }
9494 else if ($ehname && $ehvalue>0) {
9495/*-- HTMLHEADERS-FOOTERS --*/
9496 if (preg_match('/^html_(.*)$/i',$ehname,$n)) {
9497 if (isset($this->pageHTMLheaders[$n[1]])) { $this->HTMLHeaderE = $this->pageHTMLheaders[$n[1]]; }
9498 else { $this->HTMLHeaderE = ''; }
9499 $this->headerDetails['even'] = array();
9500 $resetHTMLHeadersrequired = true;
9501 }
9502 else {
9503/*-- END HTMLHEADERS-FOOTERS --*/
9504 if (isset($this->pageheaders[$ehname])) { $this->headerDetails['even'] = $this->pageheaders[$ehname]; }
9505 else if ($ehname!='_default') { $this->headerDetails['even'] = array(); }
9506 $this->HTMLHeaderE = '';
9507/*-- HTMLHEADERS-FOOTERS --*/
9508 $resetHTMLHeadersrequired = false;
9509 }
9510/*-- END HTMLHEADERS-FOOTERS --*/
9511 }
9512
9513 if ($ofvalue<0 || strtoupper($ofvalue)=='OFF') {
9514 $this->HTMLFooter = '';
9515 $this->footerDetails['odd'] = array();
9516 $resetHTMLHeadersrequired = true; // *HTMLHEADERS-FOOTERS*
9517 }
9518 else if ($ofname && $ofvalue>0) {
9519/*-- HTMLHEADERS-FOOTERS --*/
9520 if (preg_match('/^html_(.*)$/i',$ofname,$n)) {
9521 if (isset($this->pageHTMLfooters[$n[1]])) { $this->HTMLFooter = $this->pageHTMLfooters[$n[1]]; }
9522 else { $this->HTMLFooter = ''; }
9523 $this->footerDetails['odd'] = array();
9524 $resetHTMLHeadersrequired = true;
9525 }
9526 else {
9527/*-- END HTMLHEADERS-FOOTERS --*/
9528 if (isset($this->pagefooters[$ofname])) { $this->footerDetails['odd'] = $this->pagefooters[$ofname]; }
9529 else if ($ofname!='_default') { $this->footerDetails['odd'] = array(); }
9530 $this->HTMLFooter = '';
9531/*-- HTMLHEADERS-FOOTERS --*/
9532 $resetHTMLHeadersrequired = true;
9533 }
9534/*-- END HTMLHEADERS-FOOTERS --*/
9535 }
9536
9537 if ($efvalue<0 || strtoupper($efvalue)=='OFF') {
9538 $this->HTMLFooterE = '';
9539 $this->footerDetails['even'] = array();
9540 $resetHTMLHeadersrequired = true; // *HTMLHEADERS-FOOTERS*
9541 }
9542 else if ($efname && $efvalue>0) {
9543/*-- HTMLHEADERS-FOOTERS --*/
9544 if (preg_match('/^html_(.*)$/i',$efname,$n)) {
9545 if (isset($this->pageHTMLfooters[$n[1]])) { $this->HTMLFooterE = $this->pageHTMLfooters[$n[1]]; }
9546 else { $this->HTMLFooterE = ''; }
9547 $this->footerDetails['even'] = array();
9548 $resetHTMLHeadersrequired = true;
9549 }
9550 else {
9551/*-- END HTMLHEADERS-FOOTERS --*/
9552 if (isset($this->pagefooters[$efname])) { $this->footerDetails['even'] = $this->pagefooters[$efname]; }
9553 else if ($efname!='_default') { $this->footerDetails['even'] = array(); }
9554 $this->HTMLFooterE = '';
9555/*-- HTMLHEADERS-FOOTERS --*/
9556 $resetHTMLHeadersrequired = true;
9557 }
9558/*-- END HTMLHEADERS-FOOTERS --*/
9559 }
9560/*-- HTMLHEADERS-FOOTERS --*/
9561 if ($resetHTMLHeadersrequired) {
9562 $this->SetHTMLHeader($this->HTMLHeader );
9563 $this->SetHTMLHeader($this->HTMLHeaderE ,'E');
9564 $this->SetHTMLFooter($this->HTMLFooter );
9565 $this->SetHTMLFooter($this->HTMLFooterE ,'E');
9566 }
9567/*-- END HTMLHEADERS-FOOTERS --*/
9568
9569
9570 if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN
9571 $this->_setAutoHeaderHeight($this->headerDetails['even'], $this->HTMLHeaderE);
9572 $this->_setAutoFooterHeight($this->footerDetails['even'], $this->HTMLFooterE);
9573 }
9574 else { // ODD or DEFAULT
9575 $this->_setAutoHeaderHeight($this->headerDetails['odd'], $this->HTMLHeader);
9576 $this->_setAutoFooterHeight($this->footerDetails['odd'], $this->HTMLFooter);
9577 }
9578 // Reset column top margin
9579 $this->y0 = $this->tMargin;
9580
9581 $this->x=$this->lMargin;
9582 $this->y=$this->tMargin;
9583}
9584
9585
9586
9587function _setAutoHeaderHeight(&$det, &$htmlh) {
9588 if ($this->setAutoTopMargin=='pad') {
9589 if ($htmlh['h']) { $h = $htmlh['h']; }
9590 else if ($det) { $h = $this->_getHFHeight($det,'H'); }
9591 else { $h = 0; }
9592 $this->tMargin = $this->margin_header + $h + $this->orig_tMargin;
9593 }
9594 else if ($this->setAutoTopMargin=='stretch') {
9595 if ($htmlh['h']) { $h = $htmlh['h']; }
9596 else if ($det) { $h = $this->_getHFHeight($det,'H'); }
9597 else { $h = 0; }
9598 $this->tMargin = max($this->orig_tMargin, $this->margin_header + $h + $this->autoMarginPadding);
9599 }
9600}
9601
9602
9603function _setAutoFooterHeight(&$det, &$htmlf) {
9604 if ($this->setAutoBottomMargin=='pad') {
9605 if ($htmlf['h']) { $h = $htmlf['h']; }
9606 else if ($det) { $h = $this->_getHFHeight($det,'F'); }
9607 else { $h = 0; }
9608 $this->bMargin = $this->margin_footer + $h + $this->orig_bMargin;
9609 $this->PageBreakTrigger=$this->h-$this->bMargin ;
9610 }
9611 else if ($this->setAutoBottomMargin=='stretch') {
9612 if ($htmlf['h']) { $h = $htmlf['h']; }
9613 else if ($det) { $h = $this->_getHFHeight($det,'F'); }
9614 else { $h = 0; }
9615 $this->bMargin = max($this->orig_bMargin, $this->margin_footer + $h + $this->autoMarginPadding);
9616 $this->PageBreakTrigger=$this->h-$this->bMargin ;
9617 }
9618}
9619
9620function _getHFHeight(&$det,$end) {
9621 $h = 0;
9622 if(count($det)) {
9623 foreach(array('L','C','R') AS $pos) {
9624 if (isset($det[$pos]['content']) && $det[$pos]['content']) {
9625 if (isset($det[$pos]['font-size']) && $det[$pos]['font-size']) { $hfsz = $det[$pos]['font-size']; }
9626 else { $hfsz = $this->default_font_size; }
9627 $h = max($h,$hfsz/_MPDFK);
9628 }
9629 }
9630 if ($det['line'] && $end=='H') { $h += $h/_MPDFK*$this->header_line_spacing; }
9631 else if ($det['line'] && $end=='F') { $h += $h/_MPDFK*$this->footer_line_spacing; }
9632 }
9633 return $h;
9634}
9635
9636
9637function _endpage() {
9638/*-- CSS-IMAGE-FLOAT --*/
9639 $this->printfloatbuffer();
9640/*-- END CSS-IMAGE-FLOAT --*/
9641
9642 if($this->visibility!='visible')
9643 $this->SetVisibility('visible');
9644 $this->EndLayer(); // mPDF 5.6.01
9645 //End of page contents
9646 $this->state=1;
9647}
9648
9649function _newobj($obj_id=false,$onlynewobj=false) {
9650 if (!$obj_id) {
9651 $obj_id = ++$this->n;
9652 }
9653 //Begin a new object
9654 if (!$onlynewobj) {
9655 $this->offsets[$obj_id] = strlen($this->buffer);
9656 $this->_out($obj_id.' 0 obj');
9657 $this->_current_obj_id = $obj_id; // for later use with encryption
9658 }
9659}
9660
9661function _dounderline($x,$y,$txt) {
9662 // Now print line exactly where $y secifies - called from Text() and Cell() - adjust position there
9663 // WORD SPACING
9664 $w =($this->GetStringWidth($txt)*_MPDFK) + ($this->charspacing * mb_strlen( $txt, $this->mb_enc ))
9665 + ( $this->ws * mb_substr_count( $txt, ' ', $this->mb_enc ));
9666 //Draw a line
9667 return sprintf('%.3F %.3F m %.3F %.3F l S',$x*_MPDFK,($this->h-$y)*_MPDFK,($x*_MPDFK)+$w,($this->h-$y)*_MPDFK);
9668}
9669
9670
9671function _imageError($file, $firsttime, $msg) {
9672 // Save re-trying image URL's which have already failed
9673 $this->failedimages[$file] = true;
9674 if ($firsttime && ($this->showImageErrors || $this->debug)) {
9675 $this->Error("IMAGE Error (".$file."): ".$msg);
9676 }
9677 return false;
9678}
9679
9680
9681function _getImage(&$file, $firsttime=true, $allowvector=true, $orig_srcpath=false) {
9682 // firsttime i.e. whether to add to this->images - use false when calling iteratively
9683 // Image Data passed directly as var:varname
9684 if (preg_match('/var:\s*(.*)/',$file, $v)) {
9685 $data = $this->$v[1];
9686 $file = md5($data);
9687 }
9688 // mPDF 5.5.13
9689 if (preg_match('/data:image\/(gif|jpeg|png);base64,(.*)/',$file, $v)) {
9690 $type = $v[1];
9691 $data = base64_decode($v[2]);
9692 $file = md5($data);
9693 }
9694
9695 // mPDF 5.6.02
9696 if ($firsttime && $file && substr($file,0,5)!='data:') { $file = urlencode_part($file); }
9697 if ($firsttime && $orig_srcpath && substr($orig_srcpath,0,5)!='data:') { $orig_srcpath = urlencode_part($orig_srcpath); }
9698
9699 $ppUx = 0;
9700 if ($orig_srcpath && isset($this->images[$orig_srcpath])) { $file=$orig_srcpath; return $this->images[$orig_srcpath]; }
9701 if (isset($this->images[$file])) { return $this->images[$file]; }
9702 else if ($orig_srcpath && isset($this->formobjects[$orig_srcpath])) { $file=$orig_srcpath; return $this->formobjects[$file]; }
9703 else if (isset($this->formobjects[$file])) { return $this->formobjects[$file]; }
9704 // Save re-trying image URL's which have already failed
9705 else if ($firsttime && isset($this->failedimages[$file])) { return $this->_imageError($file, $firsttime, ''); }
9706 if (empty($data)) {
9707 $type = '';
9708 $data = '';
9709
9710 if ($orig_srcpath && $this->basepathIsLocal && $check = @fopen($orig_srcpath,"rb")) {
9711 fclose($check);
9712 $file=$orig_srcpath;
9713 $data = file_get_contents($file);
9714 $type = $this->_imageTypeFromString($data);
9715 }
9716 if (!$data && $check = @fopen($file,"rb")) {
9717 fclose($check);
9718 $data = file_get_contents($file);
9719 $type = $this->_imageTypeFromString($data);
9720 }
9721 if ((!$data || !$type) && !ini_get('allow_url_fopen') ) { // only worth trying if remote file and !ini_get('allow_url_fopen')
9722 $this->file_get_contents_by_socket($file, $data); // needs full url?? even on local (never needed for local)
9723 if ($data) { $type = $this->_imageTypeFromString($data); }
9724 }
9725 if ((!$data || !$type) && !ini_get('allow_url_fopen') && function_exists("curl_init")) {
9726 $this->file_get_contents_by_curl($file, $data); // needs full url?? even on local (never needed for local)
9727 if ($data) { $type = $this->_imageTypeFromString($data); }
9728 }
9729
9730 }
9731 if (!$data) { return $this->_imageError($file, $firsttime, 'Could not find image file'); }
9732 if (empty($type)) { $type = $this->_imageTypeFromString($data); }
9733 if (($type == 'wmf' || $type == 'svg') && !$allowvector) { return $this->_imageError($file, $firsttime, 'WMF or SVG image file not supported in this context'); }
9734
9735 // SVG
9736 if ($type == 'svg') {
9737 if (!class_exists('SVG', false)) { include(_MPDF_PATH .'classes/svg.php'); }
9738 $svg = new SVG($this);
9739 $family=$this->FontFamily;
9740 $style=$this->FontStyle;
9741 $size=$this->FontSizePt;
9742 $info = $svg->ImageSVG($data);
9743 //Restore font
9744 if($family) $this->SetFont($family,$style,$size,false);
9745 if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing SVG file'); }
9746 $info['type']='svg';
9747 $info['i']=count($this->formobjects)+1;
9748 $this->formobjects[$file]=$info;
9749 return $info;
9750 }
9751
9752 // JPEG
9753 if ($type == 'jpeg' || $type == 'jpg') {
9754 $hdr = $this->_jpgHeaderFromString($data);
9755 if (!$hdr) { return $this->_imageError($file, $firsttime, 'Error parsing JPG header'); }
9756 $a = $this->_jpgDataFromHeader($hdr);
9757 $j = strpos($data,'JFIF');
9758 if ($j) {
9759 //Read resolution
9760 $unitSp=ord(substr($data,($j+7),1));
9761 if ($unitSp > 0) {
9762 $ppUx=$this->_twobytes2int(substr($data,($j+8),2)); // horizontal pixels per meter, usually set to zero
9763 if ($unitSp == 2) { // = dots per cm (if == 1 set as dpi)
9764 $ppUx=round($ppUx/10 *25.4);
9765 }
9766 }
9767 }
9768 if ($a[2] == 'DeviceCMYK' && (($this->PDFA && $this->restrictColorSpace!=3) || $this->restrictColorSpace==2)) {
9769 // convert to RGB image
9770 if (!function_exists("gd_info")) { $this->Error("JPG image may not use CMYK color space (".$file.")."); }
9771 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.)"; }
9772 $im = @imagecreatefromstring($data);
9773 if ($im) {
9774 $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png';
9775 imageinterlace($im, false);
9776 $check = @imagepng($im, $tempfile);
9777 if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary file ('.$tempfile.') whilst using GD library to parse JPG(CMYK) image'); }
9778 $info = $this->_getImage($tempfile, false);
9779 if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse JPG(CMYK) image'); }
9780 imagedestroy($im);
9781 unlink($tempfile);
9782 $info['type']='jpg';
9783 if ($firsttime) {
9784 $info['i']=count($this->images)+1;
9785 $this->images[$file]=$info;
9786 }
9787 return $info;
9788 }
9789 else { return $this->_imageError($file, $firsttime, 'Error creating GD image file from JPG(CMYK) image'); }
9790 }
9791 else if ($a[2] == 'DeviceRGB' && ($this->PDFX || $this->restrictColorSpace==3)) {
9792 // Convert to CMYK image stream - nominally returned as type='png'
9793 $info = $this->_convImage($data, $a[2], 'DeviceCMYK', $a[0], $a[1], $ppUx, false);
9794 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.)"; }
9795 }
9796 else if (($a[2] == 'DeviceRGB' || $a[2] == 'DeviceCMYK') && $this->restrictColorSpace==1) {
9797 // Convert to Grayscale image stream - nominally returned as type='png'
9798 $info = $this->_convImage($data, $a[2], 'DeviceGray', $a[0], $a[1], $ppUx, false);
9799 }
9800 else {
9801 $info = array('w'=>$a[0],'h'=>$a[1],'cs'=>$a[2],'bpc'=>$a[3],'f'=>'DCTDecode','data'=>$data, 'type'=>'jpg');
9802 if ($ppUx) { $info['set-dpi'] = $ppUx; }
9803 }
9804 if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing or converting JPG image'); }
9805
9806 if ($firsttime) {
9807 $info['i']=count($this->images)+1;
9808 $this->images[$file]=$info;
9809 }
9810 return $info;
9811 }
9812
9813 // PNG
9814 else if ($type == 'png') {
9815 //Check signature
9816 if(substr($data,0,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) {
9817 return $this->_imageError($file, $firsttime, 'Error parsing PNG identifier');
9818 }
9819 //Read header chunk
9820 if(substr($data,12,4)!='IHDR') {
9821 return $this->_imageError($file, $firsttime, 'Incorrect PNG file (no IHDR block found)');
9822 }
9823
9824 $w=$this->_fourbytes2int(substr($data,16,4));
9825 $h=$this->_fourbytes2int(substr($data,20,4));
9826 $bpc=ord(substr($data,24,1));
9827 $errpng = false;
9828 $pngalpha = false;
9829 if($bpc>8) { $errpng = 'not 8-bit depth'; }
9830 $ct=ord(substr($data,25,1));
9831 if($ct==0) { $colspace='DeviceGray'; }
9832 elseif($ct==2) { $colspace='DeviceRGB'; }
9833 elseif($ct==3) { $colspace='Indexed'; }
9834 elseif($ct==4) { $colspace='DeviceGray'; $errpng = 'alpha channel'; $pngalpha = true; }
9835 else { $colspace='DeviceRGB'; $errpng = 'alpha channel'; $pngalpha = true; }
9836 if(ord(substr($data,26,1))!=0) { $errpng = 'compression method'; }
9837 if(ord(substr($data,27,1))!=0) { $errpng = 'filter method'; }
9838 if(ord(substr($data,28,1))!=0) { $errpng = 'interlaced file'; }
9839 $j = strpos($data,'pHYs');
9840 if ($j) {
9841 //Read resolution
9842 $unitSp=ord(substr($data,($j+12),1));
9843 if ($unitSp == 1) {
9844 $ppUx=$this->_fourbytes2int(substr($data,($j+4),4)); // horizontal pixels per meter, usually set to zero
9845 $ppUx=round($ppUx/1000 *25.4);
9846 }
9847 }
9848 if (($colspace == 'DeviceRGB' || $colspace == 'Indexed') && ($this->PDFX || $this->restrictColorSpace==3)) {
9849 // Convert to CMYK image stream - nominally returned as type='png'
9850 $info = $this->_convImage($data, $colspace, 'DeviceCMYK', $w, $h, $ppUx, $pngalpha);
9851 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.)"; }
9852 }
9853 else if (($colspace == 'DeviceRGB' || $colspace == 'Indexed') && $this->restrictColorSpace==1) {
9854 // Convert to Grayscale image stream - nominally returned as type='png'
9855 $info = $this->_convImage($data, $colspace, 'DeviceGray', $w, $h, $ppUx, $pngalpha);
9856 }
9857 else if (($this->PDFA || $this->PDFX) && $pngalpha) {
9858 // Remove alpha channel
9859 if ($this->restrictColorSpace==1) { // Grayscale
9860 $info = $this->_convImage($data, $colspace, 'DeviceGray', $w, $h, $ppUx, $pngalpha);
9861 }
9862 else if ($this->restrictColorSpace==3) { // CMYK
9863 $info = $this->_convImage($data, $colspace, 'DeviceCMYK', $w, $h, $ppUx, $pngalpha);
9864 }
9865 else if ($this->PDFA ) { // RGB
9866 $info = $this->_convImage($data, $colspace, 'DeviceRGB', $w, $h, $ppUx, $pngalpha);
9867 }
9868 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.)"; }
9869 }
9870 else if ($errpng || $pngalpha) {
9871 if (function_exists('gd_info')) { $gd = gd_info(); }
9872 else {$gd = array(); }
9873 if (!isset($gd['PNG Support'])) { return $this->_imageError($file, $firsttime, 'GD library required for PNG image ('.$errpng.')'); }
9874 $im = imagecreatefromstring($data);
9875 if (!$im) { return $this->_imageError($file, $firsttime, 'Error creating GD image from PNG file ('.$errpng.')'); }
9876 $w = imagesx($im);
9877 $h = imagesy($im);
9878 if ($im) {
9879 $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png';
9880 // Alpha channel set
9881 if ($pngalpha) {
9882 if ($this->PDFA) { $this->Error("PDFA1-b does not permit images with alpha channel transparency (".$file.")."); }
9883 $imgalpha = imagecreate($w, $h);
9884 // generate gray scale pallete
9885 for ($c = 0; $c < 256; ++$c) { ImageColorAllocate($imgalpha, $c, $c, $c); }
9886 // extract alpha channel
9887 for ($xpx = 0; $xpx < $w; ++$xpx) {
9888 for ($ypx = 0; $ypx < $h; ++$ypx) {
9889 $alpha = (imagecolorat($im, $xpx, $ypx) & 0x7F000000) >> 24;
9890 // mPDF 5.7.2
9891 if ($alpha < 127) {
9892 imagesetpixel($imgalpha, $xpx, $ypx, (255-($alpha * 2)));
9893 }
9894 }
9895 }
9896 // create temp alpha file
9897 $tempfile_alpha = _MPDF_TEMP_PATH.'_tempMskPNG'.md5($file).RAND(1,10000).'.png';
9898 if (!is_writable(_MPDF_TEMP_PATH)) { // mPDF 5.7.2
9899 ob_start();
9900 $check = @imagepng($imgalpha);
9901 if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse PNG image'); }
9902 imagedestroy($imgalpha);
9903 $this->_tempimg = ob_get_contents();
9904 $this->_tempimglnk = 'var:_tempimg';
9905 ob_end_clean();
9906 // extract image without alpha channel
9907 $imgplain = imagecreatetruecolor($w, $h);
9908 imagealphablending( $imgplain, false ); // mPDF 5.7.2
9909 imagecopy($imgplain, $im, 0, 0, 0, 0, $w, $h);
9910 // create temp image file
9911 $minfo = $this->_getImage($this->_tempimglnk, false);
9912 if (!$minfo) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse PNG image'); }
9913 ob_start();
9914 $check = @imagepng($imgplain);
9915 if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse PNG image'); }
9916 $this->_tempimg = ob_get_contents();
9917 $this->_tempimglnk = 'var:_tempimg';
9918 ob_end_clean();
9919 $info = $this->_getImage($this->_tempimglnk, false);
9920 if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse PNG image'); }
9921 imagedestroy($imgplain);
9922 $imgmask = count($this->images)+1;
9923 $minfo['cs'] = 'DeviceGray';
9924 $minfo['i']=$imgmask ;
9925 $this->images[$tempfile_alpha] = $minfo;
9926
9927 }
9928 else {
9929 $check = @imagepng($imgalpha, $tempfile_alpha);
9930 if (!$check) { return $this->_imageError($file, $firsttime, 'Failed to create temporary image file ('.$tempfile_alpha.') parsing PNG image with alpha channel ('.$errpng.')'); }
9931 imagedestroy($imgalpha);
9932
9933 // extract image without alpha channel
9934 $imgplain = imagecreatetruecolor($w, $h);
9935 imagealphablending( $imgplain, false ); // mPDF 5.7.2
9936 imagecopy($imgplain, $im, 0, 0, 0, 0, $w, $h);
9937
9938 // create temp image file
9939 $check = @imagepng($imgplain, $tempfile);
9940 if (!$check) { return $this->_imageError($file, $firsttime, 'Failed to create temporary image file ('.$tempfile.') parsing PNG image with alpha channel ('.$errpng.')'); }
9941 imagedestroy($imgplain);
9942 // embed mask image
9943 $minfo = $this->_getImage($tempfile_alpha, false);
9944 unlink($tempfile_alpha);
9945 if (!$minfo) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile_alpha.') created with GD library to parse PNG image'); }
9946 $imgmask = count($this->images)+1;
9947 $minfo['cs'] = 'DeviceGray';
9948 $minfo['i']=$imgmask ;
9949 $this->images[$tempfile_alpha] = $minfo;
9950 // embed image, masked with previously embedded mask
9951 $info = $this->_getImage($tempfile, false);
9952 unlink($tempfile);
9953 if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse PNG image'); }
9954
9955 }
9956 $info['masked'] = $imgmask;
9957 if ($ppUx) { $info['set-dpi'] = $ppUx; }
9958 $info['type']='png';
9959 if ($firsttime) {
9960 $info['i']=count($this->images)+1;
9961 $this->images[$file]=$info;
9962 }
9963 return $info;
9964 }
9965 else { // No alpha/transparency set
9966 imagealphablending($im, false);
9967 imagesavealpha($im, false);
9968 imageinterlace($im, false);
9969 if (!is_writable($tempfile)) {
9970 ob_start();
9971 $check = @imagepng($im);
9972 if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse PNG image'); }
9973 $this->_tempimg = ob_get_contents();
9974 $this->_tempimglnk = 'var:_tempimg';
9975 ob_end_clean();
9976 $info = $this->_getImage($this->_tempimglnk, false);
9977 if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse PNG image'); }
9978 imagedestroy($im);
9979 }
9980 else {
9981 $check = @imagepng($im, $tempfile );
9982 if (!$check) { return $this->_imageError($file, $firsttime, 'Failed to create temporary image file ('.$tempfile.') parsing PNG image ('.$errpng.')'); }
9983 imagedestroy($im);
9984 $info = $this->_getImage($tempfile, false) ;
9985 unlink($tempfile );
9986 if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse PNG image'); }
9987 }
9988 if ($ppUx) { $info['set-dpi'] = $ppUx; }
9989 $info['type']='png';
9990 if ($firsttime) {
9991 $info['i']=count($this->images)+1;
9992 $this->images[$file]=$info;
9993 }
9994 return $info;
9995 }
9996 }
9997 }
9998
9999 else {
10000 $parms='/DecodeParms <</Predictor 15 /Colors '.($ct==2 ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w.'>>';
10001 //Scan chunks looking for palette, transparency and image data
10002 $pal='';
10003 $trns='';
10004 $pngdata='';
10005 $p = 33;
10006 do {
10007 $n=$this->_fourbytes2int(substr($data,$p,4)); $p += 4;
10008 $type=substr($data,$p,4); $p += 4;
10009 if($type=='PLTE') {
10010 //Read palette
10011 $pal=substr($data,$p,$n); $p += $n;
10012 $p += 4;
10013 }
10014 elseif($type=='tRNS') {
10015 //Read transparency info
10016 $t=substr($data,$p,$n); $p += $n;
10017 if($ct==0) $trns=array(ord(substr($t,1,1)));
10018 elseif($ct==2) $trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1)));
10019 else
10020 {
10021 $pos=strpos($t,chr(0));
10022 if(is_int($pos)) $trns=array($pos);
10023 }
10024 $p += 4;
10025 }
10026 elseif($type=='IDAT') {
10027 $pngdata.=substr($data,$p,$n); $p += $n;
10028 $p += 4;
10029 }
10030 elseif($type=='IEND') { break; }
10031 else if (preg_match('/[a-zA-Z]{4}/',$type)) { $p += $n+4; }
10032 else { return $this->_imageError($file, $firsttime, 'Error parsing PNG image data'); }
10033 }
10034 while($n);
10035 if (!$pngdata) { return $this->_imageError($file, $firsttime, 'Error parsing PNG image data - no IDAT data found'); }
10036 if($colspace=='Indexed' and empty($pal)) { return $this->_imageError($file, $firsttime, 'Error parsing PNG image data - missing colour palette'); }
10037 $info = array('w'=>$w,'h'=>$h,'cs'=>$colspace,'bpc'=>$bpc,'f'=>'FlateDecode','parms'=>$parms,'pal'=>$pal,'trns'=>$trns,'data'=>$pngdata);
10038 $info['type']='png';
10039 if ($ppUx) { $info['set-dpi'] = $ppUx; }
10040 }
10041
10042 if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing or converting PNG image'); }
10043
10044 if ($firsttime) {
10045 $info['i']=count($this->images)+1;
10046 $this->images[$file]=$info;
10047 }
10048 return $info;
10049 }
10050
10051 // GIF
10052 else if ($type == 'gif') {
10053 if (function_exists('gd_info')) { $gd = gd_info(); }
10054 else {$gd = array(); }
10055 if (isset($gd['GIF Read Support']) && $gd['GIF Read Support']) {
10056 $im = @imagecreatefromstring($data);
10057 if ($im) {
10058 $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png';
10059 imagealphablending($im, false);
10060 imagesavealpha($im, false);
10061 imageinterlace($im, false);
10062 if (!is_writable($tempfile)) {
10063 ob_start();
10064 $check = @imagepng($im);
10065 if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse GIF image'); }
10066 $this->_tempimg = ob_get_contents();
10067 $this->_tempimglnk = 'var:_tempimg';
10068 ob_end_clean();
10069 $info = $this->_getImage($this->_tempimglnk, false);
10070 if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse GIF image'); }
10071 imagedestroy($im);
10072 }
10073 else {
10074 $check = @imagepng($im, $tempfile);
10075 if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary file ('.$tempfile.') whilst using GD library to parse GIF image'); }
10076 $info = $this->_getImage($tempfile, false);
10077 if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse GIF image'); }
10078 imagedestroy($im);
10079 unlink($tempfile);
10080 }
10081 $info['type']='gif';
10082 if ($firsttime) {
10083 $info['i']=count($this->images)+1;
10084 $this->images[$file]=$info;
10085 }
10086 return $info;
10087 }
10088 else { return $this->_imageError($file, $firsttime, 'Error creating GD image file from GIF image'); }
10089 }
10090
10091 if (!class_exists('gif', false)) {
10092 include_once(_MPDF_PATH.'classes/gif.php');
10093 }
10094 $gif=new CGIF();
10095
10096 $h=0;
10097 $w=0;
10098 $gif->loadFile($data, 0);
10099
10100 if(isset($gif->m_img->m_gih->m_bLocalClr) && $gif->m_img->m_gih->m_bLocalClr) {
10101 $nColors = $gif->m_img->m_gih->m_nTableSize;
10102 $pal = $gif->m_img->m_gih->m_colorTable->toString();
10103 if($bgColor != -1) {
10104 $bgColor = $gif->m_img->m_gih->m_colorTable->colorIndex($bgColor);
10105 }
10106 $colspace='Indexed';
10107 } elseif(isset($gif->m_gfh->m_bGlobalClr) && $gif->m_gfh->m_bGlobalClr) {
10108 $nColors = $gif->m_gfh->m_nTableSize;
10109 $pal = $gif->m_gfh->m_colorTable->toString();
10110 if((isset($bgColor)) and $bgColor != -1) {
10111 $bgColor = $gif->m_gfh->m_colorTable->colorIndex($bgColor);
10112 }
10113 $colspace='Indexed';
10114 } else {
10115 $nColors = 0;
10116 $bgColor = -1;
10117 $colspace='DeviceGray';
10118 $pal='';
10119 }
10120
10121 $trns='';
10122 if(isset($gif->m_img->m_bTrans) && $gif->m_img->m_bTrans && ($nColors > 0)) {
10123 $trns=array($gif->m_img->m_nTrans);
10124 }
10125 $gifdata=$gif->m_img->m_data;
10126 $w=$gif->m_gfh->m_nWidth;
10127 $h=$gif->m_gfh->m_nHeight;
10128 $gif->ClearData();
10129
10130 if($colspace=='Indexed' and empty($pal)) {
10131 return $this->_imageError($file, $firsttime, 'Error parsing GIF image - missing colour palette');
10132 }
10133 if ($this->compress) {
10134 $gifdata=gzcompress($gifdata);
10135 $info = array( 'w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>8, 'f'=>'FlateDecode', 'pal'=>$pal, 'trns'=>$trns, 'data'=>$gifdata);
10136 }
10137 else {
10138 $info = array( 'w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>8, 'pal'=>$pal, 'trns'=>$trns, 'data'=>$gifdata);
10139 }
10140 $info['type']='gif';
10141 if ($firsttime) {
10142 $info['i']=count($this->images)+1;
10143 $this->images[$file]=$info;
10144 }
10145 return $info;
10146 }
10147
10148/*-- IMAGES-BMP --*/
10149 // BMP (Windows Bitmap)
10150 else if ($type == 'bmp') {
10151 if (!class_exists('bmp', false)) { include(_MPDF_PATH.'classes/bmp.php'); }
10152 if (empty($this->bmp)) { $this->bmp = new bmp($this); }
10153 $info = $this->bmp->_getBMPimage($data, $file);
10154 if (isset($info['error'])) {
10155 return $this->_imageError($file, $firsttime, $info['error']);
10156 }
10157 if ($firsttime) {
10158 $info['i']=count($this->images)+1;
10159 $this->images[$file]=$info;
10160 }
10161 return $info;
10162 }
10163/*-- END IMAGES-BMP --*/
10164/*-- IMAGES-WMF --*/
10165 // WMF
10166 else if ($type == 'wmf') {
10167 if (!class_exists('wmf', false)) { include(_MPDF_PATH.'classes/wmf.php'); }
10168 if (empty($this->wmf)) { $this->wmf = new wmf($this); }
10169 $wmfres = $this->wmf->_getWMFimage($data);
10170 if ($wmfres[0]==0) {
10171 if ($wmfres[1]) { return $this->_imageError($file, $firsttime, $wmfres[1]); }
10172 return $this->_imageError($file, $firsttime, 'Error parsing WMF image');
10173 }
10174 $info = array('x'=>$wmfres[2][0],'y'=>$wmfres[2][1],'w'=>$wmfres[3][0],'h'=>$wmfres[3][1],'data'=>$wmfres[1]);
10175 $info['i']=count($this->formobjects)+1;
10176 $info['type']='wmf';
10177 $this->formobjects[$file]=$info;
10178 return $info;
10179 }
10180/*-- END IMAGES-WMF --*/
10181
10182 // UNKNOWN TYPE - try GD imagecreatefromstring
10183 else {
10184 if (function_exists('gd_info')) { $gd = gd_info(); }
10185 else {$gd = array(); }
10186 if (isset($gd['PNG Support']) && $gd['PNG Support']) {
10187 $im = @imagecreatefromstring($data);
10188 if (!$im) { return $this->_imageError($file, $firsttime, 'Error parsing image file - image type not recognised, and not supported by GD imagecreate'); }
10189 $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png';
10190 imagealphablending($im, false);
10191 imagesavealpha($im, false);
10192 imageinterlace($im, false);
10193 $check = @imagepng($im, $tempfile);
10194 if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary file ('.$tempfile.') whilst using GD library to parse unknown image type'); }
10195 $info = $this->_getImage($tempfile, false);
10196 imagedestroy($im);
10197 unlink($tempfile);
10198 if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse unknown image type'); }
10199 $info['type']='png';
10200 if ($firsttime) {
10201 $info['i']=count($this->images)+1;
10202 $this->images[$file]=$info;
10203 }
10204 return $info;
10205 }
10206 }
10207
10208 return $this->_imageError($file, $firsttime, 'Error parsing image file - image type not recognised');
10209}
10210//==============================================================
10211function _convImage(&$data, $colspace, $targetcs, $w, $h, $dpi, $mask) {
10212 if ($this->PDFA || $this->PDFX) { $mask=false; }
10213 $im = @imagecreatefromstring($data);
10214 $info = array();
10215 if ($im) {
10216 $imgdata = '';
10217 $mimgdata = '';
10218 $minfo = array();
10219 //Read transparency info
10220 $trns=array();
10221 $trnsrgb = false;
10222 if (!$this->PDFA && !$this->PDFX) {
10223 $p = strpos($data,'tRNS');
10224 if ($p) {
10225 $n=$this->_fourbytes2int(substr($data,($p-4),4));
10226 $t = substr($data,($p+4),$n);
10227 if ($colspace=='DeviceGray') {
10228 $trns=array(ord(substr($t,1,1)));
10229 $trnsrgb = array($trns[0],$trns[0],$trns[0]);
10230 }
10231 else if ($colspace=='DeviceRGB') {
10232 $trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1)));
10233 $trnsrgb = $trns;
10234 if ($targetcs=='DeviceCMYK') {
10235 $col = $this->rgb2cmyk(array(3,$trns[0],$trns[1],$trns[2]));
10236 $c1 = intval($col[1]*2.55);
10237 $c2 = intval($col[2]*2.55);
10238 $c3 = intval($col[3]*2.55);
10239 $c4 = intval($col[4]*2.55);
10240 $trns = array($c1,$c2,$c3,$c4);
10241 }
10242 else if ($targetcs=='DeviceGray') {
10243 $c = intval(($trns[0] * .21) + ($trns[1] * .71) + ($trns[2] * .07));
10244 $trns = array($c);
10245 }
10246 }
10247 else { // Indexed
10248 $pos = strpos($t,chr(0));
10249 if (is_int($pos)) {
10250 $pal = imagecolorsforindex($im, $pos);
10251 $r = $pal['red'];
10252 $g = $pal['green'];
10253 $b = $pal['blue'];
10254 $trns=array($r,$g,$b); // ****
10255 $trnsrgb = $trns;
10256 if ($targetcs=='DeviceCMYK') {
10257 $col = $this->rgb2cmyk(array(3,$r,$g,$b));
10258 $c1 = intval($col[1]*2.55);
10259 $c2 = intval($col[2]*2.55);
10260 $c3 = intval($col[3]*2.55);
10261 $c4 = intval($col[4]*2.55);
10262 $trns = array($c1,$c2,$c3,$c4);
10263 }
10264 else if ($targetcs=='DeviceGray') {
10265 $c = intval(($r * .21) + ($g * .71) + ($b * .07));
10266 $trns = array($c);
10267 }
10268 }
10269 }
10270 }
10271 }
10272 for ($i = 0; $i < $h; $i++) {
10273 for ($j = 0; $j < $w; $j++) {
10274 $rgb = imagecolorat($im, $j, $i);
10275 $r = ($rgb >> 16) & 0xFF;
10276 $g = ($rgb >> 8) & 0xFF;
10277 $b = $rgb & 0xFF;
10278 if ($colspace=='Indexed') {
10279 $pal = imagecolorsforindex($im, $rgb);
10280 $r = $pal['red'];
10281 $g = $pal['green'];
10282 $b = $pal['blue'];
10283 }
10284
10285 if ($targetcs=='DeviceCMYK') {
10286 $col = $this->rgb2cmyk(array(3,$r,$g,$b));
10287 $c1 = intval($col[1]*2.55);
10288 $c2 = intval($col[2]*2.55);
10289 $c3 = intval($col[3]*2.55);
10290 $c4 = intval($col[4]*2.55);
10291 if ($trnsrgb) {
10292 // original pixel was not set as transparent but processed color does match
10293 if ($trnsrgb!=array($r,$g,$b) && $trns==array($c1,$c2,$c3,$c4)) {
10294 if ($c4==0) { $c4=1; } else { $c4--; }
10295 }
10296 }
10297 $imgdata .= chr($c1).chr($c2).chr($c3).chr($c4);
10298 }
10299 else if ($targetcs=='DeviceGray') {
10300 $c = intval(($r * .21) + ($g * .71) + ($b * .07));
10301 if ($trnsrgb) {
10302 // original pixel was not set as transparent but processed color does match
10303 if ($trnsrgb!=array($r,$g,$b) && $trns==array($c)) {
10304 if ($c==0) { $c=1; } else { $c--; }
10305 }
10306 }
10307 $imgdata .= chr($c);
10308 }
10309 else if ($targetcs=='DeviceRGB') {
10310 $imgdata .= chr($r).chr($g).chr($b);
10311 }
10312 if ($mask) {
10313 // mPDF 5.7.2 Gamma correction
10314 $alpha = ($rgb & 0x7F000000) >> 24;
10315 if ($alpha < 127) { $mimgdata .= chr(255-($alpha * 2)); }
10316 else { $mimgdata .= chr(0); }
10317 }
10318 }
10319 }
10320
10321 if ($targetcs=='DeviceGray') { $ncols = 1; }
10322 else if ($targetcs=='DeviceRGB') { $ncols = 3; }
10323 else if ($targetcs=='DeviceCMYK') { $ncols = 4; }
10324
10325 $imgdata = gzcompress($imgdata);
10326 $info = array('w'=>$w,'h'=>$h,'cs'=>$targetcs,'bpc'=>8,'f'=>'FlateDecode','data'=>$imgdata, 'type'=>'png',
10327 'parms'=>'/DecodeParms <</Colors '.$ncols.' /BitsPerComponent 8 /Columns '.$w.'>>');
10328 if ($dpi) { $info['set-dpi'] = $dpi; }
10329 if ($mask) {
10330 $mimgdata = gzcompress($mimgdata);
10331 $minfo = array('w'=>$w,'h'=>$h,'cs'=>'DeviceGray','bpc'=>8,'f'=>'FlateDecode','data'=>$mimgdata, 'type'=>'png',
10332 'parms'=>'/DecodeParms <</Colors '.$ncols.' /BitsPerComponent 8 /Columns '.$w.'>>');
10333 if ($dpi) { $minfo['set-dpi'] = $dpi; }
10334 $tempfile = '_tempImgPNG'.md5($file).RAND(1,10000).'.png';
10335 $imgmask = count($this->images)+1;
10336 $minfo['i']=$imgmask ;
10337 $this->images[$tempfile] = $minfo;
10338 $info['masked'] = $imgmask;
10339 }
10340 else if ($trns) { $info['trns'] = $trns; }
10341 imagedestroy($im);
10342 }
10343 return $info;
10344}
10345
10346
10347
10348
10349function _fourbytes2int($s) {
10350 //Read a 4-byte integer from string
10351 return (ord($s[0])<<24) + (ord($s[1])<<16) + (ord($s[2])<<8) + ord($s[3]);
10352}
10353
10354function _twobytes2int($s) {
10355 //Read a 2-byte integer from string
10356 return (ord(substr($s, 0, 1))<<8) + ord(substr($s, 1, 1));
10357}
10358
10359function _jpgHeaderFromString(&$data) {
10360 $p = 4;
10361 $p += $this->_twobytes2int(substr($data, $p, 2)); // Length of initial marker block
10362 $marker = substr($data, $p, 2);
10363 while($marker != chr(255).chr(192) && $marker != chr(255).chr(194) && $p<strlen($data)) {
10364 // Start of frame marker (FFC0) or (FFC2) mPDF 4.4.004
10365 $p += ($this->_twobytes2int(substr($data, $p+2, 2))) + 2; // Length of marker block
10366 $marker = substr($data, $p, 2);
10367 }
10368 if ($marker != chr(255).chr(192) && $marker != chr(255).chr(194)) { return false; }
10369 return substr($data, $p+2, 10);
10370}
10371
10372function _jpgDataFromHeader($hdr) {
10373 $bpc = ord(substr($hdr, 2, 1));
10374 if (!$bpc) { $bpc = 8; }
10375 $h = $this->_twobytes2int(substr($hdr, 3, 2));
10376 $w = $this->_twobytes2int(substr($hdr, 5, 2));
10377 $channels = ord(substr($hdr, 7, 1));
10378 if ($channels==3) { $colspace='DeviceRGB'; }
10379 elseif($channels==4) { $colspace='DeviceCMYK'; }
10380 else { $colspace='DeviceGray'; }
10381 return array($w, $h, $colspace, $bpc);
10382}
10383
10384function file_get_contents_by_curl($url, &$data) {
10385 $timeout = 5;
10386 $ch = curl_init($url);
10387 curl_setopt($ch, CURLOPT_HEADER, 0);
10388 curl_setopt($ch, CURLOPT_NOBODY, 0);
10389 curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 );
10390 curl_setopt ( $ch , CURLOPT_CONNECTTIMEOUT , $timeout );
10391 $data = curl_exec($ch);
10392 curl_close($ch);
10393}
10394
10395
10396function file_get_contents_by_socket($url, &$data) {
10397 $timeout = 1;
10398 $p = parse_url($url);
10399 $file = $p['path'];
10400 if ($p['query']) { $file .= '?'.$p['query']; }
10401 if(!($fh = @fsockopen($p['host'], 80, $errno, $errstr, $timeout))) { return false; }
10402 $getstring =
10403 "GET ".$file." HTTP/1.0 \r\n" .
10404 "Host: ".$p['host']." \r\n" .
10405 "Connection: close\r\n\r\n";
10406 fwrite($fh, $getstring);
10407 // Get rid of HTTP header
10408 $s = fgets($fh, 1024);
10409 if (!$s) { return false; }
10410 $httpheader .= $s;
10411 while (!feof($fh)) {
10412 $s = fgets($fh, 1024);
10413 if ( $s == "\r\n" ) { break; }
10414 }
10415 $data = '';
10416 while (!feof($fh)) {
10417 $data .= fgets($fh, 1024);
10418 }
10419 fclose($fh);
10420}
10421
10422//==============================================================
10423
10424function _imageTypeFromString(&$data) {
10425 $type = '';
10426 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
10427 $type = 'jpeg';
10428 }
10429 else if (substr($data, 0, 6)== "GIF87a" || substr($data, 0, 6)== "GIF89a") {
10430 $type = 'gif';
10431 }
10432 else if (substr($data, 0, 8)== chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) {
10433 $type = 'png';
10434 }
10435/*-- IMAGES-WMF --*/
10436 else if (substr($data, 0, 4)== chr(215).chr(205).chr(198).chr(154)) {
10437 $type = 'wmf';
10438 }
10439/*-- END IMAGES-WMF --*/
10440 else if (preg_match('/<svg.*<\/svg>/is',$data)) {
10441 $type = 'svg';
10442 }
10443 // BMP images
10444 else if (substr($data, 0, 2)== "BM") {
10445 $type = 'bmp';
10446 }
10447 return $type;
10448}
10449//==============================================================
10450
10451// Moved outside WMF as also needed for SVG
10452function _putformobjects() {
10453 reset($this->formobjects);
10454 while(list($file,$info)=each($this->formobjects)) {
10455 $this->_newobj();
10456 $this->formobjects[$file]['n']=$this->n;
10457 $this->_out('<</Type /XObject');
10458 $this->_out('/Subtype /Form');
10459 $this->_out('/Group '.($this->n+1).' 0 R');
10460 $this->_out('/BBox ['.$info['x'].' '.$info['y'].' '.($info['w']+$info['x']).' '.($info['h']+$info['y']).']');
10461 if ($this->compress)
10462 $this->_out('/Filter /FlateDecode');
10463 $data=($this->compress) ? gzcompress($info['data']) : $info['data'];
10464 $this->_out('/Length '.strlen($data).'>>');
10465 $this->_putstream($data);
10466 unset($this->formobjects[$file]['data']);
10467 $this->_out('endobj');
10468 // Required for SVG transparency (opacity) to work
10469 $this->_newobj();
10470 $this->_out('<</Type /Group');
10471 $this->_out('/S /Transparency');
10472 $this->_out('>>');
10473 $this->_out('endobj');
10474 }
10475}
10476
10477function _freadint($f)
10478{
10479 //Read a 4-byte integer from file
10480 $i=ord(fread($f,1))<<24;
10481 $i+=ord(fread($f,1))<<16;
10482 $i+=ord(fread($f,1))<<8;
10483 $i+=ord(fread($f,1));
10484 return $i;
10485}
10486
10487function _UTF16BEtextstring($s) {
10488 $s = $this->UTF8ToUTF16BE($s, true);
10489/*-- ENCRYPTION --*/
10490 if ($this->encrypted) {
10491 $s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
10492 }
10493/*-- END ENCRYPTION --*/
10494 return '('. $this->_escape($s).')';
10495}
10496
10497function _textstring($s) {
10498/*-- ENCRYPTION --*/
10499 if ($this->encrypted) {
10500 $s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
10501 }
10502/*-- END ENCRYPTION --*/
10503 return '('. $this->_escape($s).')';
10504}
10505
10506
10507function _escape($s)
10508{
10509 // the chr(13) substitution fixes the Bugs item #1421290.
10510 return strtr($s, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r'));
10511}
10512
10513function _putstream($s) {
10514/*-- ENCRYPTION --*/
10515 if ($this->encrypted) {
10516 $s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
10517 }
10518/*-- END ENCRYPTION --*/
10519 $this->_out('stream');
10520 $this->_out($s);
10521 $this->_out('endstream');
10522}
10523
10524
10525function _out($s,$ln=true) {
10526 if($this->state==2) {
10527 if ($this->bufferoutput) {
10528 $this->headerbuffer.= $s."\n";
10529 }
10530/*-- COLUMNS --*/
10531 else if (($this->ColActive) && !$this->processingHeader && !$this->processingFooter) {
10532 // Captures everything in buffer for columns; Almost everything is sent from fn. Cell() except:
10533 // Images sent from Image() or
10534 // later sent as _out($textto) in printbuffer
10535 // Line()
10536 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
10537 $h = ($m[1]/_MPDFK);
10538 // Update/overwrite the lowest bottom of printing y value for a column
10539 $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y+$h;
10540 }
10541/*-- TABLES --*/
10542 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
10543 $h = ($m[1]/_MPDFK);
10544 // Update/overwrite the lowest bottom of printing y value for a column
10545 $this->ColDetails[$this->CurrCol]['bottom_margin'] = max($this->ColDetails[$this->CurrCol]['bottom_margin'],($this->y+$h));
10546 }
10547/*-- END TABLES --*/
10548 else { // Td Text Set in Cell()
10549 if (isset($this->ColDetails[$this->CurrCol]['bottom_margin'])) { $h = $this->ColDetails[$this->CurrCol]['bottom_margin'] - $this->y; }
10550 else { $h = 0; }
10551 }
10552 if ($h < 0) { $h = -$h; }
10553 $this->columnbuffer[] = array(
10554 's' => $s, // Text string to output
10555 'col' => $this->CurrCol, // Column when printed
10556 'x' => $this->x, // x when printed
10557 'y' => $this->y, // this->y when printed (after column break)
10558 'h' => $h // actual y at bottom when printed = y+h
10559 );
10560 }
10561/*-- END COLUMNS --*/
10562/*-- TABLES --*/
10563 else if ($this->table_rotate && !$this->processingHeader && !$this->processingFooter) {
10564 // Captures eveything in buffer for rotated tables;
10565 $this->tablebuffer .= $s . "\n";
10566 }
10567/*-- END TABLES --*/
10568 else if ($this->kwt && !$this->processingHeader && !$this->processingFooter) {
10569 // Captures eveything in buffer for keep-with-table (h1-6);
10570 $this->kwt_buffer[] = array(
10571 's' => $s, // Text string to output
10572 'x' => $this->x, // x when printed
10573 'y' => $this->y, // y when printed
10574 );
10575 }
10576 else if (($this->keep_block_together) && !$this->processingHeader && !$this->processingFooter) {
10577 if (!isset($this->ktBlock[$this->page]['bottom_margin'])) {
10578 $this->ktBlock[$this->page]['bottom_margin'] = $this->y;
10579 }
10580
10581 // Captures eveything in buffer;
10582 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
10583 $h = ($m[1]/_MPDFK);
10584 // Update/overwrite the lowest bottom of printing y value for Keep together block
10585 $this->ktBlock[$this->page]['bottom_margin'] = $this->y+$h;
10586 }
10587 else { // Td Text Set in Cell()
10588 if (isset($this->ktBlock[$this->page]['bottom_margin'])) { $h = $this->ktBlock[$this->page]['bottom_margin'] - $this->y; }
10589 else { $h = 0; }
10590 }
10591 if ($h < 0) { $h = -$h; }
10592 $this->divbuffer[] = array(
10593 'page' => $this->page,
10594 's' => $s, // Text string to output
10595 'x' => $this->x, // x when printed
10596 'y' => $this->y, // y when printed (after column break)
10597 'h' => $h // actual y at bottom when printed = y+h
10598 );
10599 }
10600 else {
10601 $this->pages[$this->page] .= $s.($ln == true ? "\n" : '');
10602 }
10603
10604 }
10605 else {
10606 $this->buffer .= $s.($ln == true ? "\n" : '');
10607 }
10608}
10609
10610/*-- WATERMARK --*/
10611// add a watermark
10612function watermark( $texte, $angle=45, $fontsize=96, $alpha=0.2 ) {
10613 if ($this->PDFA || $this->PDFX) { $this->Error('PDFA and PDFX do not permit transparency, so mPDF does not allow Watermarks!'); }
10614 if (!$this->watermark_font) { $this->watermark_font = $this->default_font; }
10615 $this->SetFont( $this->watermark_font, "B", $fontsize, false ); // Don't output
10616 $texte= $this->purify_utf8_text($texte);
10617 if ($this->text_input_as_HTML) {
10618 $texte= $this->all_entities_to_utf8($texte);
10619 }
10620 if ($this->usingCoreFont) { $texte = mb_convert_encoding($texte,$this->mb_enc,'UTF-8'); }
10621 // DIRECTIONALITY
10622 $this->magic_reverse_dir($texte, true, $this->directionality); // *RTL*
10623 // Font-specific ligature substitution for Indic fonts
10624 if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($texte); // *INDIC*
10625
10626 $this->SetAlpha($alpha);
10627
10628 $this->SetTColor($this->ConvertColor(0));
10629 $szfont = $fontsize;
10630 $loop = 0;
10631 $maxlen = (min($this->w,$this->h) ); // sets max length of text as 7/8 width/height of page
10632 while ( $loop == 0 )
10633 {
10634 $this->SetFont( $this->watermark_font, "B", $szfont, false ); // Don't output
10635 $offset = ((sin(deg2rad($angle))) * ($szfont/_MPDFK));
10636
10637 $strlen = $this->GetStringWidth($texte);
10638 if ( $strlen > $maxlen - $offset )
10639 $szfont --;
10640 else
10641 $loop ++;
10642 }
10643
10644 $this->SetFont( $this->watermark_font, "B", $szfont-0.1, true, true); // Output The -0.1 is because SetFont above is not written to PDF
10645 // Repeating it will not output anything as mPDF thinks it is set
10646 $adj = ((cos(deg2rad($angle))) * ($strlen/2));
10647 $opp = ((sin(deg2rad($angle))) * ($strlen/2));
10648 $wx = ($this->w/2) - $adj + $offset/3;
10649 $wy = ($this->h/2) + $opp;
10650 $this->Rotate($angle,$wx,$wy);
10651 $this->Text($wx,$wy,$texte);
10652 $this->Rotate(0);
10653 $this->SetTColor($this->ConvertColor(0));
10654
10655 $this->SetAlpha(1);
10656
10657}
10658
10659function watermarkImg( $src, $alpha=0.2 ) {
10660 if ($this->PDFA || $this->PDFX) { $this->Error('PDFA and PDFX do not permit transparency, so mPDF does not allow Watermarks!'); }
10661 if ($this->watermarkImgBehind) { $this->watermarkImgAlpha = $this->SetAlpha($alpha, 'Normal', true); }
10662 else { $this->SetAlpha($alpha, $this->watermarkImgAlphaBlend); }
10663 $this->Image($src,0,0,0,0,'','', true, true, true);
10664 if (!$this->watermarkImgBehind) { $this->SetAlpha(1); }
10665}
10666/*-- END WATERMARK --*/
10667
10668
10669function Rotate($angle,$x=-1,$y=-1)
10670{
10671 if($x==-1)
10672 $x=$this->x;
10673 if($y==-1)
10674 $y=$this->y;
10675 if($this->angle!=0)
10676 $this->_out('Q');
10677 $this->angle=$angle;
10678 if($angle!=0)
10679 {
10680 $angle*=M_PI/180;
10681 $c=cos($angle);
10682 $s=sin($angle);
10683 $cx=$x*_MPDFK;
10684 $cy=($this->h-$y)*_MPDFK;
10685 $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));
10686 }
10687}
10688
10689
10690
10691function CircularText($x, $y, $r, $text, $align='top', $fontfamily='', $fontsize=0, $fontstyle='', $kerning=120, $fontwidth=100, $divider) { // mPDF 5.5.23
10692 if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
10693 if (empty($this->directw)) { $this->directw = new directw($this); }
10694 $this->directw->CircularText($x, $y, $r, $text, $align, $fontfamily, $fontsize, $fontstyle, $kerning, $fontwidth, $divider); // mPDF 5.5.23
10695}
10696
10697
10698// From Invoice
10699function RoundedRect($x, $y, $w, $h, $r, $style = '')
10700{
10701 $hp = $this->h;
10702 if($style=='F')
10703 $op='f';
10704 elseif($style=='FD' or $style=='DF')
10705 $op='B';
10706 else
10707 $op='S';
10708 $MyArc = 4/3 * (sqrt(2) - 1);
10709 $this->_out(sprintf('%.3F %.3F m',($x+$r)*_MPDFK,($hp-$y)*_MPDFK ));
10710 $xc = $x+$w-$r ;
10711 $yc = $y+$r;
10712 $this->_out(sprintf('%.3F %.3F l', $xc*_MPDFK,($hp-$y)*_MPDFK ));
10713
10714 $this->_Arc($xc + $r*$MyArc, $yc - $r, $xc + $r, $yc - $r*$MyArc, $xc + $r, $yc);
10715 $xc = $x+$w-$r ;
10716 $yc = $y+$h-$r;
10717 $this->_out(sprintf('%.3F %.3F l',($x+$w)*_MPDFK,($hp-$yc)*_MPDFK));
10718 $this->_Arc($xc + $r, $yc + $r*$MyArc, $xc + $r*$MyArc, $yc + $r, $xc, $yc + $r);
10719 $xc = $x+$r ;
10720 $yc = $y+$h-$r;
10721 $this->_out(sprintf('%.3F %.3F l',$xc*_MPDFK,($hp-($y+$h))*_MPDFK));
10722 $this->_Arc($xc - $r*$MyArc, $yc + $r, $xc - $r, $yc + $r*$MyArc, $xc - $r, $yc);
10723 $xc = $x+$r ;
10724 $yc = $y+$r;
10725 $this->_out(sprintf('%.3F %.3F l',($x)*_MPDFK,($hp-$yc)*_MPDFK ));
10726 $this->_Arc($xc - $r, $yc - $r*$MyArc, $xc - $r*$MyArc, $yc - $r, $xc, $yc - $r);
10727 $this->_out($op);
10728}
10729
10730function _Arc($x1, $y1, $x2, $y2, $x3, $y3)
10731{
10732 $h = $this->h;
10733 $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $x1*_MPDFK, ($h-$y1)*_MPDFK,
10734 $x2*_MPDFK, ($h-$y2)*_MPDFK, $x3*_MPDFK, ($h-$y3)*_MPDFK));
10735}
10736
10737
10738
10739
10740//====================================================
10741
10742
10743
10744/*-- DIRECTW --*/
10745function Shaded_box( $text,$font='',$fontstyle='B',$szfont='',$width='70%',$style='DF',$radius=2.5,$fill='#FFFFFF',$color='#000000',$pad=2 ) {
10746 // F (shading - no line),S (line, no shading),DF (both)
10747 if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
10748 if (empty($this->directw)) { $this->directw = new directw($this); }
10749 $this->directw->Shaded_box( $text,$font,$fontstyle,$szfont,$width,$style,$radius,$fill,$color,$pad);
10750}
10751/*-- END DIRECTW --*/
10752
10753
10754function UTF8StringToArray($str, $addSubset=true) {
10755 $out = array();
10756 $len = strlen($str);
10757 for ($i = 0; $i < $len; $i++) {
10758 $uni = -1;
10759 $h = ord($str[$i]);
10760 if ( $h <= 0x7F )
10761 $uni = $h;
10762 elseif ( $h >= 0xC2 ) {
10763 if ( ($h <= 0xDF) && ($i < $len -1) )
10764 $uni = ($h & 0x1F) << 6 | (ord($str[++$i]) & 0x3F);
10765 elseif ( ($h <= 0xEF) && ($i < $len -2) )
10766 $uni = ($h & 0x0F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F);
10767 elseif ( ($h <= 0xF4) && ($i < $len -3) )
10768 $uni = ($h & 0x0F) << 18 | (ord($str[++$i]) & 0x3F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F);
10769 }
10770 if ($uni >= 0) {
10771 $out[] = $uni;
10772 if ($addSubset && isset($this->CurrentFont['subset'])) {
10773 $this->CurrentFont['subset'][$uni] = $uni;
10774 }
10775 }
10776 }
10777 return $out;
10778}
10779
10780
10781//Convert utf-8 string to <HHHHHH> for Font Subsets
10782function UTF8toSubset($str) {
10783 $ret = '<';
10784 $str = preg_replace('/'.preg_quote($this->aliasNbPg,'/').'/', chr(7), $str );
10785 $str = preg_replace('/'.preg_quote($this->aliasNbPgGp,'/').'/', chr(8), $str );
10786 $unicode = $this->UTF8StringToArray($str);
10787 $orig_fid = $this->CurrentFont['subsetfontids'][0];
10788 $last_fid = $this->CurrentFont['subsetfontids'][0];
10789 foreach($unicode as $c) {
10790 if ($c == 7 || $c == 8) {
10791 if ($orig_fid != $last_fid) {
10792 $ret .= '> Tj /F'.$orig_fid.' '.$this->FontSizePt.' Tf <';
10793 $last_fid = $orig_fid;
10794 }
10795 if ($c == 7) { $ret .= $this->aliasNbPgHex; }
10796 else { $ret .= $this->aliasNbPgGpHex; }
10797 continue;
10798 }
10799 for ($i=0; $i<99; $i++) {
10800 // return c as decimal char
10801 $init = array_search($c, $this->CurrentFont['subsets'][$i]);
10802 if ($init!==false) {
10803 if ($this->CurrentFont['subsetfontids'][$i] != $last_fid) {
10804 $ret .= '> Tj /F'.$this->CurrentFont['subsetfontids'][$i].' '.$this->FontSizePt.' Tf <';
10805 $last_fid = $this->CurrentFont['subsetfontids'][$i];
10806 }
10807 $ret .= sprintf("%02s", strtoupper(dechex($init)));
10808 break;
10809 }
10810 // TrueType embedded SUBSETS
10811 else if (count($this->CurrentFont['subsets'][$i]) < 255) {
10812 $n = count($this->CurrentFont['subsets'][$i]);
10813 $this->CurrentFont['subsets'][$i][$n] = $c;
10814 if ($this->CurrentFont['subsetfontids'][$i] != $last_fid) {
10815 $ret .= '> Tj /F'.$this->CurrentFont['subsetfontids'][$i].' '.$this->FontSizePt.' Tf <';
10816 $last_fid = $this->CurrentFont['subsetfontids'][$i];
10817 }
10818 $ret .= sprintf("%02s", strtoupper(dechex($n)));
10819 break;
10820 }
10821 else if (!isset($this->CurrentFont['subsets'][($i+1)])) {
10822 // TrueType embedded SUBSETS
10823 $this->CurrentFont['subsets'][($i+1)] = array(0=>0);
10824 $new_fid = count($this->fonts)+$this->extraFontSubsets+1;
10825 $this->CurrentFont['subsetfontids'][($i+1)] = $new_fid;
10826 $this->extraFontSubsets++;
10827 }
10828 }
10829 }
10830 $ret .= '>';
10831 if ($last_fid != $orig_fid) {
10832 $ret .= ' Tj /F'.$orig_fid.' '.$this->FontSizePt.' Tf <> ';
10833 }
10834 return $ret;
10835}
10836
10837
10838// Converts UTF-8 strings to UTF16-BE.
10839function UTF8ToUTF16BE($str, $setbom=true) {
10840 if ($this->checkSIP && preg_match("/([\x{20000}-\x{2FFFF}])/u", $str)) {
10841 if (!in_array($this->currentfontfamily, array('gb','big5','sjis','uhc','gbB','big5B','sjisB','uhcB','gbI','big5I','sjisI','uhcI',
10842 'gbBI','big5BI','sjisBI','uhcBI'))) {
10843 $str = preg_replace("/[\x{20000}-\x{2FFFF}]/u", chr(0), $str);
10844 }
10845 }
10846 if ($this->checkSMP && preg_match("/([\x{10000}-\x{1FFFF}])/u", $str )) {
10847 $str = preg_replace("/[\x{10000}-\x{1FFFF}]/u", chr(0), $str );
10848 }
10849 $outstr = ""; // string to be returned
10850 if ($setbom) {
10851 $outstr .= "\xFE\xFF"; // Byte Order Mark (BOM)
10852 }
10853 $outstr .= mb_convert_encoding($str, 'UTF-16BE', 'UTF-8');
10854 return $outstr;
10855}
10856
10857
10858
10859
10860
10861// ====================================================
10862// ====================================================
10863/*-- CJK-FONTS --*/
10864
10865// from class PDF_Chinese CJK EXTENSIONS
10866function AddCIDFont($family,$style,$name,&$cw,$CMap,$registry,$desc)
10867{
10868 $fontkey=strtolower($family).strtoupper($style);
10869 if(isset($this->fonts[$fontkey]))
10870 $this->Error("Font already added: $family $style");
10871 $i=count($this->fonts)+$this->extraFontSubsets+1;
10872 $name=str_replace(' ','',$name);
10873 if ($family == 'sjis') { $up = -120; } else { $up = -130; }
10874 // ? 'up' and 'ut' do not seem to be referenced anywhere
10875 $this->fonts[$fontkey]=array('i'=>$i,'type'=>'Type0','name'=>$name,'up'=>$up,'ut'=>40,'cw'=>$cw,'CMap'=>$CMap,'registry'=>$registry,'MissingWidth'=>1000,'desc'=>$desc);
10876}
10877
10878function AddCJKFont($family) {
10879
10880 if ($this->PDFA || $this->PDFX) {
10881 $this->Error("Adobe CJK fonts cannot be embedded in mPDF (required for PDFA1-b and PDFX/1-a).");
10882 }
10883 if ($family == 'big5') { $this->AddBig5Font(); }
10884 else if ($family == 'gb') { $this->AddGBFont(); }
10885 else if ($family == 'sjis') { $this->AddSJISFont(); }
10886 else if ($family == 'uhc') { $this->AddUHCFont(); }
10887}
10888
10889function AddBig5Font()
10890{
10891 //Add Big5 font with proportional Latin
10892 $family='big5';
10893 $name='MSungStd-Light-Acro';
10894 $cw=$this->Big5_widths;
10895 $CMap='UniCNS-UTF16-H';
10896 $registry=array('ordering'=>'CNS1','supplement'=>4);
10897 $desc = array(
10898 'Ascent' => 880,
10899 'Descent' => -120,
10900 'CapHeight' => 880,
10901 'Flags' => 6,
10902 'FontBBox' => '[-160 -249 1015 1071]',
10903 'ItalicAngle' => 0,
10904 'StemV' => 93,
10905 );
10906 $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
10907 $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
10908 $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
10909 $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
10910}
10911
10912
10913function AddGBFont()
10914{
10915 //Add GB font with proportional Latin
10916 $family='gb';
10917 $name='STSongStd-Light-Acro';
10918 $cw=$this->GB_widths;
10919 $CMap='UniGB-UTF16-H';
10920 $registry=array('ordering'=>'GB1','supplement'=>4);
10921 $desc = array(
10922 'Ascent' => 752,
10923 'Descent' => -271,
10924 'CapHeight' => 737,
10925 'Flags' => 6,
10926 'FontBBox' => '[-25 -254 1000 880]',
10927 'ItalicAngle' => 0,
10928 'StemV' => 58,
10929 'Style' => '<< /Panose <000000000400000000000000> >>',
10930 );
10931 $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
10932 $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
10933 $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
10934 $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
10935}
10936
10937
10938function AddSJISFont()
10939{
10940 //Add SJIS font with proportional Latin
10941 $family='sjis';
10942 $name='KozMinPro-Regular-Acro';
10943 $cw=$this->SJIS_widths;
10944 $CMap='UniJIS-UTF16-H';
10945 $registry=array('ordering'=>'Japan1','supplement'=>5);
10946 $desc = array(
10947 'Ascent' => 880,
10948 'Descent' => -120,
10949 'CapHeight' => 740,
10950 'Flags' => 6,
10951 'FontBBox' => '[-195 -272 1110 1075]',
10952 'ItalicAngle' => 0,
10953 'StemV' => 86,
10954 'XHeight' => 502,
10955 );
10956 $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
10957 $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
10958 $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
10959 $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
10960}
10961
10962function AddUHCFont()
10963{
10964 //Add UHC font with proportional Latin
10965 $family='uhc';
10966 $name='HYSMyeongJoStd-Medium-Acro';
10967 $cw=$this->UHC_widths;
10968 $CMap='UniKS-UTF16-H';
10969 $registry=array('ordering'=>'Korea1','supplement'=>2);
10970 $desc = array(
10971 'Ascent' => 880,
10972 'Descent' => -120,
10973 'CapHeight' => 720,
10974 'Flags' => 6,
10975 'FontBBox' => '[-28 -148 1001 880]',
10976 'ItalicAngle' => 0,
10977 'StemV' => 60,
10978 'Style' => '<< /Panose <000000000600000000000000> >>',
10979 );
10980 $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
10981 $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
10982 $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
10983 $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
10984}
10985
10986/*-- END CJK-FONTS --*/
10987
10988//////////////////////////////////////////////////////////////////////////////
10989//////////////////////////////////////////////////////////////////////////////
10990//////////////////////////////////////////////////////////////////////////////
10991//////////////////////////////////////////////////////////////////////////////
10992//////////////////////////////////////////////////////////////////////////////
10993//////////////////////////////////////////////////////////////////////////////
10994//////////////////////////////////////////////////////////////////////////////
10995function SetAutoFont($af = AUTOFONT_ALL) {
10996 if ($this->onlyCoreFonts) { return false; }
10997 if (!$af && $af !== 0) { $af = AUTOFONT_ALL; }
10998 $this->autoFontGroups = $af;
10999 if ($this->autoFontGroups ) {
11000 $this->useLang = true;
11001 }
11002}
11003
11004
11005function SetDefaultFont($font) {
11006 // Disallow embedded fonts to be used as defaults in PDFA
11007 if ($this->PDFA || $this->PDFX) {
11008 if (strtolower($font) == 'ctimes') { $font = 'serif'; }
11009 if (strtolower($font) == 'ccourier') { $font = 'monospace'; }
11010 if (strtolower($font) == 'chelvetica') { $font = 'sans-serif'; }
11011 }
11012 $font = $this->SetFont($font); // returns substituted font if necessary
11013 $this->default_font = $font;
11014 $this->original_default_font = $font;
11015 if (!$this->watermark_font ) { $this->watermark_font = $font; } // *WATERMARK*
11016 $this->defaultCSS['BODY']['FONT-FAMILY'] = $font;
11017 $this->cssmgr->CSS['BODY']['FONT-FAMILY'] = $font;
11018}
11019
11020function SetDefaultFontSize($fontsize) {
11021 $this->default_font_size = $fontsize;
11022 $this->original_default_font_size = $fontsize;
11023 $this->SetFontSize($fontsize);
11024 $this->defaultCSS['BODY']['FONT-SIZE'] = $fontsize . 'pt';
11025 $this->cssmgr->CSS['BODY']['FONT-SIZE'] = $fontsize . 'pt';
11026}
11027
11028function SetDefaultBodyCSS($prop, $val) {
11029 if ($prop) {
11030 $this->defaultCSS['BODY'][strtoupper($prop)] = $val;
11031 $this->cssmgr->CSS['BODY'][strtoupper($prop)] = $val;
11032 }
11033}
11034
11035
11036function SetDirectionality($dir='ltr') {
11037/*-- RTL --*/
11038 if (strtolower($dir) == 'rtl') {
11039 if ($this->directionality != 'rtl') {
11040 // Swop L/R Margins so page 1 RTL is an 'even' page
11041 $tmp = $this->DeflMargin;
11042 $this->DeflMargin = $this->DefrMargin;
11043 $this->DefrMargin = $tmp;
11044 $this->orig_lMargin = $this->DeflMargin;
11045 $this->orig_rMargin = $this->DefrMargin;
11046
11047 $this->SetMargins($this->DeflMargin,$this->DefrMargin,$this->tMargin);
11048 }
11049 $this->directionality = 'rtl';
11050 $this->defaultAlign = 'R';
11051 $this->defaultTableAlign = 'R';
11052 }
11053 else {
11054/*-- END RTL --*/
11055 $this->directionality = 'ltr';
11056 $this->defaultAlign = 'L';
11057 $this->defaultTableAlign = 'L';
11058 } // *RTL*
11059 $this->cssmgr->CSS['BODY']['DIRECTION'] = $this->directionality;
11060}
11061
11062
11063
11064// Added to set line-height-correction
11065function SetLineHeightCorrection($val) {
11066 if ($val > 0) { $this->default_lineheight_correction = $val; }
11067 else { $this->default_lineheight_correction = 1.2; }
11068}
11069
11070// Set a (fixed) lineheight to an actual value - either to named fontsize(pts) or default
11071function SetLineHeight($FontPt='',$spacing = '') {
11072 if ($this->shrin_k > 1) { $k = $this->shrin_k; }
11073 else { $k = 1; }
11074 if ($spacing > 0) {
11075 if (preg_match('/mm/',$spacing)) {
11076 $this->lineheight = ($spacing + 0.0) / $k; // convert to number
11077 }
11078 else {
11079 if ($FontPt) { $this->lineheight = (($FontPt/_MPDFK) *$spacing); }
11080 else { $this->lineheight = (($this->FontSizePt/_MPDFK) *$spacing); }
11081 }
11082 }
11083 else {
11084 if ($FontPt) { $this->lineheight = (($FontPt/_MPDFK) *$this->normalLineheight); }
11085 else { $this->lineheight = (($this->FontSizePt/_MPDFK) *$this->normalLineheight); }
11086 }
11087}
11088
11089function _computeLineheight($lh, $fs='') {
11090 if ($this->shrin_k > 1) { $k = $this->shrin_k; }
11091 else { $k = 1; }
11092 if (!$fs) { $fs = $this->FontSize; }
11093 if (preg_match('/mm/',$lh)) {
11094 return (($lh + 0.0) / $k); // convert to number
11095 }
11096 else if ($lh > 0) {
11097 return ($fs * $lh);
11098 }
11099 else if (isset($this->normalLineheight)) { return ($fs * $this->normalLineheight); }
11100 else return ($fs * $this->default_lineheight_correction);
11101}
11102
11103
11104function SetBasePath($str='') {
11105 if ( isset($_SERVER['HTTP_HOST']) ) { $host = $_SERVER['HTTP_HOST']; }
11106 else if ( isset($_SERVER['SERVER_NAME']) ) { $host = $_SERVER['SERVER_NAME']; }
11107 else { $host = ''; }
11108 if (!$str) {
11109 if ($_SERVER['SCRIPT_NAME']) { $currentPath = dirname($_SERVER['SCRIPT_NAME']); }
11110 else { $currentPath = dirname($_SERVER['PHP_SELF']); }
11111 $currentPath = str_replace("\\","/",$currentPath);
11112 if ($currentPath == '/') { $currentPath = ''; }
11113 if ($host) { $currpath = 'http://' . $host . $currentPath .'/'; }
11114 else { $currpath = ''; }
11115 $this->basepath = $currpath;
11116 $this->basepathIsLocal = true;
11117 return;
11118 }
11119 $str = preg_replace('/\?.*/','',$str);
11120 if (!preg_match('/(http|https|ftp):\/\/.*\//i',$str)) { $str .= '/'; }
11121 $str .= 'xxx'; // in case $str ends in / e.g. http://www.bbc.co.uk/
11122 $this->basepath = dirname($str) . "/"; // returns e.g. e.g. http://www.google.com/dir1/dir2/dir3/
11123 $this->basepath = str_replace("\\","/",$this->basepath); //If on Windows
11124 $tr = parse_url($this->basepath);
11125 if (isset($tr['host']) && ($tr['host'] == $host)) { $this->basepathIsLocal = true; }
11126 else { $this->basepathIsLocal = false; }
11127}
11128
11129
11130function GetFullPath(&$path,$basepath='') {
11131 // When parsing CSS need to pass temporary basepath - so links are relative to current stylesheet
11132 if (!$basepath) { $basepath = $this->basepath; }
11133 //Fix path value
11134 $path = str_replace("\\","/",$path); //If on Windows
11135 // mPDF 5.7.2
11136 if (substr($path,0,2) == "//") {
11137 $tr = parse_url($basepath);
11138 $path = $tr['scheme'].':'.$path;
11139 }
11140 $regexp = '|^./|'; // Inadvertently corrects "./path/etc" and "//www.domain.com/etc"
11141 $path = preg_replace($regexp,'',$path);
11142
11143
11144 if(substr($path,0,1) == '#') { return; }
11145 if (stristr($path,"mailto:") !== false) { return; }
11146 if (strpos($path,"../") !== false ) { //It is a Relative Link
11147 $backtrackamount = substr_count($path,"../");
11148 $maxbacktrack = substr_count($basepath,"/") - 3; // mPDF 5.6.18
11149 $filepath = str_replace("../",'',$path);
11150 $path = $basepath;
11151 //If it is an invalid relative link, then make it go to directory root
11152 if ($backtrackamount > $maxbacktrack) $backtrackamount = $maxbacktrack;
11153 //Backtrack some directories
11154 for( $i = 0 ; $i < $backtrackamount + 1 ; $i++ ) $path = substr( $path, 0 , strrpos($path,"/") );
11155 $path = $path . "/" . $filepath; //Make it an absolute path
11156 }
11157 else if( strpos($path,":/") === false || strpos($path,":/") > 10) { //It is a Local Link
11158 if (substr($path,0,1) == "/") {
11159 $tr = parse_url($basepath);
11160 // mPDF 5.7.2
11161 $root = '';
11162 if (!empty($tr['scheme'])) { $root .= $tr['scheme'].'://'; }
11163 $root .= $tr['host'];
11164 $path = $root . $path;
11165 }
11166 else { $path = $basepath . $path; }
11167 }
11168 //Do nothing if it is an Absolute Link
11169}
11170
11171
11172// Used for external CSS files
11173function _get_file($path) {
11174 // If local file try using local path (? quicker, but also allowed even if allow_url_fopen false)
11175 $contents = '';
11176 $contents = @file_get_contents($path);
11177 if ($contents) { return $contents; }
11178 if ($this->basepathIsLocal) {
11179 $tr = parse_url($path);
11180 $lp=getenv("SCRIPT_NAME");
11181 $ap=realpath($lp);
11182 $ap=str_replace("\\","/",$ap);
11183 $docroot=substr($ap,0,strpos($ap,$lp));
11184 // WriteHTML parses all paths to full URLs; may be local file name
11185 if ($tr['scheme'] && $tr['host'] && $_SERVER["DOCUMENT_ROOT"] ) {
11186 $localpath = $_SERVER["DOCUMENT_ROOT"] . $tr['path'];
11187 }
11188 // DOCUMENT_ROOT is not returned on IIS
11189 else if ($docroot) {
11190 $localpath = $docroot . $tr['path'];
11191 }
11192 else { $localpath = $path; }
11193 $contents = @file_get_contents($localpath);
11194 }
11195 // if not use full URL
11196 else if (!$contents && !ini_get('allow_url_fopen') && function_exists("curl_init")) {
11197 $ch = curl_init($path);
11198 curl_setopt($ch, CURLOPT_HEADER, 0);
11199 curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 );
11200 $contents = curl_exec($ch);
11201 curl_close($ch);
11202 }
11203 return $contents;
11204}
11205
11206
11207function docPageNum($num = 0, $extras = false) {
11208 if ($num < 1) { $num = $this->page; }
11209 $type = '1'; // set default decimal
11210 $ppgno = $num;
11211 $suppress = 0;
11212 $offset = 0;
11213 $lastreset = 0;
11214 foreach($this->PageNumSubstitutions AS $psarr) {
11215 if ($num >= $psarr['from']) {
11216 if ($psarr['reset']) {
11217 if ($psarr['reset']>1) { $offset = $psarr['reset']-1; }
11218 $ppgno = $num - $psarr['from'] + 1 + $offset;
11219 $lastreset = $psarr['from'];
11220 }
11221 if ($psarr['type']) { $type = $psarr['type']; }
11222 if (strtoupper($psarr['suppress'])=='ON' || $psarr['suppress']==1) { $suppress = 1; }
11223 else if (strtoupper($psarr['suppress'])=='OFF') { $suppress = 0; }
11224 }
11225 }
11226 if ($suppress) { return ''; }
11227
11228 foreach($this->pgsIns AS $k=>$v) {
11229 if ($k>$lastreset && $k<$num) {
11230 $ppgno -= $v;
11231 }
11232 }
11233 if ($type=='A') { $ppgno = $this->dec2alpha($ppgno,true); }
11234 else if ($type=='a') { $ppgno = $this->dec2alpha($ppgno,false);}
11235 else if ($type=='I') { $ppgno = $this->dec2roman($ppgno,true); }
11236 else if ($type=='i') { $ppgno = $this->dec2roman($ppgno,false); }
11237 if ($extras) { $ppgno = $this->pagenumPrefix . $ppgno . $this->pagenumSuffix; }
11238 return $ppgno;
11239}
11240
11241
11242function docPageSettings($num = 0) {
11243 // Returns current type (numberstyle), suppression state for this page number;
11244 // reset is only returned if set for this page number
11245 if ($num < 1) { $num = $this->page; }
11246 $type = '1'; // set default decimal
11247 $ppgno = $num;
11248 $suppress = 0;
11249 $offset = 0;
11250 $reset = '';
11251 foreach($this->PageNumSubstitutions AS $psarr) {
11252 if ($num >= $psarr['from']) {
11253 if ($psarr['reset']) {
11254 if ($psarr['reset']>1) { $offset = $psarr['reset']-1; }
11255 $ppgno = $num - $psarr['from'] + 1 + $offset;
11256 }
11257 if ($psarr['type']) { $type = $psarr['type']; }
11258 if (strtoupper($psarr['suppress'])=='ON' || $psarr['suppress']==1) { $suppress = 1; }
11259 else if (strtoupper($psarr['suppress'])=='OFF') { $suppress = 0; }
11260 }
11261 if ($num == $psarr['from']) { $reset = $psarr['reset']; }
11262 }
11263 if ($suppress) { $suppress = 'on'; }
11264 else { $suppress = 'off'; }
11265 return array($type, $suppress, $reset);
11266}
11267
11268function docPageNumTotal($num = 0, $extras = false) {
11269 if ($num < 1) { $num = $this->page; }
11270 $type = '1'; // set default decimal
11271 $ppgstart = 1;
11272 $ppgend = count($this->pages)+1;
11273 $suppress = 0;
11274 $offset = 0;
11275 foreach($this->PageNumSubstitutions AS $psarr) {
11276 if ($num >= $psarr['from']) {
11277 if ($psarr['reset']) {
11278 if ($psarr['reset']>1) { $offset = $psarr['reset']-1; }
11279 $ppgstart = $psarr['from'] + $offset;
11280 $ppgend = count($this->pages)+1 + $offset;
11281 }
11282 if ($psarr['type']) { $type = $psarr['type']; }
11283 if (strtoupper($psarr['suppress'])=='ON' || $psarr['suppress']==1) { $suppress = 1; }
11284 else if (strtoupper($psarr['suppress'])=='OFF') { $suppress = 0; }
11285 }
11286 if ($num < $psarr['from']) {
11287 if ($psarr['reset']) {
11288 $ppgend = $psarr['from'] + $offset;
11289 break;
11290 }
11291 }
11292 }
11293 if ($suppress) { return ''; }
11294 $ppgno = $ppgend-$ppgstart+$offset;
11295
11296 // mPDF 5.6.47
11297 foreach($this->pgsIns AS $k => $v) {
11298 if ($k>$ppgstart && $k<$ppgend) {
11299 $ppgno -= $v;
11300 }
11301 }
11302
11303 if ($extras) { $ppgno = $this->nbpgPrefix . $ppgno . $this->nbpgSuffix; }
11304 return $ppgno;
11305}
11306
11307function RestartDocTemplate() {
11308 $this->docTemplateStart = $this->page;
11309}
11310
11311
11312
11313//Page header
11314function Header($content='') {
11315
11316 $this->cMarginL = 0;
11317 $this->cMarginR = 0;
11318
11319
11320/*-- HTMLHEADERS-FOOTERS --*/
11321 if (($this->mirrorMargins && ($this->page%2==0) && $this->HTMLHeaderE) || ($this->mirrorMargins && ($this->page%2==1) && $this->HTMLHeader) || (!$this->mirrorMargins && $this->HTMLHeader)) {
11322 $this->writeHTMLHeaders();
11323 return;
11324 }
11325/*-- END HTMLHEADERS-FOOTERS --*/
11326 $this->processingHeader=true;
11327 $h = $this->headerDetails;
11328 if(count($h)) {
11329
11330 if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
11331 $this->_out(sprintf('q 0 -1 1 0 0 %.3F cm ',($this->h*_MPDFK)));
11332 $yadj = $this->w - $this->h;
11333 $headerpgwidth = $this->h - $this->orig_lMargin - $this->orig_rMargin;
11334 if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN
11335 $headerlmargin = $this->orig_rMargin;
11336 }
11337 else {
11338 $headerlmargin = $this->orig_lMargin;
11339 }
11340 }
11341 else {
11342 $yadj = 0;
11343 $headerpgwidth = $this->pgwidth;
11344 $headerlmargin = $this->lMargin;
11345 }
11346
11347 $this->y = $this->margin_header - $yadj ;
11348 $this->SetTColor($this->ConvertColor(0));
11349 $this->SUP = false;
11350 $this->SUB = false;
11351 $this->bullet = false;
11352
11353 // only show pagenumber if numbering on
11354 $pgno = $this->docPageNum($this->page, true);
11355
11356 if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN
11357 $side = 'even';
11358 }
11359 else { // ODD // OR NOT MIRRORING MARGINS/FOOTERS = DEFAULT
11360 $side = 'odd';
11361 }
11362 $maxfontheight = 0;
11363 foreach(array('L','C','R') AS $pos) {
11364 if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
11365 if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
11366 else { $hfsz = $this->default_font_size; }
11367 $maxfontheight = max($maxfontheight,$hfsz);
11368 }
11369 }
11370 // LEFT-CENTER-RIGHT
11371 foreach(array('L','C','R') AS $pos) {
11372 if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
11373 $hd = str_replace('{PAGENO}',$pgno,$h[$side][$pos]['content']);
11374 $hd = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->aliasNbPgGp.$this->nbpgSuffix,$hd);
11375 $hd = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$hd); // mPDF 5.7
11376 if (isset($h[$side][$pos]['font-family']) && $h[$side][$pos]['font-family']) { $hff = $h[$side][$pos]['font-family']; }
11377 else { $hff = $this->original_default_font; }
11378 if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
11379 else { $hfsz = $this->original_default_font_size; } // pts
11380 $maxfontheight = max($maxfontheight,$hfsz);
11381 $hfst = '';
11382 if (isset($h[$side][$pos]['font-style']) && $h[$side][$pos]['font-style']) {
11383 $hfst = $h[$side][$pos]['font-style'];
11384 }
11385 if (isset($h[$side][$pos]['color']) && $h[$side][$pos]['color']) {
11386 $hfcol = $h[$side][$pos]['color'];
11387 $cor = $this->ConvertColor($hfcol);
11388 if ($cor) { $this->SetTColor($cor); }
11389 }
11390 else { $hfcol = ''; }
11391 $this->SetFont($hff,$hfst,$hfsz,true,true);
11392 $this->x = $headerlmargin ;
11393 $this->y = $this->margin_header - $yadj ;
11394
11395 $hd = $this->purify_utf8_text($hd);
11396 if ($this->text_input_as_HTML) {
11397 $hd = $this->all_entities_to_utf8($hd);
11398 }
11399 // CONVERT CODEPAGE
11400 if ($this->usingCoreFont) { $hd = mb_convert_encoding($hd,$this->mb_enc,'UTF-8'); }
11401 // DIRECTIONALITY RTL
11402 $this->magic_reverse_dir($hd, true, $this->directionality); // *RTL*
11403 // Font-specific ligature substitution for Indic fonts
11404 if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($hd); // *INDIC*
11405 $align = $pos;
11406/*-- RTL --*/
11407 if ($this->directionality == 'rtl') {
11408 if ($pos == 'L') { $align = 'R'; }
11409 else if ($pos == 'R') { $align = 'L'; }
11410 }
11411/*-- END RTL --*/
11412 if ($pos!='L' && (strpos($hd,$this->aliasNbPg)!==false || strpos($hd,$this->aliasNbPgGp)!==false)) {
11413 if (strpos($hd,$this->aliasNbPgGp)!==false) { $type= 'nbpggp'; } else { $type= 'nbpg'; }
11414 $this->_out('{mpdfheader'.$type.' '.$pos.' ff='.$hff.' fs='.$hfst.' fz='.$hfsz.'}');
11415 $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
11416 $this->_out('Q');
11417 }
11418 else {
11419 $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
11420 }
11421 if ($hfcol) { $this->SetTColor($this->ConvertColor(0)); }
11422 }
11423 }
11424 //Return Font to normal
11425 $this->SetFont($this->default_font,'',$this->original_default_font_size);
11426 // LINE
11427 if (isset($h[$side]['line']) && $h[$side]['line']) {
11428 $this->SetLineWidth(0.1);
11429 $this->SetDColor($this->ConvertColor(0));
11430 $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 );
11431 }
11432 if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
11433 $this->_out('Q');
11434 }
11435 }
11436 $this->SetY($this->tMargin);
11437 if ($this->ColActive) { $this->pgwidth = $this->ColWidth; } // *COLUMNS*
11438
11439 $this->processingHeader=false;
11440}
11441
11442
11443
11444/*-- TABLES --*/
11445function TableHeaderFooter($content='',$tablestartpage='',$tablestartcolumn ='',$horf = 'H',$level, $firstSpread=true, $finalSpread=true) {
11446 if(($horf=='H' || $horf=='F') && !empty($content)) { // mPDF 5.7.2
11447 $table = &$this->table[1][1];
11448
11449 // mPDF 5.7.2
11450 if ($horf=='F') { // Table Footer
11451 $firstrow = count($table['cells']) - $table['footernrows'];
11452 $lastrow = count($table['cells']) - 1;
11453 }
11454 else { // Table Header
11455 $firstrow = 0;
11456 $lastrow = $table['headernrows'] - 1;
11457 }
11458 if(empty($content[$firstrow])) {
11459 if ($this->debug) { $this->Error("&lt;tfoot&gt; must precede &lt;tbody&gt; in a table"); }
11460 else { return; }
11461 }
11462
11463 // Advance down page by half width of top border
11464 if ($horf=='H') { // Only if header
11465 if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2 + $table['border_details']['T']['w'] + $table['padding']['T']; }
11466 else { $adv = $table['max_cell_border_width']['T'] /2 ; }
11467 if ($adv) {
11468 if ($this->table_rotate) {
11469 $this->y += ($adv);
11470 }
11471 else {
11472 $this->DivLn($adv,$this->blklvl,true);
11473 }
11474 }
11475 }
11476
11477
11478 $topy = $content[$firstrow][0]['y']-$this->y;
11479
11480 for ($i=$firstrow ; $i<=$lastrow; $i++) {
11481
11482 $y = $this->y;
11483
11484/*-- COLUMNS --*/
11485 // If outside columns, this is done in PaintDivBB
11486 if ($this->ColActive) {
11487 //OUTER FILL BGCOLOR of DIVS
11488 if ($this->blklvl > 0) {
11489 $firstblockfill = $this->GetFirstBlockFill();
11490 if ($firstblockfill && $this->blklvl >= $firstblockfill) {
11491 $divh = $content[$i][0]['h'];
11492 $bak_x = $this->x;
11493 $this->DivLn($divh,-3,false);
11494 // Reset current block fill
11495 $bcor = $this->blk[$this->blklvl]['bgcolorarray'];
11496 $this->SetFColor($bcor);
11497 $this->x = $bak_x;
11498 }
11499 }
11500 }
11501/*-- END COLUMNS --*/
11502
11503 $colctr = 0;
11504 foreach($content[$i] as $tablehf) {
11505 $colctr++;
11506 $y = $tablehf['y'] - $topy;
11507 $this->y = $y;
11508 //Set some cell values
11509 $x = $tablehf['x'];
11510 if (($this->mirrorMargins) && ($tablestartpage == 'ODD') && (($this->page)%2==0)) { // EVEN
11511 $x = $x +$this->MarginCorrection;
11512 }
11513 else if (($this->mirrorMargins) && ($tablestartpage == 'EVEN') && (($this->page)%2==1)) { // ODD
11514 $x = $x +$this->MarginCorrection;
11515 }
11516/*-- COLUMNS --*/
11517 // Added to correct for Columns
11518 if ($this->ColActive) {
11519 if ($this->directionality == 'rtl') { // *RTL*
11520 $x -= ($this->CurrCol - $tablestartcolumn) * ($this->ColWidth+$this->ColGap); // *RTL*
11521 } // *RTL*
11522 else { // *RTL*
11523 $x += ($this->CurrCol - $tablestartcolumn) * ($this->ColWidth+$this->ColGap);
11524 } // *RTL*
11525 }
11526/*-- END COLUMNS --*/
11527
11528 if ($colctr==1) { $x0 = $x; }
11529
11530 // mPDF ITERATION
11531 if ($this->iterationCounter) {
11532 foreach($tablehf['textbuffer'] AS $k=>$t) {
11533 if (!is_array($t[0]) && preg_match('/{iteration ([a-zA-Z0-9_]+)}/',$t[0], $m)) { // mPDF 5.5.06
11534 $vname = '__'.$m[1].'_';
11535 if (!isset($this->$vname)) { $this->$vname = 1; }
11536 else { $this->$vname++; }
11537 $tablehf['textbuffer'][$k][0] = preg_replace('/{iteration '.$m[1].'}/', $this->$vname, $tablehf['textbuffer'][$k][0]);
11538 }
11539 }
11540 }
11541
11542
11543 $w = $tablehf['w'];
11544 $h = $tablehf['h'];
11545 $va = $tablehf['va'];
11546 $R = $tablehf['R'];
11547 $mih = $tablehf['mih'];
11548 $border = $tablehf['border'];
11549 $border_details = $tablehf['border_details'];
11550 $padding = $tablehf['padding'];
11551 $this->tabletheadjustfinished = true;
11552
11553 $textbuffer = $tablehf['textbuffer'];
11554
11555 $align = $tablehf['a'];
11556 //Align
11557 $this->divalign=$align;
11558 $this->x = $x;
11559
11560 if ($this->ColActive) {
11561 if ($table['borders_separate']) {
11562 $tablefill = isset($table['bgcolor'][-1]) ? $table['bgcolor'][-1] : 0;
11563 if ($tablefill) {
11564 $color = $this->ConvertColor($tablefill);
11565 if ($color) {
11566 $xadj = ($table['border_spacing_H']/2);
11567 $yadj = ($table['border_spacing_V']/2);
11568 $wadj = $table['border_spacing_H'];
11569 $hadj = $table['border_spacing_V'];
11570 if ($i == $firstrow && $horf=='H') { // Top
11571 $yadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
11572 $hadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
11573 }
11574 if (($i == ($lastrow) || (isset($tablehf['rowspan']) && ($i+$tablehf['rowspan']) == ($lastrow+1)) || (!isset($tablehf['rowspan']) && ($i+1) == ($lastrow+1))) && $horf=='F') { // Bottom
11575 $hadj += $table['padding']['B'] + $table['border_details']['B']['w'] ;
11576 }
11577 if ($colctr == 1) { // Left
11578 $xadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
11579 $wadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
11580 }
11581 if ($colctr == count($content[$i]) ) { // Right
11582 $wadj += $table['padding']['R'] + $table['border_details']['R']['w'] ;
11583 }
11584 $this->SetFColor($color);
11585 $this->Rect($x - $xadj, $y - $yadj, $w + $wadj, $h + $hadj, 'F');
11586 }
11587 }
11588 }
11589 }
11590
11591 if ($table['empty_cells']!='hide' || !empty($textbuffer) || !$table['borders_separate']) { $paintcell = true; }
11592 else { $paintcell = false; }
11593
11594 //Vertical align
11595 if ($R && INTVAL($R) > 0 && isset($va) && $va!='B') { $va='B';}
11596
11597 if (!isset($va) || empty($va) || $va=='M') $this->y += ($h-$mih)/2;
11598 elseif (isset($va) && $va=='B') $this->y += $h-$mih;
11599
11600
11601 //TABLE ROW OR CELL FILL BGCOLOR
11602 $fill = 0;
11603 if (isset($tablehf['bgcolor']) && $tablehf['bgcolor'] && $tablehf['bgcolor']!='transparent') {
11604 $fill = $tablehf['bgcolor'];
11605 $leveladj = 6;
11606 }
11607 else if (isset($content[$i][0]['trbgcolor']) && $content[$i][0]['trbgcolor'] && $content[$i][0]['trbgcolor']!='transparent') { // Row color
11608 $fill = $content[$i][0]['trbgcolor'];
11609 $leveladj = 3;
11610 }
11611 if ($fill && $paintcell) {
11612 $color = $this->ConvertColor($fill);
11613 if ($color) {
11614 if ($table['borders_separate']) {
11615 if ($this->ColActive) {
11616 $this->SetFColor($color);
11617 $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');
11618 }
11619 else {
11620 $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);
11621 }
11622 }
11623 else {
11624 if ($this->ColActive) {
11625 $this->SetFColor($color);
11626 $this->Rect($x, $y, $w, $h, 'F');
11627 }
11628 else {
11629 $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>$x, 'y'=>$y, 'w'=>$w, 'h'=>$h, 'col'=>$color);
11630 }
11631 }
11632 }
11633 }
11634
11635
11636/*-- BACKGROUNDS --*/
11637 if (isset($tablehf['gradient']) && $tablehf['gradient'] && $paintcell){
11638 $g = $this->grad->parseBackgroundGradient($tablehf['gradient']);
11639 if ($g) {
11640 if ($table['borders_separate']) {
11641 $px = $x+ ($table['border_spacing_H']/2);
11642 $py = $y+ ($table['border_spacing_V']/2);
11643 $pw = $w- $table['border_spacing_H'];
11644 $ph = $h- $table['border_spacing_V'];
11645 }
11646 else {
11647 $px = $x;
11648 $py = $y;
11649 $pw = $w;
11650 $ph = $h;
11651 }
11652 if ($this->ColActive) {
11653 $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
11654 }
11655 else {
11656 $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'=>'');
11657 }
11658 }
11659 }
11660
11661 if (isset($tablehf['background-image']) && $paintcell){
11662 if ($tablehf['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $tablehf['background-image']['gradient'] )) {
11663 $g = $this->grad->parseMozGradient( $tablehf['background-image']['gradient'] );
11664 if ($g) {
11665 if ($table['borders_separate']) {
11666 $px = $x+ ($table['border_spacing_H']/2);
11667 $py = $y+ ($table['border_spacing_V']/2);
11668 $pw = $w- $table['border_spacing_H'];
11669 $ph = $h- $table['border_spacing_V'];
11670 }
11671 else {
11672 $px = $x;
11673 $py = $y;
11674 $pw = $w;
11675 $ph = $h;
11676 }
11677 if ($this->ColActive) {
11678 $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
11679 }
11680 else {
11681 $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'=>'');
11682 }
11683 }
11684 }
11685 else if ($tablehf['background-image']['image_id']) { // Background pattern
11686 $n = count($this->patterns)+1;
11687 if ($table['borders_separate']) {
11688 $px = $x+ ($table['border_spacing_H']/2);
11689 $py = $y+ ($table['border_spacing_V']/2);
11690 $pw = $w- $table['border_spacing_H'];
11691 $ph = $h- $table['border_spacing_V'];
11692 }
11693 else {
11694 $px = $x;
11695 $py = $y;
11696 $pw = $w;
11697 $ph = $h;
11698 }
11699 if ($this->ColActive) {
11700 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']);
11701 $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']);
11702 if ($tablehf['background-image']['opacity']>0 && $tablehf['background-image']['opacity']<1) { $opac = $this->SetAlpha($tablehf['background-image']['opacity'],'Normal',true); }
11703 else { $opac = ''; }
11704 $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));
11705 }
11706 else {
11707 $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']);
11708 }
11709 }
11710 }
11711/*-- END BACKGROUNDS --*/
11712
11713 //Cell Border
11714 if ($table['borders_separate'] && $paintcell && $border) {
11715 $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']);
11716 }
11717 else if ($paintcell && $border) {
11718 $this->_tableRect($x, $y, $w, $h, $border, $border_details, true, $table['borders_separate']); // true causes buffer
11719 }
11720
11721 //Print cell content
11722 //$this->divheight = $this->table_lineheight*$this->lineheight;
11723 if (!empty($textbuffer)) {
11724 if ($horf=='F' && preg_match('/{colsum([0-9]*)[_]*}/', $textbuffer[0][0], $m)) {
11725 $rep = sprintf("%01.".intval($m[1])."f", $this->colsums[$colctr-1]);
11726 $textbuffer[0][0] = preg_replace('/{colsum[0-9_]*}/', $rep ,$textbuffer[0][0]);
11727 }
11728
11729 if ($R) {
11730 $cellPtSize = $textbuffer[0][11] / $this->shrin_k;
11731 if (!$cellPtSize) { $cellPtSize = $this->default_font_size; }
11732 $cellFontHeight = ($cellPtSize/_MPDFK);
11733 $opx = $this->x;
11734 $opy = $this->y;
11735 $angle = INTVAL($R);
11736 // Only allow 45 - 90 degrees (when bottom-aligned) or -90
11737 if ($angle > 90) { $angle = 90; }
11738 else if ($angle > 0 && (isset($va) && $va!='B')) { $angle = 90; }
11739 else if ($angle > 0 && $angle <45) { $angle = 45; }
11740 else if ($angle < 0) { $angle = -90; }
11741 $offset = ((sin(deg2rad($angle))) * 0.37 * $cellFontHeight);
11742 if (isset($align) && $align =='R') {
11743 $this->x += ($w) + ($offset) - ($cellFontHeight/3) - ($padding['R'] + $border_details['R']['w']);
11744 }
11745 else if (!isset($align ) || $align =='C') {
11746 $this->x += ($w/2) + ($offset);
11747 }
11748 else {
11749 $this->x += ($offset) + ($cellFontHeight/3)+($padding['L'] + $border_details['L']['w']);
11750 }
11751 $str = '';
11752 foreach($tablehf['textbuffer'] AS $t) { $str .= $t[0].' '; }
11753 $str = trim($str);
11754
11755 if (!isset($va) || $va=='M') {
11756 $this->y -= ($h-$mih)/2; //Undo what was added earlier VERTICAL ALIGN
11757 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'])); }
11758 else if ($angle < 0) { $this->y += (($h-$mih)/2)+($padding['T'] + $border_details['T']['w']); }
11759 }
11760 else if (isset($va) && $va=='B') {
11761 $this->y -= $h-$mih; //Undo what was added earlier VERTICAL ALIGN
11762 if ($angle > 0) { $this->y += $h-($border_details['B']['w']+$padding['B']); }
11763 else if ($angle < 0) { $this->y += $h-$mih+($padding['T'] + $border_details['T']['w']); }
11764 }
11765 else if (isset($va) && $va=='T') {
11766 if ($angle > 0) { $this->y += $mih-($border_details['B']['w']+$padding['B']); }
11767 else if ($angle < 0) { $this->y += ($padding['T'] + $border_details['T']['w']); }
11768 }
11769
11770 $this->Rotate($angle,$this->x,$this->y);
11771 $s_fs = $this->FontSizePt;
11772 $s_f = $this->FontFamily;
11773 $s_st = $this->FontStyle;
11774 if (!empty($textbuffer[0][3])) { //Font Color
11775 $cor = $textbuffer[0][3];
11776 $this->SetTColor($cor);
11777 }
11778 $s_str = $this->strike;
11779 $this->strike = $textbuffer[0][8]; //Strikethrough
11780 $this->SetFont($textbuffer[0][4],$textbuffer[0][2],$cellPtSize,true,true);
11781 $this->Text($this->x,$this->y,$str);
11782 $this->Rotate(0);
11783 $this->SetFont($s_f,$s_st,$s_fs,true,true);
11784 $this->SetTColor(0);
11785 $this->strike = $s_str;
11786 $this->x = $opx;
11787 $this->y = $opy;
11788 }
11789 else {
11790 if ($table['borders_separate']) { // NB twice border width
11791 $xadj = $border_details['L']['w'] + $padding['L'] +($table['border_spacing_H']/2);
11792 $wadj = $border_details['L']['w'] + $border_details['R']['w'] + $padding['L'] +$padding['R'] + $table['border_spacing_H'];
11793 $yadj = $border_details['T']['w'] + $padding['T'] + ($table['border_spacing_H']/2);
11794 }
11795 else {
11796 $xadj = $border_details['L']['w']/2 + $padding['L'];
11797 $wadj = ($border_details['L']['w'] + $border_details['R']['w'])/2 + $padding['L'] + $padding['R'];
11798 $yadj = $border_details['T']['w']/2 + $padding['T'];
11799 }
11800
11801 $this->divwidth=$w-($wadj);
11802 $this->x += $xadj;
11803 $this->y += $yadj;
11804 $this->printbuffer($textbuffer,'',true);
11805 }
11806
11807 }
11808 $textbuffer = array();
11809
11810/*-- BACKGROUNDS --*/
11811 if (!$this->ColActive) {
11812 if (isset($content[$i][0]['trgradients']) && ($colctr==1 || $table['borders_separate'])) {
11813 $g = $this->grad->parseBackgroundGradient($content[$i][0]['trgradients']);
11814 if ($g) {
11815 $gx = $x0;
11816 $gy = $y;
11817 $gh = $h;
11818 $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
11819 if ($table['borders_separate']) {
11820 $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']);
11821 $s = '';
11822 $clx = $x+ ($table['border_spacing_H']/2);
11823 $cly = $y+ ($table['border_spacing_V']/2);
11824 $clw = $w- $table['border_spacing_H'];
11825 $clh = $h- $table['border_spacing_V'];
11826 // Set clipping path
11827 $s = ' q 0 w '; // Line width=0
11828 $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
11829 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BL
11830 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BR
11831 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TR
11832 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
11833 $s .= ' W n '; // Ends path no-op & Sets the clipping path
11834 $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);
11835 }
11836 else {
11837 $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'=>'');
11838 }
11839 }
11840 }
11841
11842 if (isset($content[$i][0]['trbackground-images']) && ($colctr==1 || $table['borders_separate'])) {
11843 if ($content[$i][0]['trbackground-images']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $content[$i][0]['trbackground-images']['gradient'] )) {
11844 $g = $this->grad->parseMozGradient( $content[$i][0]['trbackground-images']['gradient'] );
11845 if ($g) {
11846 $gx = $x0;
11847 $gy = $y;
11848 $gh = $h;
11849 $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
11850 if ($table['borders_separate']) {
11851 $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']);
11852 $s = '';
11853 $clx = $x+ ($table['border_spacing_H']/2);
11854 $cly = $y+ ($table['border_spacing_V']/2);
11855 $clw = $w- $table['border_spacing_H'];
11856 $clh = $h- $table['border_spacing_V'];
11857 // Set clipping path
11858 $s = ' q 0 w '; // Line width=0
11859 $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
11860 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BL
11861 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BR
11862 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TR
11863 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
11864 $s .= ' W n '; // Ends path no-op & Sets the clipping path
11865 $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);
11866 }
11867 else {
11868 $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'=>'');
11869 }
11870 }
11871 }
11872 else {
11873 $image_id = $content[$i][0]['trbackground-images']['image_id'];
11874 $orig_w = $content[$i][0]['trbackground-images']['orig_w'];
11875 $orig_h = $content[$i][0]['trbackground-images']['orig_h'];
11876 $x_pos = $content[$i][0]['trbackground-images']['x_pos'];
11877 $y_pos = $content[$i][0]['trbackground-images']['y_pos'];
11878 $x_repeat = $content[$i][0]['trbackground-images']['x_repeat'];
11879 $y_repeat = $content[$i][0]['trbackground-images']['y_repeat'];
11880 $resize = $content[$i][0]['trbackground-images']['resize'];
11881 $opacity = $content[$i][0]['trbackground-images']['opacity'];
11882 $itype = $content[$i][0]['trbackground-images']['itype'];
11883
11884 $clippath = '';
11885 $gx = $x0;
11886 $gy = $y;
11887 $gh = $h;
11888 $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
11889 if ($table['borders_separate']) {
11890 $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']);
11891 $s = '';
11892 $clx = $x+ ($table['border_spacing_H']/2);
11893 $cly = $y+ ($table['border_spacing_V']/2);
11894 $clw = $w- $table['border_spacing_H'];
11895 $clh = $h- $table['border_spacing_V'];
11896 // Set clipping path
11897 $s = ' q 0 w '; // Line width=0
11898 $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
11899 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BL
11900 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BR
11901 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TR
11902 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
11903 $s .= ' W n '; // Ends path no-op & Sets the clipping path
11904 $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);
11905 }
11906 else {
11907 $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);
11908 }
11909 }
11910 }
11911 }
11912/*-- END BACKGROUNDS --*/
11913
11914 // TABLE BORDER - if separate OR collapsed and only table border
11915 if (($table['borders_separate'] || ($this->simpleTables && !$table['simple']['border'])) && $table['border']) {
11916 $halfspaceL = $table['padding']['L'] + ($table['border_spacing_H']/2);
11917 $halfspaceR = $table['padding']['R'] + ($table['border_spacing_H']/2);
11918 $halfspaceT = $table['padding']['T'] + ($table['border_spacing_V']/2);
11919 $halfspaceB = $table['padding']['B'] + ($table['border_spacing_V']/2);
11920 $tbx = $x;
11921 $tby = $y;
11922 $tbw = $w;
11923 $tbh = $h;
11924 $tab_bord = 0;
11925 $corner = '';
11926 if ($i == $firstrow && $horf=='H') { // Top
11927 $tby -= $halfspaceT + ($table['border_details']['T']['w']/2);
11928 $tbh += $halfspaceT + ($table['border_details']['T']['w']/2);
11929 $this->setBorder($tab_bord , _BORDER_TOP);
11930 $corner .= 'T';
11931 }
11932 if (($i == ($lastrow) || (isset($tablehf['rowspan']) && ($i+$tablehf['rowspan']) == ($lastrow+1))) && $horf=='F') { // Bottom
11933 $tbh += $halfspaceB + ($table['border_details']['B']['w']/2);
11934 $this->setBorder($tab_bord , _BORDER_BOTTOM);
11935 $corner .= 'B';
11936 }
11937 if ($colctr == 1 && $firstSpread) { // Left
11938 $tbx -= $halfspaceL + ($table['border_details']['L']['w']/2);
11939 $tbw += $halfspaceL + ($table['border_details']['L']['w']/2);
11940 $this->setBorder($tab_bord , _BORDER_LEFT);
11941 $corner .= 'L';
11942 }
11943 if ($colctr == count($content[$i]) && $finalSpread) { // Right
11944 $tbw += $halfspaceR + ($table['border_details']['R']['w']/2);
11945 $this->setBorder($tab_bord , _BORDER_RIGHT);
11946 $corner .= 'R';
11947 }
11948 $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'] );
11949 }
11950
11951
11952 }// end column $content
11953 $this->y = $y + $h; //Update y coordinate
11954 }// end row $i
11955 unset($table );
11956 $this->colsums = array();
11957 }
11958}
11959/*-- END TABLES --*/
11960
11961/*-- HTMLHEADERS-FOOTERS --*/
11962function SetHTMLHeader($header='',$OE='',$write=false) {
11963
11964 $height = 0;
11965 if (is_array($header) && isset($header['html']) && $header['html']) {
11966 $Hhtml = $header['html'];
11967 if ($this->setAutoTopMargin) {
11968 if (isset($header['h'])) { $height = $header['h']; }
11969 else { $height = $this->_gethtmlheight($Hhtml); }
11970 }
11971 }
11972 else if (!is_array($header) && $header) {
11973 $Hhtml = $header;
11974 if ($this->setAutoTopMargin) { $height = $this->_gethtmlheight($Hhtml); }
11975 }
11976 else { $Hhtml = ''; }
11977
11978 if ($OE != 'E') { $OE = 'O'; }
11979 if ($OE == 'E') {
11980
11981 if ($Hhtml) {
11982 $this->HTMLHeaderE['html'] = $Hhtml;
11983 $this->HTMLHeaderE['h'] = $height;
11984 }
11985 else { $this->HTMLHeaderE = ''; }
11986 }
11987 else {
11988
11989 if ($Hhtml) {
11990 $this->HTMLHeader['html'] = $Hhtml;
11991 $this->HTMLHeader['h'] = $height;
11992 }
11993 else { $this->HTMLHeader = ''; }
11994 }
11995 if (!$this->mirrorMargins && $OE == 'E') { return; }
11996 if ($Hhtml=='') { return; }
11997 if ($OE == 'E') {
11998 $this->headerDetails['even'] = array(); // override and clear any other non-HTML header/footer
11999 }
12000 else {
12001 $this->headerDetails['odd'] = array(); // override and clear any non-HTML other header/footer
12002 }
12003
12004 if ($this->setAutoTopMargin=='pad') {
12005 $this->tMargin = $this->margin_header + $height + $this->orig_tMargin;
12006 if (isset($this->saveHTMLHeader[$this->page][$OE]['mt'])) { $this->saveHTMLHeader[$this->page][$OE]['mt'] = $this->tMargin; }
12007 }
12008 else if ($this->setAutoTopMargin=='stretch') {
12009 $this->tMargin = max($this->orig_tMargin, $this->margin_header + $height + $this->autoMarginPadding);
12010 if (isset($this->saveHTMLHeader[$this->page][$OE]['mt'])) { $this->saveHTMLHeader[$this->page][$OE]['mt'] = $this->tMargin; }
12011 }
12012 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(); }
12013}
12014
12015function SetHTMLFooter($footer='',$OE='') {
12016
12017 $height = 0;
12018 if (is_array($footer) && isset($footer['html']) && $footer['html']) {
12019 $Fhtml = $footer['html'];
12020 if ($this->setAutoBottomMargin) {
12021 if (isset($footer['h'])) { $height = $footer['h']; }
12022 else { $height = $this->_gethtmlheight($Fhtml); }
12023 }
12024 }
12025 else if (!is_array($footer) && $footer) {
12026 $Fhtml = $footer;
12027 if ($this->setAutoBottomMargin) { $height = $this->_gethtmlheight($Fhtml); }
12028 }
12029 else { $Fhtml = ''; }
12030
12031 if ($OE != 'E') { $OE = 'O'; }
12032 if ($OE == 'E') {
12033
12034 if ($Fhtml) {
12035 $this->HTMLFooterE['html'] = $Fhtml;
12036 $this->HTMLFooterE['h'] = $height;
12037 }
12038 else { $this->HTMLFooterE = ''; }
12039 }
12040 else {
12041
12042 if ($Fhtml) {
12043 $this->HTMLFooter['html'] = $Fhtml;
12044 $this->HTMLFooter['h'] = $height;
12045 }
12046 else { $this->HTMLFooter = ''; }
12047 }
12048 if (!$this->mirrorMargins && $OE == 'E') { return; }
12049 if ($Fhtml=='') { return false; }
12050 if ($OE == 'E') {
12051 $this->footerDetails['even'] = array(); // override and clear any other header/footer
12052 }
12053 else {
12054 $this->footerDetails['odd'] = array(); // override and clear any other header/footer
12055 }
12056
12057 if ($this->setAutoBottomMargin=='pad') {
12058 $this->bMargin = $this->margin_footer + $height + $this->orig_bMargin;
12059 $this->PageBreakTrigger=$this->h-$this->bMargin ;
12060 if (isset($this->saveHTMLHeader[$this->page][$OE]['mb'])) { $this->saveHTMLHeader[$this->page][$OE]['mb'] = $this->bMargin; }
12061 }
12062 else if ($this->setAutoBottomMargin=='stretch') {
12063 $this->bMargin = max($this->orig_bMargin, $this->margin_footer + $height + $this->autoMarginPadding);
12064 $this->PageBreakTrigger=$this->h-$this->bMargin ;
12065 if (isset($this->saveHTMLHeader[$this->page][$OE]['mb'])) { $this->saveHTMLHeader[$this->page][$OE]['mb'] = $this->bMargin; }
12066 }
12067}
12068
12069
12070function _getHtmlHeight($html) {
12071 $save_state = $this->state;
12072 if($this->state==0) {
12073 $this->AddPage($this->CurOrientation);
12074 }
12075 $this->state = 2;
12076 $this->Reset();
12077 $this->pageoutput[$this->page] = array();
12078 $save_x = $this->x;
12079 $save_y = $this->y;
12080 $this->x = $this->lMargin;
12081 $this->y = $this->margin_header;
12082 $html = str_replace('{PAGENO}',$this->pagenumPrefix.$this->docPageNum($this->page).$this->pagenumSuffix,$html);
12083 $html = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->docPageNumTotal($this->page).$this->nbpgSuffix,$html );
12084 $html = str_replace($this->aliasNbPg,$this->page,$html );
12085 $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$html ); // mPDF 5.7
12086 $this->HTMLheaderPageLinks = array();
12087 $this->HTMLheaderPageAnnots = array();
12088 $this->HTMLheaderPageForms = array();
12089 $savepb = $this->pageBackgrounds;
12090 $this->writingHTMLheader = true;
12091 $this->WriteHTML($html , 4); // parameter 4 saves output to $this->headerbuffer
12092 $this->writingHTMLheader = false;
12093 $h = ($this->y - $this->margin_header);
12094 $this->Reset();
12095 // mPDF 5.7.2 - Clear in case Float used in Header/Footer
12096 $this->blk[0]['blockContext'] = 0;
12097 $this->blk[0]['float_endpos'] = 0;
12098
12099 $this->pageoutput[$this->page] = array();
12100 $this->headerbuffer = '';
12101 $this->pageBackgrounds = $savepb;
12102 $this->x = $save_x;
12103 $this->y = $save_y;
12104 $this->state = $save_state;
12105 if($save_state==0) {
12106 unset($this->pages[1]);
12107 $this->page = 0;
12108 }
12109 return $h;
12110}
12111
12112
12113// Called internally from Header
12114function writeHTMLHeaders() {
12115
12116 if ($this->mirrorMargins && ($this->page)%2==0) { $OE = 'E'; } // EVEN
12117 else { $OE = 'O'; }
12118 if ($OE == 'E') {
12119 $this->saveHTMLHeader[$this->page][$OE]['html'] = $this->HTMLHeaderE['html'] ;
12120 }
12121 else {
12122 $this->saveHTMLHeader[$this->page][$OE]['html'] = $this->HTMLHeader['html'] ;
12123 }
12124 if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
12125 $this->saveHTMLHeader[$this->page][$OE]['rotate'] = true;
12126 $this->saveHTMLHeader[$this->page][$OE]['ml'] = $this->tMargin;
12127 $this->saveHTMLHeader[$this->page][$OE]['mr'] = $this->bMargin;
12128 $this->saveHTMLHeader[$this->page][$OE]['mh'] = $this->margin_header;
12129 $this->saveHTMLHeader[$this->page][$OE]['mf'] = $this->margin_footer;
12130 $this->saveHTMLHeader[$this->page][$OE]['pw'] = $this->h;
12131 $this->saveHTMLHeader[$this->page][$OE]['ph'] = $this->w;
12132 }
12133 else {
12134 $this->saveHTMLHeader[$this->page][$OE]['ml'] = $this->lMargin;
12135 $this->saveHTMLHeader[$this->page][$OE]['mr'] = $this->rMargin;
12136 $this->saveHTMLHeader[$this->page][$OE]['mh'] = $this->margin_header;
12137 $this->saveHTMLHeader[$this->page][$OE]['mf'] = $this->margin_footer;
12138 $this->saveHTMLHeader[$this->page][$OE]['pw'] = $this->w;
12139 $this->saveHTMLHeader[$this->page][$OE]['ph'] = $this->h;
12140 }
12141}
12142
12143function writeHTMLFooters() {
12144
12145 if ($this->mirrorMargins && ($this->page)%2==0) { $OE = 'E'; } // EVEN
12146 else { $OE = 'O'; }
12147 if ($OE == 'E') {
12148 $this->saveHTMLFooter[$this->page][$OE]['html'] = $this->HTMLFooterE['html'] ;
12149 }
12150 else {
12151 $this->saveHTMLFooter[$this->page][$OE]['html'] = $this->HTMLFooter['html'] ;
12152 }
12153 if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
12154 $this->saveHTMLFooter[$this->page][$OE]['rotate'] = true;
12155 $this->saveHTMLFooter[$this->page][$OE]['ml'] = $this->tMargin;
12156 $this->saveHTMLFooter[$this->page][$OE]['mr'] = $this->bMargin;
12157 $this->saveHTMLFooter[$this->page][$OE]['mt'] = $this->rMargin;
12158 $this->saveHTMLFooter[$this->page][$OE]['mb'] = $this->lMargin;
12159 $this->saveHTMLFooter[$this->page][$OE]['mh'] = $this->margin_header;
12160 $this->saveHTMLFooter[$this->page][$OE]['mf'] = $this->margin_footer;
12161 $this->saveHTMLFooter[$this->page][$OE]['pw'] = $this->h;
12162 $this->saveHTMLFooter[$this->page][$OE]['ph'] = $this->w;
12163 }
12164 else {
12165 $this->saveHTMLFooter[$this->page][$OE]['ml'] = $this->lMargin;
12166 $this->saveHTMLFooter[$this->page][$OE]['mr'] = $this->rMargin;
12167 $this->saveHTMLFooter[$this->page][$OE]['mt'] = $this->tMargin;
12168 $this->saveHTMLFooter[$this->page][$OE]['mb'] = $this->bMargin;
12169 $this->saveHTMLFooter[$this->page][$OE]['mh'] = $this->margin_header;
12170 $this->saveHTMLFooter[$this->page][$OE]['mf'] = $this->margin_footer;
12171 $this->saveHTMLFooter[$this->page][$OE]['pw'] = $this->w;
12172 $this->saveHTMLFooter[$this->page][$OE]['ph'] = $this->h;
12173 }
12174}
12175/*-- END HTMLHEADERS-FOOTERS --*/
12176
12177function DefHeaderByName($name,$arr) {
12178 if (!$name) { $name = '_default'; }
12179 $this->pageheaders[$name] = $arr;
12180}
12181
12182function DefFooterByName($name,$arr) {
12183 if (!$name) { $name = '_default'; }
12184 $this->pagefooters[$name] = $arr;
12185}
12186
12187function SetHeaderByName($name,$side='O',$write=false) {
12188 if (!$name) { $name = '_default'; }
12189 if ($side=='E') { $this->headerDetails['even'] = $this->pageheaders[$name]; }
12190 else { $this->headerDetails['odd'] = $this->pageheaders[$name]; }
12191 if ($write) { $this->Header(); }
12192}
12193
12194function SetFooterByName($name,$side='O') {
12195 if (!$name) { $name = '_default'; }
12196 if ($side=='E') { $this->footerDetails['even'] = $this->pagefooters[$name]; }
12197 else { $this->footerDetails['odd'] = $this->pagefooters[$name]; }
12198}
12199
12200/*-- HTMLHEADERS-FOOTERS --*/
12201function DefHTMLHeaderByName($name,$html) {
12202 if (!$name) { $name = '_default'; }
12203
12204 $this->pageHTMLheaders[$name]['html'] = $html;
12205 $this->pageHTMLheaders[$name]['h'] = $this->_gethtmlheight($html);
12206}
12207
12208function DefHTMLFooterByName($name,$html) {
12209 if (!$name) { $name = '_default'; }
12210
12211 $this->pageHTMLfooters[$name]['html'] = $html;
12212 $this->pageHTMLfooters[$name]['h'] = $this->_gethtmlheight($html);
12213}
12214
12215function SetHTMLHeaderByName($name,$side='O',$write=false) {
12216 if (!$name) { $name = '_default'; }
12217 $this->SetHTMLHeader($this->pageHTMLheaders[$name],$side,$write);
12218}
12219
12220function SetHTMLFooterByName($name,$side='O') {
12221 if (!$name) { $name = '_default'; }
12222 $this->SetHTMLFooter($this->pageHTMLfooters[$name],$side,$write);
12223}
12224/*-- END HTMLHEADERS-FOOTERS --*/
12225
12226
12227function SetHeader($Harray=array(),$side='',$write=false) {
12228 if (is_string($Harray)) {
12229 if (strlen($Harray)==0) {
12230 if ($side=='O') { $this->headerDetails['odd'] = array(); }
12231 else if ($side=='E') { $this->headerDetails['even'] = array(); }
12232 else { $this->headerDetails = array(); }
12233 }
12234 else if (strpos($Harray,'|') || strpos($Harray,'|')===0) {
12235 $hdet = explode('|',$Harray);
12236 $this->headerDetails = array (
12237 'odd' => array (
12238 'L' => array ('content' => $hdet[0], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
12239 'C' => array ('content' => $hdet[1], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
12240 'R' => array ('content' => $hdet[2], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
12241 'line' => $this->defaultheaderline,
12242 ),
12243 'even' => array (
12244 'R' => array ('content' => $hdet[0], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
12245 'C' => array ('content' => $hdet[1], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
12246 'L' => array ('content' => $hdet[2], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
12247 'line' => $this->defaultheaderline,
12248 )
12249 );
12250 }
12251 else {
12252 $this->headerDetails = array (
12253 'odd' => array (
12254 'R' => array ('content' => $Harray, 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
12255 'line' => $this->defaultheaderline,
12256 ),
12257 'even' => array (
12258 'L' => array ('content' => $Harray, 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
12259 'line' => $this->defaultheaderline,
12260 )
12261 );
12262 }
12263 }
12264 else if (is_array($Harray)) {
12265 if ($side=='O') { $this->headerDetails['odd'] = $Harray; }
12266 else if ($side=='E') { $this->headerDetails['even'] = $Harray; }
12267 else { $this->headerDetails = $Harray; }
12268 }
12269/*-- HTMLHEADERS-FOOTERS --*/
12270 // Overwrite any HTML Header previously set
12271 if ($side=='E') { $this->SetHTMLHeader('','E'); }
12272 else if ($side=='O') { $this->SetHTMLHeader(''); }
12273 else {
12274 $this->SetHTMLHeader('');
12275 $this->SetHTMLHeader('','E');
12276 }
12277/*-- END HTMLHEADERS-FOOTERS --*/
12278
12279 if ($write) {
12280 $save_y = $this->y;
12281 $this->Header();
12282 $this->SetY($save_y) ;
12283 }
12284}
12285
12286
12287
12288
12289function SetFooter($Farray=array(),$side='') {
12290 if (is_string($Farray)) {
12291 if (strlen($Farray)==0) {
12292 if ($side=='O') { $this->footerDetails['odd'] = array(); }
12293 else if ($side=='E') { $this->footerDetails['even'] = array(); }
12294 else { $this->footerDetails = array(); }
12295 }
12296 else if (strpos($Farray,'|') || strpos($Farray,'|')===0) {
12297 $fdet = explode('|',$Farray);
12298 $this->footerDetails = array (
12299 'odd' => array (
12300 'L' => array ('content' => $fdet[0], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
12301 'C' => array ('content' => $fdet[1], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
12302 'R' => array ('content' => $fdet[2], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
12303 'line' => $this->defaultfooterline,
12304 ),
12305 'even' => array (
12306 'R' => array ('content' => $fdet[0], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
12307 'C' => array ('content' => $fdet[1], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
12308 'L' => array ('content' => $fdet[2], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
12309 'line' => $this->defaultfooterline,
12310 )
12311 );
12312 }
12313 else {
12314 $this->footerDetails = array (
12315 'odd' => array (
12316 'R' => array ('content' => $Farray, 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
12317 'line' => $this->defaultfooterline,
12318 ),
12319 'even' => array (
12320 'L' => array ('content' => $Farray, 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
12321 'line' => $this->defaultfooterline,
12322 )
12323 );
12324 }
12325 }
12326 else if (is_array($Farray)) {
12327 if ($side=='O') { $this->footerDetails['odd'] = $Farray; }
12328 else if ($side=='E') { $this->footerDetails['even'] = $Farray; }
12329 else { $this->footerDetails = $Farray; }
12330 }
12331/*-- HTMLHEADERS-FOOTERS --*/
12332 // Overwrite any HTML Footer previously set
12333 if ($side=='E') { $this->SetHTMLFooter('','E'); }
12334 else if ($side=='O') { $this->SetHTMLFooter(''); }
12335 else {
12336 $this->SetHTMLFooter('');
12337 $this->SetHTMLFooter('','E');
12338 }
12339/*-- END HTMLHEADERS-FOOTERS --*/
12340}
12341
12342/*-- WATERMARK --*/
12343function setUnvalidatedText($txt='', $alpha=-1) {
12344 if ($alpha>=0) $this->watermarkTextAlpha = $alpha;
12345 $this->watermarkText = $txt;
12346}
12347function SetWatermarkText($txt='', $alpha=-1) {
12348 if ($alpha>=0) $this->watermarkTextAlpha = $alpha;
12349 $this->watermarkText = $txt;
12350}
12351
12352function SetWatermarkImage($src, $alpha=-1, $size='D', $pos='F') {
12353 if ($alpha>=0) $this->watermarkImageAlpha = $alpha;
12354 $this->watermarkImage = $src;
12355 $this->watermark_size = $size;
12356 $this->watermark_pos = $pos;
12357}
12358/*-- END WATERMARK --*/
12359
12360
12361//Page footer
12362function Footer() {
12363/*-- CSS-PAGE --*/
12364 // PAGED MEDIA - CROP / CROSS MARKS from @PAGE
12365 if ($this->show_marks == 'CROP' || $this->show_marks == 'CROPCROSS') {
12366 // Show TICK MARKS
12367 $this->SetLineWidth(0.1); // = 0.1 mm
12368 $this->SetDColor($this->ConvertColor(0));
12369 $l = $this->cropMarkLength;
12370 $m = $this->cropMarkMargin; // Distance of crop mark from margin
12371 $b = $this->nonPrintMargin; // Non-printable border at edge of paper sheet
12372 $ax1 = $b;
12373 $bx = $this->page_box['outer_width_LR'] - $m;
12374 $ax = max($ax1, $bx-$l);
12375 $cx1 = $this->w - $b;
12376 $dx = $this->w - $this->page_box['outer_width_LR'] + $m;
12377 $cx = min($cx1, $dx+$l);
12378 $ay1 = $b;
12379 $by = $this->page_box['outer_width_TB'] - $m;
12380 $ay = max($ay1, $by-$l);
12381 $cy1 = $this->h - $b;
12382 $dy = $this->h - $this->page_box['outer_width_TB'] + $m;
12383 $cy = min($cy1, $dy+$l);
12384
12385 $this->Line($ax, $this->page_box['outer_width_TB'], $bx, $this->page_box['outer_width_TB']);
12386 $this->Line($cx, $this->page_box['outer_width_TB'], $dx, $this->page_box['outer_width_TB']);
12387 $this->Line($ax, $this->h - $this->page_box['outer_width_TB'], $bx, $this->h - $this->page_box['outer_width_TB']);
12388 $this->Line($cx, $this->h - $this->page_box['outer_width_TB'], $dx, $this->h - $this->page_box['outer_width_TB']);
12389 $this->Line($this->page_box['outer_width_LR'], $ay, $this->page_box['outer_width_LR'], $by);
12390 $this->Line($this->page_box['outer_width_LR'], $cy, $this->page_box['outer_width_LR'], $dy);
12391 $this->Line($this->w - $this->page_box['outer_width_LR'], $ay, $this->w - $this->page_box['outer_width_LR'], $by);
12392 $this->Line($this->w - $this->page_box['outer_width_LR'], $cy, $this->w - $this->page_box['outer_width_LR'], $dy);
12393
12394 if ($this->printers_info) {
12395 $hd = date('Y-m-d H:i').' Page '.$this->page.' of {nb}';
12396 $this->SetTColor($this->ConvertColor(0));
12397 $this->SetFont('arial','',7.5,true,true);
12398 $this->x = $this->page_box['outer_width_LR'] + 1.5;
12399 $this->y = 1;
12400 $this->Cell($headerpgwidth ,$this->FontSize,$hd,0,0,'L',0,'',0,0,0,'M');
12401 $this->SetFont($this->default_font,'',$this->original_default_font_size);
12402 }
12403
12404 }
12405 if ($this->show_marks == 'CROSS' || $this->show_marks == 'CROPCROSS') {
12406 $this->SetLineWidth(0.1); // = 0.1 mm
12407 $this->SetDColor($this->ConvertColor(0));
12408 $l = 14 /2; // longer length of the cross line (half)
12409 $w = 6 /2; // shorter width of the cross line (half)
12410 $r = 1.2; // radius of circle
12411 $m = $this->crossMarkMargin; // Distance of cross mark from margin
12412 $x1 = $this->page_box['outer_width_LR'] - $m;
12413 $x2 = $this->w - $this->page_box['outer_width_LR'] + $m;
12414 $y1 = $this->page_box['outer_width_TB'] - $m;
12415 $y2 = $this->h - $this->page_box['outer_width_TB'] + $m;
12416 // Left
12417 $this->Circle($x1, $this->h/2, $r, 'S') ;
12418 $this->Line($x1-$w, $this->h/2, $x1+$w, $this->h/2);
12419 $this->Line($x1, $this->h/2-$l, $x1, $this->h/2+$l);
12420 // Right
12421 $this->Circle($x2, $this->h/2, $r, 'S') ;
12422 $this->Line($x2-$w, $this->h/2, $x2+$w, $this->h/2);
12423 $this->Line($x2, $this->h/2-$l, $x2, $this->h/2+$l);
12424 // Top
12425 $this->Circle($this->w/2, $y1, $r, 'S') ;
12426 $this->Line($this->w/2, $y1-$w, $this->w/2, $y1+$w);
12427 $this->Line($this->w/2-$l, $y1, $this->w/2+$l, $y1);
12428 // Bottom
12429 $this->Circle($this->w/2, $y2, $r, 'S') ;
12430 $this->Line($this->w/2, $y2-$w, $this->w/2, $y2+$w);
12431 $this->Line($this->w/2-$l, $y2, $this->w/2+$l, $y2);
12432 }
12433
12434
12435 // If @page set non-HTML headers/footers named, they were not read until later in the HTML code - so now set them
12436 if ($this->page==1) {
12437 if ($this->firstPageBoxHeader) {
12438 $this->headerDetails['odd'] = $this->pageheaders[$this->firstPageBoxHeader];
12439 $this->Header();
12440 }
12441 if ($this->firstPageBoxFooter) {
12442 $this->footerDetails['odd'] = $this->pagefooters[$this->firstPageBoxFooter];
12443 }
12444 $this->firstPageBoxHeader='';
12445 $this->firstPageBoxFooter='';
12446 }
12447/*-- END CSS-PAGE --*/
12448
12449
12450
12451/*-- HTMLHEADERS-FOOTERS --*/
12452 if (($this->mirrorMargins && ($this->page%2==0) && $this->HTMLFooterE) || ($this->mirrorMargins && ($this->page%2==1) && $this->HTMLFooter) || (!$this->mirrorMargins && $this->HTMLFooter)) {
12453 $this->writeHTMLFooters();
12454/*-- WATERMARK --*/
12455 if (($this->watermarkText) && ($this->showWatermarkText)) {
12456 $this->watermark( $this->watermarkText, 45, 120, $this->watermarkTextAlpha); // Watermark text
12457 }
12458 if (($this->watermarkImage) && ($this->showWatermarkImage)) {
12459 $this->watermarkImg( $this->watermarkImage, $this->watermarkImageAlpha); // Watermark image
12460 }
12461/*-- END WATERMARK --*/
12462 return;
12463 }
12464/*-- END HTMLHEADERS-FOOTERS --*/
12465
12466 $this->processingHeader=true;
12467 $this->ResetMargins(); // necessary after columns
12468 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
12469/*-- WATERMARK --*/
12470 if (($this->watermarkText) && ($this->showWatermarkText)) {
12471 $this->watermark( $this->watermarkText, 45, 120, $this->watermarkTextAlpha); // Watermark text
12472 }
12473 if (($this->watermarkImage) && ($this->showWatermarkImage)) {
12474 $this->watermarkImg( $this->watermarkImage, $this->watermarkImageAlpha); // Watermark image
12475 }
12476/*-- END WATERMARK --*/
12477 $h = $this->footerDetails;
12478 if(count($h)) {
12479
12480 if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
12481 $this->_out(sprintf('q 0 -1 1 0 0 %.3F cm ',($this->h*_MPDFK)));
12482 $headerpgwidth = $this->h - $this->orig_lMargin - $this->orig_rMargin;
12483 if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN
12484 $headerlmargin = $this->orig_rMargin;
12485 }
12486 else {
12487 $headerlmargin = $this->orig_lMargin;
12488 }
12489 }
12490 else {
12491 $yadj = 0;
12492 $headerpgwidth = $this->pgwidth;
12493 $headerlmargin = $this->lMargin;
12494 }
12495 $this->SetY(-$this->margin_footer);
12496
12497 $this->SetTColor($this->ConvertColor(0));
12498 $this->SUP = false;
12499 $this->SUB = false;
12500 $this->bullet = false;
12501
12502 // only show pagenumber if numbering on
12503 $pgno = $this->docPageNum($this->page, true);
12504
12505 if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN
12506 $side = 'even';
12507 }
12508 else { // ODD // OR NOT MIRRORING MARGINS/FOOTERS = DEFAULT
12509 $side = 'odd';
12510 }
12511 $maxfontheight = 0;
12512 foreach(array('L','C','R') AS $pos) {
12513 if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
12514 if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
12515 else { $hfsz = $this->default_font_size; }
12516 $maxfontheight = max($maxfontheight,$hfsz);
12517 }
12518 }
12519 // LEFT-CENTER-RIGHT
12520 foreach(array('L','C','R') AS $pos) {
12521 if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
12522 $hd = str_replace('{PAGENO}',$pgno,$h[$side][$pos]['content']);
12523 $hd = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->aliasNbPgGp.$this->nbpgSuffix,$hd);
12524 $hd = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$hd); // mPDF 5.7
12525 if (isset($h[$side][$pos]['font-family']) && $h[$side][$pos]['font-family']) { $hff = $h[$side][$pos]['font-family']; }
12526 else { $hff = $this->original_default_font; }
12527 if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
12528 else { $hfsz = $this->original_default_font_size; }
12529 $maxfontheight = max($maxfontheight,$hfsz);
12530 if (isset($h[$side][$pos]['font-style']) && $h[$side][$pos]['font-style']) { $hfst = $h[$side][$pos]['font-style']; }
12531 else { $hfst = ''; }
12532 if (isset($h[$side][$pos]['color']) && $h[$side][$pos]['color']) {
12533 $hfcol = $h[$side][$pos]['color'];
12534 $cor = $this->ConvertColor($hfcol);
12535 if ($cor) { $this->SetTColor($cor); }
12536 }
12537 else { $hfcol = ''; }
12538 $this->SetFont($hff,$hfst,$hfsz,true,true);
12539 $this->x = $headerlmargin ;
12540 $this->y = $this->h - $this->margin_footer - ($maxfontheight/_MPDFK);
12541 $hd = $this->purify_utf8_text($hd);
12542 if ($this->text_input_as_HTML) {
12543 $hd = $this->all_entities_to_utf8($hd);
12544 }
12545 // CONVERT CODEPAGE
12546 if ($this->usingCoreFont) { $hd = mb_convert_encoding($hd,$this->mb_enc,'UTF-8'); }
12547 // DIRECTIONALITY RTL
12548 $this->magic_reverse_dir($hd, true, $this->directionality); // *RTL*
12549 // Font-specific ligature substitution for Indic fonts
12550 if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($hd); // *INDIC*
12551 $align = $pos;
12552 if ($this->directionality == 'rtl') {
12553 if ($pos == 'L') { $align = 'R'; }
12554 else if ($pos == 'R') { $align = 'L'; }
12555 }
12556
12557 if ($pos!='L' && (strpos($hd,$this->aliasNbPg)!==false || strpos($hd,$this->aliasNbPgGp)!==false)) {
12558 if (strpos($hd,$this->aliasNbPgGp)!==false) { $type= 'nbpggp'; } else { $type= 'nbpg'; }
12559 $this->_out('{mpdfheader'.$type.' '.$pos.' ff='.$hff.' fs='.$hfst.' fz='.$hfsz.'}');
12560 $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
12561 $this->_out('Q');
12562 }
12563 else {
12564 $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
12565 }
12566 if ($hfcol) { $this->SetTColor($this->ConvertColor(0)); }
12567 }
12568 }
12569 // Return Font to normal
12570 $this->SetFont($this->default_font,'',$this->original_default_font_size);
12571
12572 // LINE
12573
12574 if (isset($h[$side]['line']) && $h[$side]['line']) {
12575 $this->SetLineWidth(0.1);
12576 $this->SetDColor($this->ConvertColor(0));
12577 $this->Line($headerlmargin , $this->y-($maxfontheight*($this->footer_line_spacing)/_MPDFK), $headerlmargin +$headerpgwidth, $this->y-($maxfontheight*($this->footer_line_spacing)/_MPDFK));
12578 }
12579 if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
12580 $this->_out('Q');
12581 }
12582 }
12583 $this->processingHeader=false;
12584
12585}
12586
12587///////////////////
12588// HYPHENATION
12589///////////////////
12590// mPDF 5.6.21
12591// Hard hyphens
12592function hardHyphenate($word, $maxWidth) {
12593 // Don't hyphenate web addresses
12594 if (preg_match('/^(http:|www\.)/',$word)) { return array(false,'','',''); }
12595
12596 // Get dictionary
12597 $poss = array();
12598 $softhyphens = array();
12599 $offset = 0;
12600 $p = true;
12601 if ($this->usingCoreFont) {
12602 $wl = strlen($word);
12603 }
12604 else {
12605 $wl = mb_strlen($word,'UTF-8');
12606 }
12607 while($offset < $wl) {
12608 if (!$this->usingCoreFont) {
12609 $p = mb_strpos($word, "-", $offset, 'UTF-8');
12610 }
12611 else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
12612 $p = strpos($word, "-", $offset);
12613 }
12614 if ($p !== false) { $poss[] = $p; } // mPDF 5.7.2
12615 else { break; }
12616 $offset = $p+1;
12617 }
12618 $success = false;
12619 foreach($poss AS $i) {
12620 if ($this->usingCoreFont) {
12621 $a = substr($word,0,$i);
12622 if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
12623 $pre = $a;
12624 $post = substr($word,$i,strlen($word));
12625 $prelength = strlen($pre);
12626 }
12627 else {
12628 $a = mb_substr($word,0,$i,'UTF-8');
12629 if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
12630 $pre = $a;
12631 $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8');
12632 $prelength = mb_strlen($pre, 'UTF-8');
12633 }
12634 $success = true;
12635 }
12636 return array($success,$pre,$post,$prelength);
12637}
12638
12639
12640/*-- HYPHENATION --*/
12641///////////////////
12642///////////////////
12643// HYPHENATION
12644///////////////////
12645// Soft hyphs
12646function softHyphenate($word, $maxWidth) {
12647 // Don't hyphenate web addresses
12648 if (preg_match('/^(http:|www\.)/',$word)) { return array(false,'','',''); }
12649
12650 // Get dictionary
12651 $poss = array();
12652 $softhyphens = array();
12653 $offset = 0;
12654 $p = true;
12655 if ($this->usingCoreFont) {
12656 $wl = strlen($word);
12657 }
12658 else {
12659 $wl = mb_strlen($word,'UTF-8');
12660 }
12661 while($offset < $wl) {
12662 // Soft Hyphens chr(173)
12663 if (!$this->usingCoreFont) {
12664 $p = mb_strpos($word, "\xc2\xad", $offset, 'UTF-8');
12665 }
12666 else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
12667 $p = strpos($word, chr(173), $offset);
12668 }
12669 // mPDF 5.7.2
12670 //if ($p !== false) { $poss[] = $p - count($poss); }
12671 if ($p !== false) { $poss[] = $p; }
12672 else { break; }
12673 $offset = $p+1;
12674 }
12675 $success = false;
12676 foreach($poss AS $i) {
12677 if ($this->usingCoreFont) {
12678 $a = substr($word,0,$i);
12679 if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
12680 $pre = $a;
12681 $post = substr($word,$i,strlen($word));
12682 $prelength = strlen($pre);
12683 }
12684 else {
12685 $a = mb_substr($word,0,$i,'UTF-8');
12686 if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
12687 $pre = $a;
12688 $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8');
12689 $prelength = mb_strlen($pre, 'UTF-8');
12690 }
12691 $success = true;
12692 }
12693 return array($success,$pre,$post,$prelength);
12694}
12695
12696///////////////////
12697// Word hyphenation
12698function hyphenateWord($word, $maxWidth) {
12699 // Do everything inside this function in utf-8
12700 // Don't hyphenate web addresses
12701 if (preg_match('/^(http:|www\.)/',$word)) { return array(false,'','',''); }
12702
12703
12704 // Get dictionary
12705 if (!$this->loadedSHYdictionary) {
12706 if (file_exists(_MPDF_PATH.'patterns/dictionary.txt')) {
12707 $this->SHYdictionary = file(_MPDF_PATH.'patterns/dictionary.txt',FILE_SKIP_EMPTY_LINES);
12708 foreach($this->SHYdictionary as $entry) {
12709 $entry = trim($entry);
12710 $poss = array();
12711 $offset = 0;
12712 $p = true;
12713 $wl = mb_strlen($entry ,'UTF-8');
12714 while($offset < $wl) {
12715 $p = mb_strpos($entry, '/', $offset, 'UTF-8');
12716 if ($p !== false) { $poss[] = $p - count($poss); }
12717 else { break; }
12718 $offset = $p+1;
12719 }
12720 if (count($poss)) { $this->SHYdictionaryWords[str_replace('/', '', mb_strtolower($entry))] = $poss; }
12721 }
12722 }
12723 $this->loadedSHYdictionary = true;
12724 }
12725
12726 if (!in_array($this->SHYlang,$this->SHYlanguages)) { return array(false,'','',''); }
12727 // If no pattern loaded or not the best one
12728 if (count($this->SHYpatterns) < 1 || ($this->loadedSHYpatterns && $this->loadedSHYpatterns != $this->SHYlang)) {
12729 include(_MPDF_PATH."patterns/" . $this->SHYlang . ".php");
12730 $patterns = explode(' ', $patterns);
12731 $new_patterns = array();
12732 for($i = 0; $i < count($patterns); $i++) {
12733 $value = $patterns[$i];
12734 $new_patterns[preg_replace('/[0-9]/', '', $value)] = $value;
12735 }
12736 $this->SHYpatterns = $new_patterns;
12737 $this->loadedSHYpatterns = $this->SHYlang;
12738 }
12739
12740 if ($this->usingCoreFont) { $word = mb_convert_encoding($word,'UTF-8',$this->mb_enc); }
12741
12742 $prepre = '';
12743 $postpost = '';
12744 $startpunctuation = "\xc2\xab\xc2\xbf\xe2\x80\x98\xe2\x80\x9b\xe2\x80\x9c\xe2\x80\x9f";
12745 $endpunctuation = "\xe2\x80\x9e\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x99\xc2\xbb";
12746 $pre = '';
12747 $post = '';
12748
12749
12750 if (preg_match('/^(["\''.$startpunctuation .'])+(.{'.$this->SHYcharmin.',})$/u',$word,$m)) {
12751 $prepre = $m[1];
12752 $word = $m[2];
12753 }
12754 if (preg_match('/^(.{'.$this->SHYcharmin.',})([\'\.,;:!?"'.$endpunctuation .']+)$/u',$word,$m)) {
12755 $word = $m[1];
12756 $postpost = $m[2];
12757 }
12758 if(mb_strlen($word,'UTF-8') < $this->SHYcharmin) {
12759 return array(false,'','','');
12760 }
12761 $success = false;
12762
12763 if(isset($this->SHYdictionaryWords[mb_strtolower($word)])) {
12764 foreach($this->SHYdictionaryWords[mb_strtolower($word)] AS $i) {
12765 $a = $prepre . mb_substr($word,0,$i,'UTF-8');
12766 if ($this->usingCoreFont) { $testa = mb_convert_encoding($a,$this->mb_enc,'UTF-8'); }
12767 else { $testa = $a; }
12768 if ($this->GetStringWidth($testa.'-') > $maxWidth) { break ; }
12769 $pre = $a;
12770 $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8') . $postpost;
12771 $success = true;
12772 }
12773 }
12774
12775 if (!$success) {
12776 $text_word = '_' . $word . '_';
12777 $word_length = mb_strlen($text_word,'UTF-8');
12778
12779 $single_character = preg_split('//u', $text_word);
12780
12781 $text_word = mb_strtolower($text_word,'UTF-8');
12782 $hyphenated_word = array();
12783 $numb3rs = array('0' => true, '1' => true, '2' => true, '3' => true, '4' => true, '5' => true, '6' => true, '7' => true, '8' => true, '9' => true);
12784 for($position = 0; $position <= ($word_length - $this->SHYcharmin); $position++) {
12785 $maxwins = min(($word_length - $position), $this->SHYcharmax);
12786 for($win = $this->SHYcharmin; $win <= $maxwins; $win++) {
12787 if(isset($this->SHYpatterns[mb_substr($text_word, $position, $win,'UTF-8')])) {
12788 $pattern = $this->SHYpatterns[mb_substr($text_word, $position, $win,'UTF-8')];
12789 $digits = 1;
12790 $pattern_length = mb_strlen($pattern,'UTF-8');
12791 for($i = 0; $i < $pattern_length; $i++) {
12792 $char = $pattern[$i];
12793 if(isset($numb3rs[$char])) {
12794 $zero = ($i == 0) ? $position - 1 : $position + $i - $digits;
12795 if(!isset($hyphenated_word[$zero]) || $hyphenated_word[$zero] != $char) $hyphenated_word[$zero] = $char;
12796 $digits++;
12797 }
12798 }
12799 }
12800 }
12801 }
12802
12803 for($i = $this->SHYleftmin; $i <= (mb_strlen($word,'UTF-8') - $this->SHYrightmin); $i++) {
12804 if(isset($hyphenated_word[$i]) && $hyphenated_word[$i] % 2 != 0) {
12805 $a = $prepre . mb_substr($word,0,$i,'UTF-8');
12806 if ($this->usingCoreFont) { $testa = mb_convert_encoding($a,$this->mb_enc,'UTF-8'); }
12807 else { $testa = $a; }
12808 if ($this->GetStringWidth($testa.'-') > $maxWidth + 0.0001) { break ; }
12809 $pre = $a;
12810 $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8') . $postpost;
12811 $success = true;
12812 }
12813 }
12814 }
12815 if ($this->usingCoreFont) {
12816 $pre = mb_convert_encoding($pre,$this->mb_enc,'UTF-8');
12817 $post = mb_convert_encoding($post,$this->mb_enc,'UTF-8');
12818 $prelength = strlen($pre);
12819 }
12820 else {
12821 $prelength = mb_strlen($pre);
12822 }
12823 return array($success,$pre,$post,$prelength);
12824
12825}
12826/*-- END HYPHENATION --*/
12827
12828
12829/*-- HTML-CSS --*/
12830///////////////////
12831/// HTML parser ///
12832///////////////////
12833function WriteHTML($html,$sub=0,$init=true,$close=true) {
12834 // $sub ADDED - 0 = default; 1=headerCSS only; 2=HTML body (parts) only; 3 - HTML parses only
12835 // 4 - writes HTML headers
12836 // $close Leaves buffers etc. in current state, so that it can continue a block etc.
12837 // $init - Clears and sets buffers to Top level block etc.
12838
12839 if (empty($html)) { $html = ''; }
12840 if ($this->progressBar) { $this->UpdateProgressBar(1,0,'Parsing CSS & Headers'); } // *PROGRESS-BAR*
12841
12842 if ($init) {
12843 $this->headerbuffer='';
12844 $this->textbuffer = array();
12845 $this->fixedPosBlockSave = array();
12846 }
12847 if ($sub == 1) { $html = '<style> '.$html.' </style>'; } // stylesheet only
12848
12849 if ($this->allow_charset_conversion) {
12850 if ($sub < 1) {
12851 $this->ReadCharset($html);
12852 }
12853 if ($this->charset_in && $sub!=4) { // mPDF 5.4.14
12854 $success = iconv($this->charset_in,'UTF-8//TRANSLIT',$html);
12855 if ($success) { $html = $success; }
12856 }
12857 }
12858 $html = $this->purify_utf8($html,false);
12859 if ($init) {
12860 $this->blklvl = 0;
12861 $this->lastblocklevelchange = 0;
12862 $this->blk = array();
12863 $this->initialiseBlock($this->blk[0]);
12864 $this->blk[0]['width'] =& $this->pgwidth;
12865 $this->blk[0]['inner_width'] =& $this->pgwidth;
12866 $this->blk[0]['blockContext'] = $this->blockContext;
12867 }
12868
12869 $zproperties = array();
12870 if ($sub < 2) {
12871 $this->ReadMetaTags($html);
12872
12873 // mPDF 5.6.18
12874 if (preg_match('/<base[^>]*href=["\']([^"\'>]*)["\']/i', $html, $m)) {
12875 $this->SetBasePath($m[1]);
12876 }
12877 // NB default stylesheet now in mPDF.css - read on initialising class
12878 $html = $this->cssmgr->ReadCSS($html);
12879
12880 if ($this->useLang && !$this->usingCoreFont && preg_match('/<html [^>]*lang=[\'\"](.*?)[\'\"]/ism',$html,$m)) {
12881 $html_lang = $m[1];
12882 }
12883
12884 if (preg_match('/<html [^>]*dir=[\'\"]\s*rtl\s*[\'\"]/ism',$html)) {
12885 $zproperties['DIRECTION'] = 'rtl';
12886 }
12887
12888 // allow in-line CSS for body tag to be parsed // Get <body> tag inline CSS
12889 if (preg_match('/<body([^>]*)>(.*?)<\/body>/ism',$html,$m) || preg_match('/<body([^>]*)>(.*)$/ism',$html,$m)) {
12890 $html = $m[2];
12891 // Changed to allow style="background: url('bg.jpg')"
12892 if (preg_match('/style=[\"](.*?)[\"]/ism',$m[1],$mm) || preg_match('/style=[\'](.*?)[\']/ism',$m[1],$mm)) {
12893 $zproperties = $this->cssmgr->readInlineCSS($mm[1]);
12894 }
12895 if (preg_match('/dir=[\'\"]\s*rtl\s*[\'\"]/ism',$m[1])) {
12896 $zproperties['DIRECTION'] = 'rtl';
12897 }
12898 if (isset($html_lang) && $html_lang) { $zproperties['LANG'] = $html_lang; }
12899 if ($this->useLang && !$this->onlyCoreFonts && preg_match('/lang=[\'\"](.*?)[\'\"]/ism',$m[1],$mm)) {
12900 $zproperties['LANG'] = $mm[1];
12901 }
12902
12903 }
12904 }
12905 $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
12906 if ($zproperties) { $properties = $this->cssmgr->array_merge_recursive_unique($properties,$zproperties); }
12907
12908 if (isset($properties['DIRECTION']) && $properties['DIRECTION']) {
12909 $this->cssmgr->CSS['BODY']['DIRECTION'] = $properties['DIRECTION'];
12910 }
12911 if (!isset($this->cssmgr->CSS['BODY']['DIRECTION'])) {
12912 $this->cssmgr->CSS['BODY']['DIRECTION'] = $this->directionality;
12913 }
12914 else { $this->SetDirectionality($this->cssmgr->CSS['BODY']['DIRECTION']); }
12915
12916 $this->setCSS($properties,'','BODY');
12917 $this->blk[0]['InlineProperties'] = $this->saveInlineProperties();
12918
12919 if ($sub == 1) { return ''; }
12920 if (!isset($this->cssmgr->CSS['BODY'])) { $this->cssmgr->CSS['BODY'] = array(); }
12921
12922/*-- BACKGROUNDS --*/
12923 if (isset($properties['BACKGROUND-GRADIENT'])) {
12924 $this->bodyBackgroundGradient = $properties['BACKGROUND-GRADIENT'];
12925 }
12926
12927 if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE']) {
12928 $ret = $this->SetBackground($properties, $this->pgwidth);
12929 if ($ret) { $this->bodyBackgroundImage = $ret; }
12930 }
12931/*-- END BACKGROUNDS --*/
12932
12933/*-- CSS-PAGE --*/
12934 // If page-box is set
12935 if ($this->state==0 && isset($this->cssmgr->CSS['@PAGE']) && $this->cssmgr->CSS['@PAGE'] ) {
12936 $this->page_box['current'] = '';
12937 $this->page_box['using'] = true;
12938 list($pborientation,$pbmgl,$pbmgr,$pbmgt,$pbmgb,$pbmgh,$pbmgf,$hname,$fname,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat) = $this->SetPagedMediaCSS('', false, 'O');
12939 $this->DefOrientation = $this->CurOrientation = $pborientation;
12940 $this->orig_lMargin = $this->DeflMargin = $pbmgl;
12941 $this->orig_rMargin = $this->DefrMargin = $pbmgr;
12942 $this->orig_tMargin = $this->tMargin = $pbmgt;
12943 $this->orig_bMargin = $this->bMargin = $pbmgb;
12944 $this->orig_hMargin = $this->margin_header = $pbmgh;
12945 $this->orig_fMargin = $this->margin_footer = $pbmgf;
12946 list($pborientation,$pbmgl,$pbmgr,$pbmgt,$pbmgb,$pbmgh,$pbmgf,$hname,$fname,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat) = $this->SetPagedMediaCSS('', true, 'O'); // first page
12947 $this->show_marks = $marks;
12948 if ($hname && !preg_match('/^html_(.*)$/i',$hname)) $this->firstPageBoxHeader = $hname;
12949 if ($fname && !preg_match('/^html_(.*)$/i',$fname)) $this->firstPageBoxFooter = $fname;
12950 }
12951/*-- END CSS-PAGE --*/
12952
12953 $parseonly = false;
12954 $this->bufferoutput = false;
12955 if ($sub == 3) {
12956 $parseonly = true;
12957 // Close any open block tags
12958 for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
12959 // Output any text left in buffer
12960 if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); }
12961 $this->textbuffer=array();
12962 }
12963 else if ($sub == 4) {
12964 // Close any open block tags
12965 for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
12966 // Output any text left in buffer
12967 if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); }
12968 $this->bufferoutput = true;
12969 $this->textbuffer=array();
12970 $this->headerbuffer='';
12971 $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
12972 $this->setCSS($properties,'','BODY');
12973 }
12974
12975 mb_internal_encoding('UTF-8');
12976
12977 $html = $this->AdjustHTML($html, $this->tabSpaces); //Try to make HTML look more like XHTML
12978
12979 if ($this->autoFontGroups) { $html = $this->AutoFont($html); }
12980
12981/*-- HTMLHEADERS-FOOTERS --*/
12982 preg_match_all('/<htmlpageheader([^>]*)>(.*?)<\/htmlpageheader>/si',$html,$h);
12983 for($i=0;$i<count($h[1]);$i++) {
12984 if (preg_match('/name=[\'|\"](.*?)[\'|\"]/',$h[1][$i],$n)) {
12985 $this->pageHTMLheaders[$n[1]]['html'] = $h[2][$i];
12986 $this->pageHTMLheaders[$n[1]]['h'] = $this->_gethtmlheight($h[2][$i]);
12987 }
12988 }
12989 preg_match_all('/<htmlpagefooter([^>]*)>(.*?)<\/htmlpagefooter>/si',$html,$f);
12990 for($i=0;$i<count($f[1]);$i++) {
12991 if (preg_match('/name=[\'|\"](.*?)[\'|\"]/',$f[1][$i],$n)) {
12992 $this->pageHTMLfooters[$n[1]]['html'] = $f[2][$i];
12993 $this->pageHTMLfooters[$n[1]]['h'] = $this->_gethtmlheight($f[2][$i]);
12994 }
12995 }
12996/*-- END HTMLHEADERS-FOOTERS --*/
12997 $html = preg_replace('/<htmlpageheader.*?<\/htmlpageheader>/si','',$html);
12998 $html = preg_replace('/<htmlpagefooter.*?<\/htmlpagefooter>/si','',$html);
12999
13000 if($this->state==0 && $sub!=1 && $sub!=3 && $sub!=4) {
13001 $this->AddPage($this->CurOrientation);
13002 }
13003
13004
13005/*-- HTMLHEADERS-FOOTERS --*/
13006
13007 if (isset($hname) && preg_match('/^html_(.*)$/i',$hname,$n)) $this->SetHTMLHeader($this->pageHTMLheaders[$n[1]],'O',true);
13008 if (isset($fname) && preg_match('/^html_(.*)$/i',$fname,$n)) $this->SetHTMLFooter($this->pageHTMLfooters[$n[1]],'O');
13009
13010/*-- END HTMLHEADERS-FOOTERS --*/
13011
13012 $html=str_replace('<?','< ',$html); //Fix '<?XML' bug from HTML code generated by MS Word
13013
13014 $this->checkSIP = false;
13015 $this->checkSMP = false;
13016 $this->checkCJK = false;
13017 if ($this->onlyCoreFonts) { $html = $this->SubstituteChars($html); }
13018 else {
13019 if (preg_match("/([".$this->pregRTLchars."])/u", $html)) { $this->biDirectional = true; } // *RTL*
13020 if (preg_match("/([\x{20000}-\x{2FFFF}])/u", $html)) { $this->checkSIP = true; }
13021 if (preg_match("/([\x{10000}-\x{1FFFF}])/u", $html)) { $this->checkSMP = true; }
13022/*-- CJK-FONTS --*/
13023 if (preg_match("/([".$this->pregCJKchars."])/u", $html)) { $this->checkCJK = true; }
13024/*-- END CJK-FONTS --*/
13025 }
13026
13027 // Don't allow non-breaking spaces that are converted to substituted chars or will break anyway and mess up table width calc.
13028 $html = str_replace('<tta>160</tta>',chr(32),$html);
13029 $html = str_replace('</tta><tta>','|',$html);
13030 $html = str_replace('</tts><tts>','|',$html);
13031 $html = str_replace('</ttz><ttz>','|',$html);
13032
13033 //Add new supported tags in the DisableTags function
13034 $html=strip_tags($html,$this->enabledtags); //remove all unsupported tags, but the ones inside the 'enabledtags' string
13035
13036 //Explode the string in order to parse the HTML code
13037 $a=preg_split('/<(.*?)>/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
13038 // ? more accurate regexp that allows e.g. <a name="Silly <name>">
13039 // if changing - also change in fn.SubstituteChars()
13040 // $a = preg_split ('/<((?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+)>/ms', $html, -1, PREG_SPLIT_DELIM_CAPTURE);
13041
13042 if ($this->mb_enc) {
13043 mb_internal_encoding($this->mb_enc);
13044 }
13045 $pbc = 0;
13046 if ($this->progressBar) { $this->UpdateProgressBar(1,0); } // *PROGRESS-BAR*
13047 $this->subPos = -1;
13048 $cnt = count($a);
13049 for($i=0;$i<$cnt; $i++) {
13050 $e = $a[$i];
13051 if($i%2==0) {
13052 //TEXT
13053 if ($this->blk[$this->blklvl]['hide']) { continue; }
13054 if ($this->inlineDisplayOff) { continue; }
13055 if ($this->inMeter) { continue; } // mPDF 5.5.09
13056
13057 if ($this->inFixedPosBlock) { $this->fixedPosBlock .= $e; continue; } // *CSS-POSITION*
13058 if (strlen($e) == 0) { continue; }
13059
13060 $e = strcode2utf($e);
13061 $e = $this->lesser_entity_decode($e);
13062
13063 if ($this->usingCoreFont) {
13064 // If core font is selected in document which is not onlyCoreFonts - substitute with non-core font
13065 if ($this->useSubstitutions && !$this->onlyCoreFonts && $this->subPos<$i && !$this->specialcontent) {
13066 $cnt += $this->SubstituteCharsNonCore($a, $i, $e);
13067 }
13068 // CONVERT ENCODING
13069 $e = mb_convert_encoding($e,$this->mb_enc,'UTF-8');
13070 // mPDF 5.6.41
13071 if ($this->toupper) { $e = mb_strtoupper($e,$this->mb_enc); }
13072 if ($this->tolower) { $e = mb_strtolower($e,$this->mb_enc); }
13073 if ($this->capitalize) { $e = mb_convert_case($e, MB_CASE_TITLE, "UTF-8"); }
13074 }
13075 else {
13076 if ($this->checkSIP && $this->CurrentFont['sipext'] && $this->subPos<$i && !$this->specialcontent) {
13077 $cnt += $this->SubstituteCharsSIP($a, $i, $e);
13078 }
13079
13080 if ($this->useSubstitutions && !$this->onlyCoreFonts && $this->CurrentFont['type']!='Type0' && $this->subPos<$i && !$this->specialcontent) {
13081 // mPDF 5.6.62 removes U+200E/U+200F LTR and RTL mark and U+200C/U+200D Zero-width Joiner and Non-joiner
13082 $e = preg_replace("/[\xe2\x80\x8c\xe2\x80\x8d\xe2\x80\x8e\xe2\x80\x8f]/u",'',$e);
13083 $cnt += $this->SubstituteCharsMB($a, $i, $e);
13084 }
13085 if ($this->biDirectional) { // *RTL*
13086 // mPDF 5.7+
13087 $e = preg_replace_callback("/([".$this->pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $e ); // *RTL*
13088 } // *RTL*
13089 // Font-specific ligature substitution for Indic fonts
13090 if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($e); // *INDIC*
13091
13092 // mPDF 5.6.62 removes U+200E/U+200F LTR and RTL mark and U+200C/U+200D Zero-width Joiner and Non-joiner
13093 $e = preg_replace("/[\xe2\x80\x8c\xe2\x80\x8d\xe2\x80\x8e\xe2\x80\x8f]/u",'',$e);
13094
13095 if ($this->toupper) { $e = mb_strtoupper($e,$this->mb_enc); }
13096 if ($this->tolower) { $e = mb_strtolower($e,$this->mb_enc); }
13097 if ($this->capitalize) { $e = mb_convert_case($e, MB_CASE_TITLE, "UTF-8"); }
13098 }
13099 if (($this->tts) || ($this->ttz) || ($this->tta)) {
13100 $es = explode('|',$e);
13101 $e = '';
13102 foreach($es AS $val) {
13103 $e .= chr($val);
13104 }
13105 }
13106 //Adjust lineheight
13107
13108 // FORM ELEMENTS
13109 if ($this->specialcontent) {
13110/*-- FORMS --*/
13111 //SELECT tag (form element)
13112 if ($this->specialcontent == "type=select") {
13113 $e = ltrim($e);
13114 $stringwidth = $this->GetStringWidth($e);
13115 if (!isset($this->selectoption['MAXWIDTH']) || $stringwidth > $this->selectoption['MAXWIDTH']) { $this->selectoption['MAXWIDTH'] = $stringwidth; }
13116 if (!isset($this->selectoption['SELECTED']) || $this->selectoption['SELECTED'] == '') { $this->selectoption['SELECTED'] = $e; }
13117 // mPDD 1.4 Active Forms
13118 if (isset($this->selectoption['ACTIVE']) && $this->selectoption['ACTIVE']) {
13119 $this->selectoption['ITEMS'][]=array('exportValue'=>$this->selectoption['currentVAL'], 'content'=>$e, 'selected'=>$this->selectoption['currentSEL']);
13120 }
13121 }
13122 // TEXTAREA
13123 else {
13124 $objattr = unserialize($this->specialcontent);
13125 $objattr['text'] = $e;
13126 $te = "\xbb\xa4\xactype=textarea,objattr=".serialize($objattr)."\xbb\xa4\xac";
13127 if ($this->tdbegin) {
13128 $this->_saveCellTextBuffer($te, $this->HREF);
13129 }
13130 else {
13131 $this->_saveTextBuffer($te, $this->HREF);
13132 }
13133 }
13134/*-- END FORMS --*/
13135 }
13136
13137 // TABLE
13138 else if ($this->tableLevel) {
13139/*-- TABLES --*/
13140 if ($this->tdbegin) {
13141 if (($this->ignorefollowingspaces) && !$this->ispre) { $e = ltrim($e); }
13142 if ($e || $e==='0') {
13143 if (($this->blockjustfinished || $this->listjustfinished) && $this->cell[$this->row][$this->col]['s']>0) {
13144 $this->_saveCellTextBuffer("\n");
13145 if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
13146 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
13147 }
13148 elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
13149 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
13150 }
13151 $this->cell[$this->row][$this->col]['s'] = 0;// reset
13152 }
13153 $this->blockjustfinished=false;
13154 $this->listjustfinished=false;
13155
13156 $this->_saveCellTextBuffer($e, $this->HREF);
13157
13158 if (!isset($this->cell[$this->row][$this->col]['R']) || !$this->cell[$this->row][$this->col]['R']) {
13159 if (isset($this->cell[$this->row][$this->col]['s'])) {
13160 $this->cell[$this->row][$this->col]['s'] += $this->GetStringWidth($e, false);
13161 }
13162 else { $this->cell[$this->row][$this->col]['s'] = $this->GetStringWidth($e, false); }
13163 if (!empty($this->spanborddet)) {
13164 $this->cell[$this->row][$this->col]['s'] += $this->spanborddet['L']['w'] + $this->spanborddet['R']['w'];
13165 }
13166 }
13167
13168 if ($this->checkCJK && preg_match("/([".$this->pregCJKchars."])/u", $e)) { $this->tableCJK = true; } // *CJK-FONTS*
13169
13170 // mPDF 5.6.13 Decimal mark alignment
13171 if (substr($this->cell[$this->row][$this->col]['a'],0,1) == 'D') {
13172 $dp = $this->decimal_align[substr($this->cell[$this->row][$this->col]['a'],0,2)];
13173 $s = preg_split('/'.preg_quote($dp,'/').'/', $e, 2); // ? needs to be /u if not core
13174 $s0 = $this->GetStringWidth($s[0], false);
13175 if ($s[1]) { $s1 = $this->GetStringWidth(($s[1].$dp), false); }
13176 else $s1 = 0;
13177 if (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'])) {
13178 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'] = $s0;
13179 }
13180 else {
13181 $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']);
13182 }
13183 if (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'])) {
13184 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'] = $s1;
13185 }
13186 else {
13187 $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']);
13188 }
13189 }
13190
13191 if ($this->tableLevel==1 && $this->useGraphs) {
13192 $this->graphs[$this->currentGraphId]['data'][$this->row][$this->col] = $e;
13193 }
13194 $this->nestedtablejustfinished = false;
13195 $this->linebreakjustfinished=false;
13196 }
13197 }
13198/*-- END TABLES --*/
13199 }
13200 // ALL ELSE
13201 else {
13202 if ($this->ignorefollowingspaces and !$this->ispre) { $e = ltrim($e); }
13203 if ($e || $e==='0') $this->_saveTextBuffer($e, $this->HREF);
13204 }
13205 }
13206
13207
13208 else { // TAG **
13209
13210 if($e[0]=='/') {
13211/*-- PROGRESS-BAR --*/
13212 if ($this->progressBar) { // 10% increments
13213 if (intval($i*10/$cnt) != $pbc) { $pbc = intval($i*10/$cnt); $this->UpdateProgressBar(1,$pbc*10,$tag); }
13214 }
13215/*-- END PROGRESS-BAR --*/
13216
13217
13218 // Check for tags where HTML specifies optional end tags,
13219 // and/or does not allow nesting e.g. P inside P, or
13220 $endtag = trim(strtoupper(substr($e,1))); // mPDF 5.4.20
13221 if($this->blk[$this->blklvl]['hide']) {
13222 if (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags)) {
13223 unset($this->blk[$this->blklvl]);
13224 $this->blklvl--;
13225 }
13226 continue;
13227 }
13228
13229/*-- CSS-POSITION --*/
13230 if ($this->inFixedPosBlock) {
13231 if (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags)) { $this->fixedPosBlockDepth--; }
13232 if ($this->fixedPosBlockDepth == 0) {
13233 $this->fixedPosBlockSave[] = array($this->fixedPosBlock, $this->fixedPosBlockBBox, $this->page);
13234 $this->fixedPosBlock = '';
13235 $this->inFixedPosBlock = false;
13236 continue;
13237 }
13238 $this->fixedPosBlock .= '<'.$e.'>';
13239 continue;
13240 }
13241/*-- END CSS-POSITION --*/
13242 if ($this->allow_html_optional_endtags && !$parseonly) {
13243 if (($endtag == 'DIV' || $endtag =='FORM' || $endtag =='CENTER') && $this->lastoptionaltag == 'P') { $this->CloseTag($this->lastoptionaltag ); }
13244 if ($this->lastoptionaltag == 'LI' && $endtag == 'OL') { $this->CloseTag($this->lastoptionaltag ); }
13245 if ($this->lastoptionaltag == 'LI' && $endtag == 'UL') { $this->CloseTag($this->lastoptionaltag ); }
13246 if ($this->lastoptionaltag == 'DD' && $endtag == 'DL') { $this->CloseTag($this->lastoptionaltag ); }
13247 if ($this->lastoptionaltag == 'DT' && $endtag == 'DL') { $this->CloseTag($this->lastoptionaltag ); }
13248 if ($this->lastoptionaltag == 'OPTION' && $endtag == 'SELECT') { $this->CloseTag($this->lastoptionaltag ); }
13249/*-- TABLES --*/
13250 if ($endtag == 'TABLE') {
13251 if ($this->lastoptionaltag == 'THEAD' || $this->lastoptionaltag == 'TBODY' || $this->lastoptionaltag == 'TFOOT') {
13252 $this->CloseTag($this->lastoptionaltag);
13253 }
13254 if ($this->lastoptionaltag == 'TR') { $this->CloseTag('TR'); }
13255 if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); }
13256 }
13257 if ($endtag == 'THEAD' || $endtag == 'TBODY' || $endtag == 'TFOOT') {
13258 if ($this->lastoptionaltag == 'TR') { $this->CloseTag('TR'); }
13259 if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); }
13260 }
13261 if ($endtag == 'TR') {
13262 if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); }
13263 }
13264/*-- END TABLES --*/
13265 }
13266 $this->CloseTag($endtag);
13267 }
13268
13269 else { // OPENING TAG
13270 if($this->blk[$this->blklvl]['hide']) {
13271 if (strpos($e,' ')) { $te = strtoupper(substr($e,0,strpos($e,' '))); }
13272 else { $te = strtoupper($e); }
13273 if (in_array($te, $this->outerblocktags) || in_array($te, $this->innerblocktags)) {
13274 $this->blklvl++;
13275 $this->blk[$this->blklvl]['hide']=true;
13276 }
13277 continue;
13278 }
13279
13280/*-- CSS-POSITION --*/
13281 if ($this->inFixedPosBlock) {
13282 if (strpos($e,' ')) { $te = strtoupper(substr($e,0,strpos($e,' '))); }
13283 else { $te = strtoupper($e); }
13284 $this->fixedPosBlock .= '<'.$e.'>';
13285 if (in_array($te, $this->outerblocktags) || in_array($te, $this->innerblocktags)) { $this->fixedPosBlockDepth++; }
13286 continue;
13287 }
13288/*-- END CSS-POSITION --*/
13289 $regexp = '|=\'(.*?)\'|s'; // eliminate single quotes, if any
13290 $e = preg_replace($regexp,"=\"\$1\"",$e);
13291 // changes anykey=anyvalue to anykey="anyvalue" (only do this inside [some] tags)
13292 if (substr($e,0,10)!='pageheader' && substr($e,0,10)!='pagefooter' && substr($e,0,12)!='tocpagebreak') { // mPDF 5.6.69
13293 $regexp = '| (\\w+?)=([^\\s>"]+)|si';
13294 $e = preg_replace($regexp," \$1=\"\$2\"",$e);
13295 }
13296
13297 $e = preg_replace('/ (\\S+?)\s*=\s*"/i', " \\1=\"", $e);
13298
13299 //Fix path values, if needed
13300 $orig_srcpath = '';
13301 if ((stristr($e,"href=") !== false) or (stristr($e,"src=") !== false) ) {
13302 $regexp = '/ (href|src)\s*=\s*"(.*?)"/i';
13303 preg_match($regexp,$e,$auxiliararray);
13304 if (isset($auxiliararray[2])) { $path = $auxiliararray[2]; }
13305 else { $path = ''; }
13306 if (trim($path) != '' && !(stristr($e,"src=") !== false && substr($path,0,4)=='var:')) {
13307 $orig_srcpath = $path;
13308 $this->GetFullPath($path);
13309 $regexp = '/ (href|src)="(.*?)"/i';
13310 $e = preg_replace($regexp,' \\1="'.$path.'"',$e);
13311 }
13312 }//END of Fix path values
13313
13314
13315 //Extract attributes
13316 $contents=array();
13317 $contents1=array(); // mPDF 5.5.17
13318 $contents2=array();
13319 // Changed to allow style="background: url('bg.jpg')"
13320 // mPDF 5.5.17 Changed to improve performance; maximum length of \S (attribute) = 16
13321 // mPDF 5.6.30 Increase allowed attribute name to 32 - cutting off "toc-even-header-name" etc.
13322 preg_match_all('/\\S{1,32}=["][^"]*["]/',$e,$contents1);
13323 preg_match_all('/\\S{1,32}=[\'][^\']*[\']/i',$e,$contents2);
13324
13325 $contents = array_merge($contents1, $contents2);
13326 preg_match('/\\S+/',$e,$a2);
13327 $tag=strtoupper($a2[0]);
13328 $attr=array();
13329 if ($orig_srcpath) { $attr['ORIG_SRC'] = $orig_srcpath; }
13330 if (!empty($contents)) {
13331 foreach($contents[0] as $v) {
13332 // Changed to allow style="background: url('bg.jpg')"
13333 if(preg_match('/^([^=]*)=["]?([^"]*)["]?$/',$v,$a3) || preg_match('/^([^=]*)=[\']?([^\']*)[\']?$/',$v,$a3)) {
13334 if (strtoupper($a3[1])=='ID' || strtoupper($a3[1])=='CLASS') { // 4.2.013 Omits STYLE
13335 $attr[strtoupper($a3[1])]=trim(strtoupper($a3[2]));
13336 }
13337 // includes header-style-right etc. used for <pageheader>
13338 else if (preg_match('/^(HEADER|FOOTER)-STYLE/i',$a3[1])) {
13339 $attr[strtoupper($a3[1])]=trim(strtoupper($a3[2]));
13340 }
13341 else {
13342 $attr[strtoupper($a3[1])]=trim($a3[2]);
13343 }
13344 }
13345 }
13346 }
13347 $this->OpenTag($tag,$attr);
13348/*-- CSS-POSITION --*/
13349 if ($this->inFixedPosBlock) {
13350 $this->fixedPosBlockBBox = array($tag,$attr, $this->x, $this->y);
13351 $this->fixedPosBlock = '';
13352 $this->fixedPosBlockDepth = 1;
13353 }
13354/*-- END CSS-POSITION --*/
13355 // mPDF 5.5.09
13356 if (preg_match('/\/$/',$e)) { $this->closeTag($tag); }
13357
13358 }
13359
13360 } // end TAG
13361 } //end of foreach($a as $i=>$e)
13362
13363 if ($close) {
13364
13365 // Close any open block tags
13366 for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
13367
13368 // Output any text left in buffer
13369 if (count($this->textbuffer) && !$parseonly) { $this->printbuffer($this->textbuffer); }
13370 if (!$parseonly) $this->textbuffer=array();
13371
13372/*-- CSS-FLOAT --*/
13373 // If ended with a float, need to move to end page
13374 $currpos = $this->page*1000 + $this->y;
13375 if (isset($this->blk[$this->blklvl]['float_endpos']) && $this->blk[$this->blklvl]['float_endpos'] > $currpos) {
13376 $old_page = $this->page;
13377 $new_page = intval($this->blk[$this->blklvl]['float_endpos'] /1000);
13378 if ($old_page != $new_page) {
13379 $s = $this->PrintPageBackgrounds();
13380 // Writes after the marker so not overwritten later by page background etc.
13381 $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
13382 $this->pageBackgrounds = array();
13383 $this->page = $new_page;
13384 $this->ResetMargins();
13385 $this->Reset();
13386 $this->pageoutput[$this->page] = array();
13387 }
13388 $this->y = (($this->blk[$this->blklvl]['float_endpos'] *1000) % 1000000)/1000; // mod changes operands to integers before processing
13389 }
13390/*-- END CSS-FLOAT --*/
13391
13392/*-- CSS-IMAGE-FLOAT --*/
13393 $this->printfloatbuffer();
13394/*-- END CSS-IMAGE-FLOAT --*/
13395
13396 //Create Internal Links, if needed
13397 if (!empty($this->internallink) ) {
13398 foreach($this->internallink as $k=>$v) {
13399 if (strpos($k,"#") !== false ) { continue; } //ignore
13400 $ypos = $v['Y'];
13401 $pagenum = $v['PAGE'];
13402 $sharp = "#";
13403 while (array_key_exists($sharp.$k,$this->internallink)) {
13404 $internallink = $this->internallink[$sharp.$k];
13405 $this->SetLink($internallink,$ypos,$pagenum);
13406 $sharp .= "#";
13407 }
13408 }
13409 }
13410
13411 $this->linemaxfontsize = '';
13412 $this->lineheight_correction = $this->default_lineheight_correction;
13413
13414 $this->bufferoutput = false;
13415
13416/*-- CSS-POSITION --*/
13417 if (count($this->fixedPosBlockSave) && $sub != 4) {
13418 foreach($this->fixedPosBlockSave AS $fpbs) {
13419 $old_page = $this->page;
13420 $this->page = $fpbs[2];
13421 $this->WriteFixedPosHTML($fpbs[0], 0, 0, 100, 100,'auto', $fpbs[1]); // 0,0,10,10 are overwritten by bbox
13422 $this->page = $old_page;
13423 }
13424 }
13425/*-- END CSS-POSITION --*/
13426
13427 }
13428}
13429
13430/*-- CSS-POSITION --*/
13431
13432function WriteFixedPosHTML($html='',$x, $y, $w, $h, $overflow='visible', $bounding=array()) {
13433 // $overflow can be 'hidden', 'visible' or 'auto' - 'auto' causes autofit to size
13434 // Annotations disabled - enabled in mPDF 5.0
13435 // Links do work
13436 // Will always go on current page (or start Page 1 if required)
13437 // Probably INCOMPATIBLE WITH keep with table, columns etc.
13438 // Called externally or interally via <div style="position: [fixed|absolute]">
13439 // When used internally, $x $y $w $h and $overflow are all overridden by $bounding
13440
13441 $overflow = strtolower($overflow);
13442 if($this->state==0) {
13443 $this->AddPage($this->CurOrientation);
13444 }
13445 $save_y = $this->y;
13446 $save_x = $this->x;
13447 $this->fullImageHeight = $this->h;
13448 $save_cols = false;
13449/*-- COLUMNS --*/
13450 if ($this->ColActive) {
13451 $save_cols = true;
13452 $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off
13453 $this->SetColumns(0);
13454 }
13455/*-- END COLUMNS --*/
13456 $save_annots = $this->title2annots; // *ANNOTATIONS*
13457 $this->writingHTMLheader = true; // a FIX to stop pagebreaks etc.
13458 $this->writingHTMLfooter = true;
13459 $this->InFooter = true; // suppresses autopagebreaks
13460 $save_bgs = $this->pageBackgrounds;
13461 $checkinnerhtml = preg_replace('/\s/','',$html);
13462
13463 if ($w > $this->w) { $x = 0; $w = $this->w; }
13464 if ($h > $this->h) { $y = 0; $h = $this->h; }
13465 if ($x > $this->w) { $x = $this->w - $w; }
13466 if ($y > $this->h) { $y = $this->h - $h; }
13467
13468 if (!empty($bounding)) {
13469 // $cont_ containing block = full physical page (position: absolute) or page inside margins (position: fixed)
13470 // $bbox_ Bounding box is the <div> which is positioned absolutely/fixed
13471 // top/left/right/bottom/width/height/background*/border*/padding*/margin* are taken from bounding
13472 // font*[family/size/style/weight]/line-height/text*[align/decoration/transform/indent]/color are transferred to $inner
13473 // as an enclosing <div> (after having checked ID/CLASS)
13474 // $x, $y, $w, $h are inside of $bbox_ = containing box for $inner_
13475 // $inner_ InnerHTML is the contents of that block to be output
13476 $tag = $bounding[0];
13477 $attr = $bounding[1];
13478 $orig_x0 = $bounding[2];
13479 $orig_y0 = $bounding[3];
13480
13481 // As in WriteHTML() initialising
13482 $this->blklvl = 0;
13483 $this->lastblocklevelchange = 0;
13484 $this->blk = array();
13485 $this->initialiseBlock($this->blk[0]);
13486
13487 $this->blk[0]['width'] =& $this->pgwidth;
13488 $this->blk[0]['inner_width'] =& $this->pgwidth;
13489
13490 $this->blk[0]['blockContext'] = $this->blockContext;
13491
13492 $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
13493 $this->setCSS($properties,'','BODY');
13494 $this->blklvl = 1;
13495 $this->initialiseBlock($this->blk[1]);
13496 $this->blk[1]['tag'] = $tag;
13497 $this->blk[1]['attr'] = $attr;
13498 $this->Reset();
13499 $p = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
13500 if (isset($p['ROTATE']) && ($p['ROTATE']==90 || $p['ROTATE']==-90)) { $rotate = $p['ROTATE']; }
13501 else { $rotate = 0; }
13502 if (isset($p['OVERFLOW'])) { $overflow = strtolower($p['OVERFLOW']); }
13503 if (strtolower($p['POSITION']) == 'fixed') {
13504 $cont_w = $this->pgwidth; // $this->blk[0]['inner_width'];
13505 $cont_h = $this->h - $this->tMargin - $this->bMargin;
13506 $cont_x = $this->lMargin;
13507 $cont_y = $this->tMargin;
13508 }
13509 else {
13510 $cont_w = $this->w; // ABSOLUTE;
13511 $cont_h = $this->h;
13512 $cont_x = 0;
13513 $cont_y = 0;
13514 }
13515
13516 // Pass on in-line properties to the innerhtml
13517 $css = '';
13518 if (isset($p['TEXT-ALIGN'])) { $css .= 'text-align: '.strtolower($p['TEXT-ALIGN']).'; '; }
13519 if (isset($p['TEXT-TRANSFORM'])) { $css .= 'text-transform: '.strtolower($p['TEXT-TRANSFORM']).'; '; }
13520 if (isset($p['TEXT-INDENT'])) { $css .= 'text-indent: '.strtolower($p['TEXT-INDENT']).'; '; }
13521 if (isset($p['TEXT-DECORATION'])) { $css .= 'text-decoration: '.strtolower($p['TEXT-DECORATION']).'; '; }
13522 if (isset($p['FONT-FAMILY'])) { $css .= 'font-family: '.strtolower($p['FONT-FAMILY']).'; '; }
13523 if (isset($p['FONT-STYLE'])) { $css .= 'font-style: '.strtolower($p['FONT-STYLE']).'; '; }
13524 if (isset($p['FONT-WEIGHT'])) { $css .= 'font-weight: '.strtolower($p['FONT-WEIGHT']).'; '; }
13525 if (isset($p['FONT-SIZE'])) { $css .= 'font-size: '.strtolower($p['FONT-SIZE']).'; '; }
13526 if (isset($p['LINE-HEIGHT'])) { $css .= 'line-height: '.strtolower($p['LINE-HEIGHT']).'; '; }
13527 if (isset($p['TEXT-SHADOW'])) { $css .= 'text-shadow: '.strtolower($p['TEXT-SHADOW']).'; '; }
13528 if (isset($p['LETTER-SPACING'])) { $css .= 'letter-spacing: '.strtolower($p['LETTER-SPACING']).'; '; }
13529 if (isset($p['FONT-VARIANT'])) { $css .= 'font-variant: '.strtolower($p['FONT-VARIANT']).'; '; }
13530 if (isset($p['COLOR'])) { $css .= 'color: '.strtolower($p['COLOR']).'; '; }
13531 if (isset($p['Z-INDEX'])) { $css .= 'z-index: '.$p['Z-INDEX'].'; '; } // mPDF 5.6.01
13532 if ($css) {
13533 $html = '<div style="'.$css.'">'.$html.'</div>';
13534 }
13535 // Copy over (only) the properties to set for border and background
13536 $pb = array();
13537 $pb['MARGIN-TOP'] = $p['MARGIN-TOP'];
13538 $pb['MARGIN-RIGHT'] = $p['MARGIN-RIGHT'];
13539 $pb['MARGIN-BOTTOM'] = $p['MARGIN-BOTTOM'];
13540 $pb['MARGIN-LEFT'] = $p['MARGIN-LEFT'];
13541 $pb['PADDING-TOP'] = $p['PADDING-TOP'];
13542 $pb['PADDING-RIGHT'] = $p['PADDING-RIGHT'];
13543 $pb['PADDING-BOTTOM'] = $p['PADDING-BOTTOM'];
13544 $pb['PADDING-LEFT'] = $p['PADDING-LEFT'];
13545 $pb['BORDER-TOP'] = $p['BORDER-TOP'];
13546 $pb['BORDER-RIGHT'] = $p['BORDER-RIGHT'];
13547 $pb['BORDER-BOTTOM'] = $p['BORDER-BOTTOM'];
13548 $pb['BORDER-LEFT'] = $p['BORDER-LEFT'];
13549 $pb['BORDER-TOP-LEFT-RADIUS-H'] = $p['BORDER-TOP-LEFT-RADIUS-H'];
13550 $pb['BORDER-TOP-LEFT-RADIUS-V'] = $p['BORDER-TOP-LEFT-RADIUS-V'];
13551 $pb['BORDER-TOP-RIGHT-RADIUS-H'] = $p['BORDER-TOP-RIGHT-RADIUS-H'];
13552 $pb['BORDER-TOP-RIGHT-RADIUS-V'] = $p['BORDER-TOP-RIGHT-RADIUS-V'];
13553 $pb['BORDER-BOTTOM-LEFT-RADIUS-H'] = $p['BORDER-BOTTOM-LEFT-RADIUS-H'];
13554 $pb['BORDER-BOTTOM-LEFT-RADIUS-V'] = $p['BORDER-BOTTOM-LEFT-RADIUS-V'];
13555 $pb['BORDER-BOTTOM-RIGHT-RADIUS-H'] = $p['BORDER-BOTTOM-RIGHT-RADIUS-H'];
13556 $pb['BORDER-BOTTOM-RIGHT-RADIUS-V'] = $p['BORDER-BOTTOM-RIGHT-RADIUS-V'];
13557 if (isset($p['BACKGROUND-COLOR'])) { $pb['BACKGROUND-COLOR'] = $p['BACKGROUND-COLOR']; }
13558 if (isset($p['BOX-SHADOW'])) { $pb['BOX-SHADOW'] = $p['BOX-SHADOW']; }
13559/*-- BACKGROUNDS --*/
13560 if (isset($p['BACKGROUND-IMAGE'])) { $pb['BACKGROUND-IMAGE'] = $p['BACKGROUND-IMAGE']; }
13561 if (isset($p['BACKGROUND-IMAGE-RESIZE'])) { $pb['BACKGROUND-IMAGE-RESIZE'] = $p['BACKGROUND-IMAGE-RESIZE']; }
13562 if (isset($p['BACKGROUND-IMAGE-OPACITY'])) { $pb['BACKGROUND-IMAGE-OPACITY'] = $p['BACKGROUND-IMAGE-OPACITY']; }
13563 if (isset($p['BACKGROUND-REPEAT'])) { $pb['BACKGROUND-REPEAT'] = $p['BACKGROUND-REPEAT']; }
13564 if (isset($p['BACKGROUND-POSITION'])) { $pb['BACKGROUND-POSITION'] = $p['BACKGROUND-POSITION']; }
13565 if (isset($p['BACKGROUND-GRADIENT'])) { $pb['BACKGROUND-GRADIENT'] = $p['BACKGROUND-GRADIENT']; }
13566 if (isset($p['BACKGROUND-SIZE'])) { $pb['BACKGROUND-SIZE'] = $p['BACKGROUND-SIZE']; } // mPDF 5.6.12
13567 if (isset($p['BACKGROUND-ORIGIN'])) { $pb['BACKGROUND-ORIGIN'] = $p['BACKGROUND-ORIGIN']; } // mPDF 5.6.12
13568 if (isset($p['BACKGROUND-CLIP'])) { $pb['BACKGROUND-CLIP'] = $p['BACKGROUND-CLIP']; } // mPDF 5.6.12
13569
13570/*-- END BACKGROUNDS --*/
13571
13572 $this->setCSS($pb,'BLOCK',$tag);
13573
13574 //================================================================
13575 $bbox_br = $this->blk[1]['border_right']['w'];
13576 $bbox_bl = $this->blk[1]['border_left']['w'];
13577 $bbox_bt = $this->blk[1]['border_top']['w'];
13578 $bbox_bb = $this->blk[1]['border_bottom']['w'];
13579 $bbox_pr = $this->blk[1]['padding_right'];
13580 $bbox_pl = $this->blk[1]['padding_left'];
13581 $bbox_pt = $this->blk[1]['padding_top'];
13582 $bbox_pb = $this->blk[1]['padding_bottom'];
13583 $bbox_mr = $this->blk[1]['margin_right'];
13584 if (strtolower($p['MARGIN-RIGHT'])=='auto') { $bbox_mr = 'auto'; }
13585 $bbox_ml = $this->blk[1]['margin_left'];
13586 if (strtolower($p['MARGIN-LEFT'])=='auto') { $bbox_ml = 'auto'; }
13587 $bbox_mt = $this->blk[1]['margin_top'];
13588 if (strtolower($p['MARGIN-TOP'])=='auto') { $bbox_mt = 'auto'; }
13589 $bbox_mb = $this->blk[1]['margin_bottom'];
13590 if (strtolower($p['MARGIN-BOTTOM'])=='auto') { $bbox_mb = 'auto'; }
13591 if (isset($p['LEFT']) && strtolower($p['LEFT'])!='auto') { $bbox_left = $this->ConvertSize($p['LEFT'], $cont_w, $this->FontSize,false); }
13592 else { $bbox_left = 'auto'; }
13593 if (isset($p['TOP']) && strtolower($p['TOP'])!='auto') { $bbox_top = $this->ConvertSize($p['TOP'], $cont_h, $this->FontSize,false); }
13594 else { $bbox_top = 'auto'; }
13595 if (isset($p['RIGHT']) && strtolower($p['RIGHT'])!='auto') { $bbox_right = $this->ConvertSize($p['RIGHT'], $cont_w, $this->FontSize,false); }
13596 else { $bbox_right = 'auto'; }
13597 if (isset($p['BOTTOM']) && strtolower($p['BOTTOM'])!='auto') { $bbox_bottom = $this->ConvertSize($p['BOTTOM'], $cont_h, $this->FontSize,false); }
13598 else { $bbox_bottom = 'auto'; }
13599 if (isset($p['WIDTH']) && strtolower($p['WIDTH'])!='auto') { $inner_w = $this->ConvertSize($p['WIDTH'], $cont_w, $this->FontSize,false); }
13600 else { $inner_w = 'auto'; }
13601 if (isset($p['HEIGHT']) && strtolower($p['HEIGHT'])!='auto') { $inner_h = $this->ConvertSize($p['HEIGHT'], $cont_h, $this->FontSize,false); }
13602 else { $inner_h = 'auto'; }
13603
13604 // If bottom or right pos are set and not left / top - save this to adjust rotated block later
13605 if ($rotate) {
13606 if ($bbox_left === 'auto' && $bbox_right !== 'auto') { $rot_rpos = $bbox_right; }
13607 else { $rot_rpos = false; }
13608 if ($bbox_top === 'auto' && $bbox_bottom !== 'auto') { $rot_bpos = $bbox_bottom; }
13609 else { $rot_bpos = false; }
13610 }
13611
13612 //================================================================
13613 if ($checkinnerhtml=='' && $inner_h==='auto') { $inner_h = 0.0001; }
13614 if ($checkinnerhtml=='' && $inner_w==='auto') { $inner_w = 2*$this->GetCharWidth('W',false); }
13615 //================================================================
13616 // Algorithm from CSS2.1 See http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height
13617 // mPD 5.3.14
13618 // Special case (not CSS) if all not specified, centre vertically on page
13619 if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom==='auto' && $bbox_mt==='auto' && $bbox_mb==='auto') {
13620 $bbox_top_orig = $bbox_top;
13621 if ($bbox_mt==='auto') { $bbox_mt = 0; }
13622 if ($bbox_mb==='auto') { $bbox_mb = 0; }
13623 $bbox_top = $orig_y0 - $bbox_mt - $cont_y;
13624 // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto'
13625 }
13626 // mPD 5.3.14
13627 else if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom==='auto') {
13628 $bbox_top_orig = $bbox_top = $orig_y0 - $cont_y;
13629 if ($bbox_mt==='auto') { $bbox_mt = 0; }
13630 if ($bbox_mb==='auto') { $bbox_mb = 0; }
13631 // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto'
13632 }
13633 else if ($bbox_top!=='auto' && $inner_h!=='auto' && $bbox_bottom!=='auto') {
13634 if ($bbox_mt==='auto' && $bbox_mb==='auto') {
13635 $x = $cont_h - $bbox_top - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_bottom;
13636 $bbox_mt = $bbox_mb = ($x/2);
13637 }
13638 else if ($bbox_mt==='auto') {
13639 $bbox_mt = $cont_h - $bbox_top - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
13640 }
13641 else if ($bbox_mb==='auto') {
13642 $bbox_mb = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_bottom;
13643 }
13644 else {
13645 $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt;
13646 }
13647 }
13648 else {
13649 if ($bbox_mt==='auto') { $bbox_mt = 0; }
13650 if ($bbox_mb==='auto') { $bbox_mb = 0; }
13651 if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom!=='auto') {
13652 // solve for $bbox_top when content_h known - $inner_h=='auto' && $bbox_top =='auto'
13653 }
13654 else if ($bbox_top==='auto' && $bbox_bottom==='auto' && $inner_h!=='auto') {
13655 $bbox_top = $orig_y0 - $bbox_mt - $cont_y;
13656 $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt;
13657 }
13658 else if ($inner_h==='auto' && $bbox_bottom==='auto' && $bbox_top!=='auto') {
13659 // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto'
13660 }
13661 else if ($bbox_top==='auto' && $inner_h!=='auto' && $bbox_bottom!=='auto') {
13662 $bbox_top = $cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt - $bbox_bottom;
13663 }
13664 else if ($inner_h==='auto' && $bbox_top!=='auto' && $bbox_bottom!=='auto') {
13665 $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mt - $bbox_bottom;
13666 }
13667 else if ($bbox_bottom==='auto' && $bbox_top!=='auto' && $inner_h!=='auto') {
13668 $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt;
13669 }
13670 }
13671
13672 // THEN DO SAME FOR WIDTH
13673 // http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width
13674 if ($bbox_left==='auto' && $inner_w==='auto' && $bbox_right==='auto') {
13675 if ($bbox_ml==='auto') { $bbox_ml = 0; }
13676 if ($bbox_mr==='auto') { $bbox_mr = 0; }
13677 // IF containing element RTL, should set $bbox_right
13678 $bbox_left = $orig_x0 - $bbox_ml - $cont_x;
13679 // solve for $bbox_right when content_w known - $inner_w=='auto' && $bbox_right=='auto'
13680 }
13681 else if ($bbox_left!=='auto' && $inner_w!=='auto' && $bbox_right!=='auto') {
13682 if ($bbox_ml==='auto' && $bbox_mr==='auto') {
13683 $x = $cont_w - $bbox_left - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_right;
13684 $bbox_ml = $bbox_mr = ($x/2);
13685 }
13686 else if ($bbox_ml==='auto') {
13687 $bbox_ml = $cont_w - $bbox_left - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_mr - $bbox_right;
13688 }
13689 else if ($bbox_mr==='auto') {
13690 $bbox_mr = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_right;
13691 }
13692 else {
13693 $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
13694 }
13695 }
13696 else {
13697 if ($bbox_ml==='auto') { $bbox_ml = 0; }
13698 if ($bbox_mr==='auto') { $bbox_mr = 0; }
13699 if ($bbox_left==='auto' && $inner_w==='auto' && $bbox_right!=='auto') {
13700 // solve for $bbox_left when content_w known - $inner_w=='auto' && $bbox_left =='auto'
13701 }
13702 else if ($bbox_left==='auto' && $bbox_right==='auto' && $inner_w!=='auto') {
13703 // IF containing element RTL, should set $bbox_right
13704 $bbox_left = $orig_x0 - $bbox_ml - $cont_x;
13705 $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
13706 }
13707 else if ($inner_w==='auto' && $bbox_right==='auto' && $bbox_left!=='auto') {
13708 // solve for $bbox_right when content_w known - $inner_w=='auto' && $bbox_right=='auto'
13709 }
13710 else if ($bbox_left==='auto' && $inner_w!=='auto' && $bbox_right!=='auto') {
13711 $bbox_left = $cont_w - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right;
13712 }
13713 else if ($inner_w==='auto' && $bbox_left!=='auto' && $bbox_right!=='auto') {
13714 $inner_w = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right;
13715 }
13716 else if ($bbox_right==='auto' && $bbox_left!=='auto' && $inner_w!=='auto') {
13717 $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
13718 }
13719 }
13720
13721 //================================================================
13722 //================================================================
13723/*-- BACKGROUNDS --*/
13724 if (isset($pb['BACKGROUND-IMAGE']) && $pb['BACKGROUND-IMAGE']) {
13725 $ret = $this->SetBackground($pb, $this->blk[1]['inner_width']);
13726 if ($ret) { $this->blk[1]['background-image'] = $ret; }
13727 }
13728/*-- END BACKGROUNDS --*/
13729
13730 //================================================================
13731 $y = $cont_y + $bbox_top + $bbox_mt + $bbox_bt + $bbox_pt;
13732 $h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
13733 $x = $cont_x + $bbox_left + $bbox_ml + $bbox_bl + $bbox_pl;
13734 $w = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $bbox_pr - $bbox_br - $bbox_mr - $bbox_right;
13735 // Set (temporary) values for x y w h to do first paint, if values are auto
13736 if ($inner_h==='auto' && $bbox_top==='auto') {
13737 $y = $cont_y + $bbox_mt + $bbox_bt + $bbox_pt;
13738 $h = $cont_h - ($bbox_bottom + $bbox_mt + $bbox_mb + $bbox_bt + $bbox_bb + $bbox_pt + $bbox_pb);
13739 }
13740 else if ($inner_h==='auto' && $bbox_bottom==='auto') {
13741 $y = $cont_y + $bbox_top + $bbox_mt + $bbox_bt + $bbox_pt;
13742 $h = $cont_h - ($bbox_top + $bbox_mt + $bbox_mb + $bbox_bt + $bbox_bb + $bbox_pt + $bbox_pb);
13743 }
13744 if ($inner_w==='auto' && $bbox_left==='auto') {
13745 $x = $cont_x + $bbox_ml + $bbox_bl + $bbox_pl;
13746 $w = $cont_w - ($bbox_right + $bbox_ml + $bbox_mr + $bbox_bl + $bbox_br + $bbox_pl + $bbox_pr);
13747 }
13748 else if ($inner_w==='auto' && $bbox_right==='auto') {
13749 $x = $cont_x + $bbox_left + $bbox_ml + $bbox_bl + $bbox_pl;
13750 $w = $cont_w - ($bbox_left + $bbox_ml + $bbox_mr + $bbox_bl + $bbox_br + $bbox_pl + $bbox_pr);
13751 }
13752 $bbox_y = $cont_y + $bbox_top + $bbox_mt;
13753 $bbox_x = $cont_x + $bbox_left + $bbox_ml;
13754 $saved_block1 = $this->blk[1];
13755 unset($p);
13756 unset($pb);
13757 //================================================================
13758 if ($inner_w==='auto') { // do a first write
13759 $this->lMargin=$x;
13760 $this->rMargin=$this->w - $w - $x;
13761 // SET POSITION & FONT VALUES
13762 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
13763 $this->pageoutput[$this->page]=array();
13764 $this->x = $x;
13765 $this->y = $y;
13766 $this->HTMLheaderPageLinks = array();
13767 $this->HTMLheaderPageAnnots = array();
13768 $this->HTMLheaderPageForms = array();
13769 $this->pageBackgrounds = array();
13770 $this->maxPosR = 0;
13771 $this->maxPosL = $this->w; // For RTL
13772 $this->WriteHTML($html , 4);
13773 $inner_w = $this->maxPosR - $this->lMargin;
13774 if ($bbox_right==='auto') {
13775 $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
13776 }
13777 else if ($bbox_left==='auto') {
13778 $bbox_left = $cont_w - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right;
13779 $bbox_x = $cont_x + $bbox_left + $bbox_ml ;
13780 $inner_x = $bbox_x + $bbox_bl + $bbox_pl;
13781 $x = $inner_x;
13782 }
13783 $w = $inner_w;
13784 $bbox_y = $cont_y + $bbox_top + $bbox_mt;
13785 $bbox_x = $cont_x + $bbox_left + $bbox_ml;
13786 }
13787
13788 if ($inner_h==='auto') { // do a first write
13789 $this->lMargin=$x;
13790 $this->rMargin=$this->w - $w - $x;
13791 // SET POSITION & FONT VALUES
13792 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
13793 $this->pageoutput[$this->page]=array();
13794 $this->x = $x;
13795 $this->y = $y;
13796 $this->HTMLheaderPageLinks = array();
13797 $this->HTMLheaderPageAnnots = array();
13798 $this->HTMLheaderPageForms = array();
13799 $this->pageBackgrounds = array();
13800 $this->WriteHTML($html , 4);
13801 $inner_h = $this->y - $y;
13802 if ($overflow!='hidden' && $overflow!='visible') { // constrained
13803 if (($this->y + $bbox_pb + $bbox_bb) > ($cont_y + $cont_h)) {
13804 $adj = ($this->y + $bbox_pb + $bbox_bb) - ($cont_y + $cont_h);
13805 $inner_h -= $adj;
13806 }
13807 }
13808 if ($bbox_bottom==='auto' && $bbox_top_orig==='auto') {
13809 $bbox_bottom = $bbox_top = ($cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb)/2;
13810 if ($overflow!='hidden' && $overflow!='visible') { // constrained
13811 if ($bbox_top < 0) {
13812 $bbox_top = 0;
13813 $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
13814 }
13815 }
13816 $bbox_y = $cont_y + $bbox_top + $bbox_mt;
13817 $inner_y = $bbox_y + $bbox_bt + $bbox_pt;
13818 $y = $inner_y;
13819
13820 }
13821 else if ($bbox_bottom==='auto') {
13822 $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb;
13823 }
13824 else if ($bbox_top==='auto') {
13825 $bbox_top = $cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
13826 if ($overflow!='hidden' && $overflow!='visible') { // constrained
13827 if ($bbox_top < 0) {
13828 $bbox_top = 0;
13829 $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
13830 }
13831 }
13832 $bbox_y = $cont_y + $bbox_top + $bbox_mt;
13833 $inner_y = $bbox_y + $bbox_bt + $bbox_pt;
13834 $y = $inner_y;
13835 }
13836 $h = $inner_h;
13837 $bbox_y = $cont_y + $bbox_top + $bbox_mt;
13838 $bbox_x = $cont_x + $bbox_left + $bbox_ml;
13839 }
13840 $inner_w = $w;
13841 $inner_h = $h;
13842
13843 }
13844 $this->lMargin=$x;
13845 $this->rMargin=$this->w - $w - $x;
13846 // SET POSITION & FONT VALUES
13847 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
13848 $this->pageoutput[$this->page]=array();
13849 $this->x = $x;
13850 $this->y = $y;
13851 $this->HTMLheaderPageLinks = array();
13852 $this->HTMLheaderPageAnnots = array();
13853 $this->HTMLheaderPageForms = array();
13854 $this->pageBackgrounds = array();
13855 $this->WriteHTML($html , 4); // parameter 4 saves output to $this->headerbuffer
13856 $actual_h = $this->y - $y;
13857 $use_w = $w;
13858 $use_h = $h;
13859 $ratio = $actual_h / $use_w;
13860
13861 if ($overflow!='hidden' && $overflow!='visible') {
13862 $target = $h/$w;
13863 if (($ratio / $target ) > 1) {
13864 $nl = CEIL($actual_h / $this->lineheight);
13865 $l = $use_w * $nl;
13866 $est_w = sqrt(($l * $this->lineheight) / $target) * 0.8;
13867 $use_w += ($est_w - $use_w) - ($w/100);
13868 }
13869 $bpcstart = ($ratio / $target);
13870 $bpcctr = 1;
13871 while(($ratio / $target ) > 1) {
13872
13873 if ($this->progressBar) { $this->UpdateProgressBar(4,intval(100/($ratio/$target)),('Auto-sizing fixed-position block: '.$bpcctr++)); } // *PROGRESS-BAR*
13874
13875 $this->x = $x;
13876 $this->y = $y;
13877
13878 if (($ratio / $target) > 1.5 || ($ratio / $target) < 0.6) {
13879 $use_w += ($w/$this->incrementFPR1);
13880 }
13881 else if (($ratio / $target) > 1.2 || ($ratio / $target) < 0.85) {
13882 $use_w += ($w/$this->incrementFPR2);
13883 }
13884 else if (($ratio / $target) > 1.1 || ($ratio / $target) < 0.91) {
13885 $use_w += ($w/$this->incrementFPR3);
13886 }
13887 else {
13888 $use_w += ($w/$this->incrementFPR4);
13889 }
13890
13891 $use_h = $use_w * $target ;
13892 $this->rMargin=$this->w - $use_w - $x;
13893 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
13894 $this->HTMLheaderPageLinks = array();
13895 $this->HTMLheaderPageAnnots = array();
13896 $this->HTMLheaderPageForms = array();
13897 $this->pageBackgrounds = array();
13898 $this->WriteHTML($html , 4); // parameter 4 saves output to $this->headerbuffer
13899 $actual_h = $this->y - $y;
13900 $ratio = $actual_h / $use_w;
13901 }
13902 if ($this->progressBar) { $this->UpdateProgressBar(4,'100',' '); } // *PROGRESS-BAR*
13903 }
13904 $shrink_f = $w/$use_w;
13905
13906 //================================================================
13907
13908 $this->pages[$this->page] .= '___BEFORE_BORDERS___';
13909 $block_s = $this->PrintPageBackgrounds(); // Save to print later inside clipping path
13910 $this->pageBackgrounds = array();
13911
13912 //================================================================
13913
13914 if ($rotate) {
13915 $prerotw = $bbox_bl + $bbox_pl + $inner_w + $bbox_pr + $bbox_br;
13916 $preroth = $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb;
13917 $rot_start = " q\n";
13918 if ($rotate == 90) {
13919 if ($rot_rpos !== false) { $adjw = $prerotw; } // width before rotation
13920 else { $adjw = $preroth; } // height before rotation
13921 if ($rot_bpos !== false) { $adjh = -$prerotw + $preroth; }
13922 else { $adjh = 0; }
13923 }
13924 else {
13925 if ($rot_rpos !== false) { $adjw = $prerotw - $preroth; }
13926 else { $adjw = 0; }
13927 if ($rot_bpos !== false) { $adjh = $preroth; } // height before rotation
13928 else { $adjh = $prerotw; } // width before rotation
13929 }
13930 $rot_start .= $this->transformTranslate($adjw, $adjh, true)."\n";
13931 $rot_start .= $this->transformRotate($rotate, $bbox_x, $bbox_y, true)."\n";
13932 $rot_end = " Q\n";
13933 }
13934 else {
13935 $rot_start = '';
13936 $rot_end = '';
13937 }
13938
13939 //================================================================
13940 if (!empty($bounding)) {
13941 // WHEN HEIGHT // BOTTOM EDGE IS KNOWN and $this->y is set to the bottom
13942 // Re-instate saved $this->blk[1]
13943 $this->blk[1] = $saved_block1;
13944
13945 // These are only needed when painting border/background
13946 $this->blk[1]['width'] = $bbox_w = $cont_w - $bbox_left - $bbox_ml - $bbox_mr - $bbox_right;
13947 $this->blk[1]['x0'] = $bbox_x;
13948 $this->blk[1]['y0'] = $bbox_y;
13949 $this->blk[1]['startpage'] = $this->page;
13950 $this->blk[1]['y1'] = $bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb ;
13951 $this->_out($rot_start); // mPDF 5.0
13952 $this->PaintDivBB('',0,1); // Prints borders and sets backgrounds in $this->pageBackgrounds
13953 $this->_out($rot_end);
13954 }
13955
13956 $s = $this->PrintPageBackgrounds();
13957 $s = $rot_start.$s.$rot_end;
13958 $this->pages[$this->page] = preg_replace('/___BEFORE_BORDERS___/', "\n".$s."\n", $this->pages[$this->page]);
13959 $this->pageBackgrounds = array();
13960
13961 $this->_out($rot_start);
13962
13963 // Clipping Output
13964 if ($overflow=='hidden') {
13965 //Bounding rectangle to clip
13966 $clip_y1 = $this->y;
13967 if (!empty($bounding) && ($this->y + $bbox_pb + $bbox_bb) > ($bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb )) {
13968 $clip_y1 = ($bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb ) - ($bbox_pb + $bbox_bb);
13969 }
13970 //$op = 'W* n'; // Clipping
13971 $op = 'W n'; // Clipping alternative mode
13972 $this->_out("q");
13973 $ch = $clip_y1 - $y;
13974 $this->_out(sprintf('%.3F %.3F %.3F %.3F re %s',$x*_MPDFK,($this->h-$y)*_MPDFK,$w*_MPDFK,-$ch*_MPDFK,$op));
13975 if (!empty($block_s)) {
13976 $tmp = "q\n".sprintf('%.3F %.3F %.3F %.3F re %s',$x*_MPDFK,($this->h-$y)*_MPDFK,$w*_MPDFK,-$ch*_MPDFK,$op);
13977 $tmp .= "\n".$block_s."\nQ";
13978 $block_s = $tmp ;
13979 }
13980 }
13981
13982
13983 if (!empty($block_s)) {
13984 if ($shrink_f != 1) { // i.e. autofit has resized the box
13985 $tmp = "q\n".$this->transformScale(($shrink_f*100),($shrink_f*100), $x, $y, true);
13986 $tmp .= "\n".$block_s."\nQ";
13987 $block_s = $tmp ;
13988 }
13989 $this->_out($block_s);
13990 }
13991
13992
13993
13994 if ($shrink_f != 1) { // i.e. autofit has resized the box
13995 $this->StartTransform();
13996 $this->transformScale(($shrink_f*100),($shrink_f*100), $x, $y);
13997 }
13998
13999 $this->_out($this->headerbuffer);
14000
14001 if ($shrink_f != 1) { // i.e. autofit has resized the box
14002 $this->StopTransform();
14003 }
14004
14005 if ($overflow=='hidden') {
14006 //End clipping
14007 $this->_out("Q");
14008 }
14009
14010 $this->_out($rot_end);
14011
14012
14013 // Page Links
14014 foreach($this->HTMLheaderPageLinks AS $lk) {
14015 if ($rotate) {
14016 $tmp = $lk[2]; // Switch h - w
14017 $lk[2] = $lk[3];
14018 $lk[3] = $tmp;
14019
14020 $lx1 = (($lk[0]/_MPDFK));
14021 $ly1 = (($this->h-($lk[1]/_MPDFK)));
14022 if ($rotate == 90) {
14023 $adjx = -($lx1-$bbox_x) + ($preroth - ($ly1-$bbox_y));
14024 $adjy = -($ly1-$bbox_y) + ($lx1-$bbox_x);
14025 $lk[2] = -$lk[2];
14026 }
14027 else if ($rotate == -90) {
14028 $adjx = -($lx1-$bbox_x) + ($ly1-$bbox_y);
14029 $adjy = -($ly1-$bbox_y) - ($lx1-$bbox_x) + $prerotw;
14030 $lk[3] = -$lk[3];
14031 }
14032 if ($rot_rpos !== false) { $adjx += $prerotw - $preroth; }
14033 if ($rot_bpos !== false) { $adjy += $preroth - $prerotw; }
14034 $lx1 += $adjx;
14035 $ly1 += $adjy;
14036
14037 $lk[0] = $lx1*_MPDFK;
14038 $lk[1] = ($this->h-$ly1)*_MPDFK;
14039 }
14040 if ($shrink_f != 1) { // i.e. autofit has resized the box
14041 $lx1 = (($lk[0]/_MPDFK)-$x);
14042 $lx2 = $x + ($lx1 * $shrink_f);
14043 $lk[0] = $lx2*_MPDFK;
14044 $ly1 = (($this->h-($lk[1]/_MPDFK))-$y);
14045 $ly2 = $y + ($ly1 * $shrink_f);
14046 $lk[1] = ($this->h-$ly2)*_MPDFK;
14047 $lk[2] *= $shrink_f; // width
14048 $lk[3] *= $shrink_f; // height
14049 }
14050 $this->PageLinks[$this->page][]=$lk;
14051 }
14052
14053 foreach($this->HTMLheaderPageForms AS $n=>$f) {
14054 if ($shrink_f != 1) { // i.e. autofit has resized the box
14055 $f['x'] = $x + (($f['x'] -$x) * $shrink_f);
14056 $f['y'] = $y + (($f['y'] -$y) * $shrink_f);
14057 $f['w'] *= $shrink_f;
14058 $f['h'] *= $shrink_f;
14059 $f['style']['fontsize'] *= $shrink_f;
14060 }
14061 $this->form->forms[$f['n']] = $f;
14062 }
14063 // Page Annotations
14064 foreach($this->HTMLheaderPageAnnots AS $lk) {
14065 if ($rotate) {
14066 if ($rotate == 90) {
14067 $adjx = -($lk['x']-$bbox_x) + ($preroth - ($lk['y']-$bbox_y));
14068 $adjy = -($lk['y']-$bbox_y) + ($lk['x']-$bbox_x);
14069 }
14070 else if ($rotate == -90) {
14071 $adjx = -($lk['x']-$bbox_x) + ($lk['y']-$bbox_y);
14072 $adjy = -($lk['y']-$bbox_y) - ($lk['x']-$bbox_x) + $prerotw;
14073 }
14074 if ($rot_rpos !== false) { $adjx += $prerotw - $preroth; }
14075 if ($rot_bpos !== false) { $adjy += $preroth - $prerotw; }
14076 $lk['x'] += $adjx;
14077 $lk['y'] += $adjy;
14078 }
14079 if ($shrink_f != 1) { // i.e. autofit has resized the box
14080 $lk['x'] = $x + (($lk['x']-$x) * $shrink_f);
14081 $lk['y'] = $y + (($lk['y']-$y) * $shrink_f);
14082 }
14083 $this->PageAnnots[$this->page][]=$lk;
14084 }
14085
14086 // Restore
14087 $this->headerbuffer = '';
14088 $this->HTMLheaderPageLinks = array();
14089 $this->HTMLheaderPageAnnots = array();
14090 $this->HTMLheaderPageForms = array();
14091 $this->pageBackgrounds = $save_bgs;
14092 $this->writingHTMLheader = false;
14093
14094 $this->writingHTMLfooter = false;
14095 $this->fullImageHeight = false;
14096 $this->ResetMargins();
14097 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
14098 $this->SetXY($save_x,$save_y) ;
14099 $this->title2annots = $save_annots; // *ANNOTATIONS*
14100 $this->InFooter = false; // turns back on autopagebreaks
14101 $this->pageoutput[$this->page]=array();
14102 $this->pageoutput[$this->page]['Font']='';
14103/*-- COLUMNS --*/
14104 if ($save_cols) {
14105 $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
14106 }
14107/*-- END COLUMNS --*/
14108}
14109/*-- END CSS-POSITION --*/
14110
14111
14112
14113function initialiseBlock(&$blk) {
14114 $blk['margin_top'] = 0;
14115 $blk['margin_left'] = 0;
14116 $blk['margin_bottom'] = 0;
14117 $blk['margin_right'] = 0;
14118 $blk['padding_top'] = 0;
14119 $blk['padding_left'] = 0;
14120 $blk['padding_bottom'] = 0;
14121 $blk['padding_right'] = 0;
14122 $blk['border_top']['w'] = 0;
14123 $blk['border_left']['w'] = 0;
14124 $blk['border_bottom']['w'] = 0;
14125 $blk['border_right']['w'] = 0;
14126 $blk['hide'] = false;
14127 $blk['outer_left_margin'] = 0;
14128 $blk['outer_right_margin'] = 0;
14129 $blk['cascadeCSS'] = array();
14130 $blk['block-align'] = false;
14131 $blk['bgcolor'] = false;
14132 $blk['page_break_after_avoid'] = false;
14133 $blk['keep_block_together'] = false;
14134 $blk['float'] = false;
14135 $blk['line_height'] = '';
14136 $blk['margin_collapse'] = false;
14137}
14138
14139
14140function border_details($bd) {
14141 $prop = preg_split('/\s+/',trim($bd));
14142
14143 if (isset($this->blk[$this->blklvl]['inner_width'])) { $refw = $this->blk[$this->blklvl]['inner_width']; }
14144 else if (isset($this->blk[$this->blklvl-1]['inner_width'])) { $refw = $this->blk[$this->blklvl-1]['inner_width']; }
14145 else { $refw = $this->w; }
14146 if ( count($prop) == 1 ) {
14147 $bsize = $this->ConvertSize($prop[0],$refw,$this->FontSize,false);
14148 if ($bsize > 0) {
14149 return array('s' => 1, 'w' => $bsize, 'c' => $this->ConvertColor(0), 'style'=>'solid');
14150 }
14151 else { return array('w' => 0, 's' => 0); }
14152 }
14153
14154 else if (count($prop) == 2 ) {
14155 // 1px solid
14156 if (in_array($prop[1],$this->borderstyles) || $prop[1] == 'none' || $prop[1] == 'hidden' ) { $prop[2] = ''; }
14157 // solid #000000
14158 else if (in_array($prop[0],$this->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { $prop[0] = ''; $prop[1] = $prop[0]; $prop[2] = $prop[1]; }
14159 // 1px #000000
14160 else { $prop[1] = ''; $prop[2] = $prop[1]; }
14161 }
14162 else if ( count($prop) == 3 ) {
14163 // Change #000000 1px solid to 1px solid #000000 (proper)
14164 if (substr($prop[0],0,1) == '#') { $tmp = $prop[0]; $prop[0] = $prop[1]; $prop[1] = $prop[2]; $prop[2] = $tmp; }
14165 // Change solid #000000 1px to 1px solid #000000 (proper)
14166 else if (substr($prop[0],1,1) == '#') { $tmp = $prop[1]; $prop[0] = $prop[2]; $prop[1] = $prop[0]; $prop[2] = $tmp; }
14167 // Change solid 1px #000000 to 1px solid #000000 (proper)
14168 else if (in_array($prop[0],$this->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) {
14169 $tmp = $prop[0]; $prop[0] = $prop[1]; $prop[1] = $tmp;
14170 }
14171 }
14172 else { return array(); }
14173 // Size
14174 $bsize = $this->ConvertSize($prop[0],$refw,$this->FontSize,false);
14175 //color
14176 $coul = $this->ConvertColor($prop[2]); // returns array
14177 // Style
14178 $prop[1] = strtolower($prop[1]);
14179 if (in_array($prop[1],$this->borderstyles) && $bsize > 0) { $on = 1; }
14180 else if ($prop[1] == 'hidden') { $on = 1; $bsize = 0; $coul = ''; }
14181 else if ($prop[1] == 'none') { $on = 0; $bsize = 0; $coul = ''; }
14182 else { $on = 0; $bsize = 0; $coul = ''; $prop[1] = ''; }
14183 return array('s' => $on, 'w' => $bsize, 'c' => $coul, 'style'=> $prop[1] );
14184}
14185
14186
14187
14188/*-- END HTML-CSS --*/
14189
14190
14191// Return either a number (factor) - based on current set fontsize (if % or em) - or exact lineheight (with 'mm' after it)
14192function fixLineheight($v) {
14193 $lh = false;
14194 if (preg_match('/^[0-9\.,]*$/',$v) && $v >= 0) { return ($v + 0); }
14195 else if (strtoupper($v) == 'NORMAL') {
14196 return $this->normalLineheight;
14197 }
14198 else {
14199 $tlh = $this->ConvertSize($v,$this->FontSize,$this->FontSize,true);
14200 if ($tlh) { return ($tlh.'mm'); }
14201 }
14202 return $this->normalLineheight;
14203}
14204
14205
14206/*-- BORDER-RADIUS --*/
14207function _borderPadding($a, $b, &$px, &$py) {
14208 // $px and py are padding long axis (x) and short axis (y)
14209 $added = 0; // extra padding
14210
14211 $x = $a-$px;
14212 $y = $b-$py;
14213 // Check if Falls within ellipse of border radius
14214 if ( ( (($x+$added)*($x+$added))/($a*$a) + (($y+$added)*($y+$added))/($b*$b) ) <=1 ) { return false; }
14215
14216 $t = atan2($y,$x);
14217
14218 $newx = $b / sqrt((($b*$b)/($a*$a)) + ( tan($t) * tan($t) ) );
14219 $newy = $a / sqrt((($a*$a)/($b*$b)) + ( (1/tan($t)) * (1/tan($t)) ) );
14220 $px = max($px, $a - $newx + $added);
14221 $py = max($py, $b - $newy + $added);
14222}
14223/*-- END BORDER-RADIUS --*/
14224
14225
14226
14227/*-- HTML-CSS --*/
14228
14229
14230/*-- CSS-PAGE --*/
14231function SetPagedMediaCSS($name='', $first, $oddEven) {
14232 if ($oddEven == 'E') {
14233 if ($this->directionality=='rtl') { $side = 'R'; }
14234 else { $side = 'L'; }
14235 }
14236 else {
14237 if ($this->directionality=='rtl') { $side = 'L'; }
14238 else { $side = 'R'; }
14239 }
14240 $name = strtoupper($name);
14241 $p = array();
14242 $p['SIZE'] = 'AUTO';
14243
14244 // Uses mPDF original margins as default
14245 $p['MARGIN-RIGHT'] = strval($this->orig_rMargin).'mm';
14246 $p['MARGIN-LEFT'] = strval($this->orig_lMargin).'mm';
14247 $p['MARGIN-TOP'] = strval($this->orig_tMargin).'mm';
14248 $p['MARGIN-BOTTOM'] = strval($this->orig_bMargin).'mm';
14249 $p['MARGIN-HEADER'] = strval($this->orig_hMargin).'mm';
14250 $p['MARGIN-FOOTER'] = strval($this->orig_fMargin).'mm';
14251
14252 // Basic page + selector
14253 if (isset($this->cssmgr->CSS['@PAGE'])) { $zp = $this->cssmgr->CSS['@PAGE']; }
14254 else { $zp = array(); }
14255 if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
14256
14257 if (isset($p['EVEN-HEADER-NAME']) && $oddEven=='E') {
14258 $p['HEADER'] = $p['EVEN-HEADER-NAME']; unset($p['EVEN-HEADER-NAME']);
14259 }
14260 if (isset($p['ODD-HEADER-NAME']) && $oddEven!='E') {
14261 $p['HEADER'] = $p['ODD-HEADER-NAME']; unset($p['ODD-HEADER-NAME']);
14262 }
14263 if (isset($p['EVEN-FOOTER-NAME']) && $oddEven=='E') {
14264 $p['FOOTER'] = $p['EVEN-FOOTER-NAME']; unset($p['EVEN-FOOTER-NAME']);
14265 }
14266 if (isset($p['ODD-FOOTER-NAME']) && $oddEven!='E') {
14267 $p['FOOTER'] = $p['ODD-FOOTER-NAME']; unset($p['ODD-FOOTER-NAME']);
14268 }
14269
14270 // If right/Odd page
14271 if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>RIGHT']) && $side=='R') {
14272 $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>RIGHT'];
14273 }
14274 else { $zp = array(); }
14275 if (isset($zp['SIZE'])) { unset($zp['SIZE']); }
14276 if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); }
14277 // Disallow margin-left or -right on :LEFT or :RIGHT
14278 if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); }
14279 if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); }
14280 if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
14281
14282 // If left/Even page
14283 if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>LEFT']) && $side=='L') {
14284 $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>LEFT'];
14285 }
14286 else { $zp = array(); }
14287 if (isset($zp['SIZE'])) { unset($zp['SIZE']); }
14288 if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); }
14289 // Disallow margin-left or -right on :LEFT or :RIGHT
14290 if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); }
14291 if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); }
14292 if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
14293
14294 // If first page
14295 if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>FIRST']) && $first) { $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>FIRST']; }
14296 else { $zp = array(); }
14297 if (isset($zp['SIZE'])) { unset($zp['SIZE']); }
14298 if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); }
14299 if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
14300
14301 // If named page
14302 if ($name) {
14303 if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name])) { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name]; }
14304 else { $zp = array(); }
14305 if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
14306
14307 if (isset($p['EVEN-HEADER-NAME']) && $oddEven=='E') {
14308 $p['HEADER'] = $p['EVEN-HEADER-NAME']; unset($p['EVEN-HEADER-NAME']);
14309 }
14310 if (isset($p['ODD-HEADER-NAME']) && $oddEven!='E') {
14311 $p['HEADER'] = $p['ODD-HEADER-NAME']; unset($p['ODD-HEADER-NAME']);
14312 }
14313 if (isset($p['EVEN-FOOTER-NAME']) && $oddEven=='E') {
14314 $p['FOOTER'] = $p['EVEN-FOOTER-NAME']; unset($p['EVEN-FOOTER-NAME']);
14315 }
14316 if (isset($p['ODD-FOOTER-NAME']) && $oddEven!='E') {
14317 $p['FOOTER'] = $p['ODD-FOOTER-NAME']; unset($p['ODD-FOOTER-NAME']);
14318 }
14319
14320 // If named right/Odd page
14321 if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>RIGHT']) && $side=='R') { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>RIGHT']; }
14322 else { $zp = array(); }
14323 if (isset($zp['SIZE'])) { unset($zp['SIZE']); }
14324 if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); }
14325 // Disallow margin-left or -right on :LEFT or :RIGHT
14326 if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); }
14327 if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); }
14328 if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
14329
14330 // If named left/Even page
14331 if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>LEFT']) && $side=='L') { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>LEFT']; }
14332 else { $zp = array(); }
14333 if (isset($zp['SIZE'])) { unset($zp['SIZE']); }
14334 if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); }
14335 // Disallow margin-left or -right on :LEFT or :RIGHT
14336 if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); }
14337 if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); }
14338 if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
14339
14340 // If named first page
14341 if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>FIRST']) && $first) { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>FIRST']; }
14342 else { $zp = array(); }
14343 if (isset($zp['SIZE'])) { unset($zp['SIZE']); }
14344 if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); }
14345 if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
14346 }
14347
14348 $orientation = $mgl = $mgr = $mgt = $mgb = $mgh = $mgf = '';
14349 $header = $footer = '';
14350 $resetpagenum = $pagenumstyle = $suppress = '';
14351 $marks = '';
14352 $bg = array();
14353
14354 $newformat = '';
14355
14356
14357 if (isset($p['SHEET-SIZE']) && is_array($p['SHEET-SIZE'])) {
14358 $newformat = $p['SHEET-SIZE'];
14359 if ($newformat[0] > $newformat[1]) { // landscape
14360 $newformat = array_reverse($newformat);
14361 $p['ORIENTATION'] = 'L';
14362 }
14363 else { $p['ORIENTATION'] = 'P'; }
14364 $this->_setPageSize($newformat, $p['ORIENTATION']);
14365 }
14366
14367 if (isset($p['SIZE']) && is_array($p['SIZE']) && !$newformat) {
14368 if ($p['SIZE']['W'] > $p['SIZE']['H']) { $p['ORIENTATION'] = 'L'; }
14369 else { $p['ORIENTATION'] = 'P'; }
14370 }
14371 if (is_array($p['SIZE'])) {
14372 if ($p['SIZE']['W'] > $this->fw) { $p['SIZE']['W'] = $this->fw; } // mPD 4.2 use fw not fPt
14373 if ($p['SIZE']['H'] > $this->fh) { $p['SIZE']['H'] = $this->fh; }
14374 if (($p['ORIENTATION']==$this->DefOrientation && !$newformat) || ($newformat && $p['ORIENTATION']=='P')) {
14375 $outer_width_LR = ($this->fw - $p['SIZE']['W'])/2;
14376 $outer_width_TB = ($this->fh - $p['SIZE']['H'])/2;
14377 }
14378 else {
14379 $outer_width_LR = ($this->fh - $p['SIZE']['W'])/2;
14380 $outer_width_TB = ($this->fw - $p['SIZE']['H'])/2;
14381 }
14382 $pgw = $p['SIZE']['W'];
14383 $pgh = $p['SIZE']['H'];
14384 }
14385 else { // AUTO LANDSCAPE PORTRAIT
14386 $outer_width_LR = 0;
14387 $outer_width_TB = 0;
14388 if (!$newformat) {
14389 if (strtoupper($p['SIZE']) == 'AUTO') { $p['ORIENTATION']=$this->DefOrientation; }
14390 else if (strtoupper($p['SIZE']) == 'LANDSCAPE') { $p['ORIENTATION']='L'; }
14391 else { $p['ORIENTATION']='P'; }
14392 }
14393 if (($p['ORIENTATION']==$this->DefOrientation && !$newformat) || ($newformat && $p['ORIENTATION']=='P')) {
14394 $pgw = $this->fw;
14395 $pgh = $this->fh;
14396 }
14397 else {
14398 $pgw = $this->fh;
14399 $pgh = $this->fw;
14400 }
14401 }
14402
14403 if (isset($p['HEADER']) && $p['HEADER']) { $header = $p['HEADER']; }
14404 if (isset($p['FOOTER']) && $p['FOOTER']) { $footer = $p['FOOTER']; }
14405 if (isset($p['RESETPAGENUM']) && $p['RESETPAGENUM']) { $resetpagenum = $p['RESETPAGENUM']; }
14406 if (isset($p['PAGENUMSTYLE']) && $p['PAGENUMSTYLE']) { $pagenumstyle = $p['PAGENUMSTYLE']; }
14407 if (isset($p['SUPPRESS']) && $p['SUPPRESS']) { $suppress = $p['SUPPRESS']; }
14408
14409 if (preg_match('/cross/i', $p['MARKS']) && preg_match('/crop/i', $p['MARKS'])) { $marks = 'CROPCROSS'; }
14410 else if (strtoupper($p['MARKS']) == 'CROP') { $marks = 'CROP'; }
14411 else if (strtoupper($p['MARKS']) == 'CROSS') { $marks = 'CROSS'; }
14412
14413
14414 if (isset($p['BACKGROUND-COLOR']) && $p['BACKGROUND-COLOR']) { $bg['BACKGROUND-COLOR'] = $p['BACKGROUND-COLOR']; }
14415/*-- BACKGROUNDS --*/
14416 if (isset($p['BACKGROUND-GRADIENT']) && $p['BACKGROUND-GRADIENT']) { $bg['BACKGROUND-GRADIENT'] = $p['BACKGROUND-GRADIENT']; }
14417 if (isset($p['BACKGROUND-IMAGE']) && $p['BACKGROUND-IMAGE']) { $bg['BACKGROUND-IMAGE'] = $p['BACKGROUND-IMAGE']; }
14418 if (isset($p['BACKGROUND-REPEAT']) && $p['BACKGROUND-REPEAT']) { $bg['BACKGROUND-REPEAT'] = $p['BACKGROUND-REPEAT']; }
14419 if (isset($p['BACKGROUND-POSITION']) && $p['BACKGROUND-POSITION']) { $bg['BACKGROUND-POSITION'] = $p['BACKGROUND-POSITION']; }
14420 if (isset($p['BACKGROUND-IMAGE-RESIZE']) && $p['BACKGROUND-IMAGE-RESIZE']) { $bg['BACKGROUND-IMAGE-RESIZE'] = $p['BACKGROUND-IMAGE-RESIZE']; }
14421 if (isset($p['BACKGROUND-IMAGE-OPACITY'])) { $bg['BACKGROUND-IMAGE-OPACITY'] = $p['BACKGROUND-IMAGE-OPACITY']; }
14422/*-- END BACKGROUNDS --*/
14423
14424 if (isset($p['MARGIN-LEFT'])) { $mgl = $this->ConvertSize($p['MARGIN-LEFT'],$pgw) + $outer_width_LR; }
14425 if (isset($p['MARGIN-RIGHT'])) { $mgr = $this->ConvertSize($p['MARGIN-RIGHT'],$pgw) + $outer_width_LR; }
14426 if (isset($p['MARGIN-BOTTOM'])) { $mgb = $this->ConvertSize($p['MARGIN-BOTTOM'],$pgh) + $outer_width_TB; }
14427 if (isset($p['MARGIN-TOP'])) { $mgt = $this->ConvertSize($p['MARGIN-TOP'],$pgh) + $outer_width_TB; }
14428 if (isset($p['MARGIN-HEADER'])) { $mgh = $this->ConvertSize($p['MARGIN-HEADER'],$pgh) + $outer_width_TB; }
14429 if (isset($p['MARGIN-FOOTER'])) { $mgf = $this->ConvertSize($p['MARGIN-FOOTER'],$pgh) + $outer_width_TB; }
14430
14431 if (isset($p['ORIENTATION']) && $p['ORIENTATION']) { $orientation = $p['ORIENTATION']; }
14432 $this->page_box['outer_width_LR'] = $outer_width_LR; // Used in MARKS:crop etc.
14433 $this->page_box['outer_width_TB'] = $outer_width_TB;
14434
14435 return array($orientation,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$header,$footer,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat);
14436}
14437/*-- END CSS-PAGE --*/
14438
14439
14440
14441/*-- CSS-FLOAT --*/
14442// Added mPDF 3.0 Float DIV - CLEAR
14443function ClearFloats($clear, $blklvl=0) {
14444 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($blklvl,true);
14445 $end = $currpos = ($this->page*1000 + $this->y);
14446 if ($clear == 'BOTH' && ($l_exists || $r_exists)) {
14447 $this->pageoutput[$this->page] = array();
14448 $end = max($l_max, $r_max, $currpos);
14449 }
14450 else if ($clear == 'RIGHT' && $r_exists) {
14451 $this->pageoutput[$this->page] = array();
14452 $end = max($r_max, $currpos);
14453 }
14454 else if ($clear == 'LEFT' && $l_exists ) {
14455 $this->pageoutput[$this->page] = array();
14456 $end = max($l_max, $currpos);
14457 }
14458 else { return; }
14459 $old_page = $this->page;
14460 $new_page = intval($end/1000);
14461 if ($old_page != $new_page) {
14462 $s = $this->PrintPageBackgrounds();
14463 // Writes after the marker so not overwritten later by page background etc.
14464 $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
14465 $this->pageBackgrounds = array();
14466 $this->page = $new_page;
14467 }
14468 $this->ResetMargins();
14469 $this->pageoutput[$this->page] = array();
14470 $this->y = (($end*1000) % 1000000)/1000; // mod changes operands to integers before processing
14471}
14472
14473
14474// Added mPDF 3.0 Float DIV
14475function GetFloatDivInfo($blklvl=0,$clear=false) {
14476 // If blklvl specified, only returns floats at that level - for ClearFloats
14477 $l_exists = false;
14478 $r_exists = false;
14479 $l_max = 0;
14480 $r_max = 0;
14481 $l_width = 0;
14482 $r_width = 0;
14483 if (count($this->floatDivs)) {
14484 $currpos = ($this->page*1000 + $this->y);
14485 foreach($this->floatDivs AS $f) {
14486 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'])) {
14487 if ($f['side']=='L') {
14488 $l_exists= true;
14489 $l_max = max($l_max, $f['endpos']);
14490 $l_width = max($l_width , $f['w']);
14491 }
14492 if ($f['side']=='R') {
14493 $r_exists= true;
14494 $r_max = max($r_max, $f['endpos']);
14495 $r_width = max($r_width , $f['w']);
14496 }
14497 }
14498 }
14499 }
14500 return array($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width);
14501}
14502/*-- END CSS-FLOAT --*/
14503
14504
14505
14506
14507function OpenTag($tag,$attr)
14508{
14509
14510 // What this gets: < $tag $attr['WIDTH']="90px" > does not get content here </closeTag here>
14511 // Correct tags where HTML specifies optional end tags,
14512 // and/or does not allow nesting e.g. P inside P, or
14513 if ($this->allow_html_optional_endtags) {
14514 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 ); }
14515 if ($tag == 'DD' && $this->lastoptionaltag == 'DD') { $this->CloseTag($this->lastoptionaltag ); }
14516 if ($tag == 'DD' && $this->lastoptionaltag == 'DT') { $this->CloseTag($this->lastoptionaltag ); }
14517 if ($tag == 'DT' && $this->lastoptionaltag == 'DD') { $this->CloseTag($this->lastoptionaltag ); }
14518 if ($tag == 'DT' && $this->lastoptionaltag == 'DT') { $this->CloseTag($this->lastoptionaltag ); }
14519 if ($tag == 'LI' && $this->lastoptionaltag == 'LI') { $this->CloseTag($this->lastoptionaltag ); }
14520 if (($tag == 'TD' || $tag == 'TH') && $this->lastoptionaltag == 'TD') { $this->CloseTag($this->lastoptionaltag ); } // *TABLES*
14521 if (($tag == 'TD' || $tag == 'TH') && $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); } // *TABLES*
14522 if ($tag == 'TR' && $this->lastoptionaltag == 'TR') { $this->CloseTag($this->lastoptionaltag ); } // *TABLES*
14523 if ($tag == 'TR' && $this->lastoptionaltag == 'TD') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); $this->CloseTag('THEAD'); } // *TABLES*
14524 if ($tag == 'TR' && $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); $this->CloseTag('THEAD'); } // *TABLES*
14525 if ($tag == 'OPTION' && $this->lastoptionaltag == 'OPTION') { $this->CloseTag($this->lastoptionaltag ); }
14526 }
14527
14528 $align = array('left'=>'L','center'=>'C','right'=>'R','top'=>'T','text-top'=>'TT','middle'=>'M','baseline'=>'BS','bottom'=>'B','text-bottom'=>'TB','justify'=>'J');
14529
14530 $this->ignorefollowingspaces=false;
14531
14532 //Opening tag
14533 switch($tag){
14534
14535 case 'DOTTAB':
14536 $objattr = array();
14537 $objattr['type'] = 'dottab';
14538 $dots=str_repeat('.', 3)." "; // minimum number of dots
14539 $objattr['width'] = $this->GetStringWidth($dots);
14540 $objattr['margin_top'] = 0;
14541 $objattr['margin_bottom'] = 0;
14542 $objattr['margin_left'] = 0;
14543 $objattr['margin_right'] = 0;
14544 $objattr['height'] = 0;
14545 $objattr['colorarray'] = $this->colorarray;
14546 $objattr['border_top']['w'] = 0;
14547 $objattr['border_bottom']['w'] = 0;
14548 $objattr['border_left']['w'] = 0;
14549 $objattr['border_right']['w'] = 0;
14550
14551 // mPDF 5.6.19
14552 $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr); // mPDF 5.6.33
14553 if (isset($properties['OUTDENT'])) { // mPDF 5.6.33
14554 $objattr['outdent'] = $this->ConvertSize($properties['OUTDENT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
14555 }
14556 else if (isset($attr['OUTDENT'])) {
14557 $objattr['outdent'] = $this->ConvertSize($attr['OUTDENT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
14558 }
14559 else { $objattr['outdent'] = 0; }
14560
14561 $objattr['fontfamily'] = $this->FontFamily;
14562 $objattr['fontsize'] = $this->FontSizePt;
14563
14564 $e = "\xbb\xa4\xactype=dottab,objattr=".serialize($objattr)."\xbb\xa4\xac";
14565/*-- TABLES --*/
14566 // Output it to buffers
14567 if ($this->tableLevel) {
14568 if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
14569 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
14570 }
14571 elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
14572 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
14573 }
14574 $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
14575 $this->_saveCellTextBuffer($e);
14576 }
14577 else {
14578/*-- END TABLES --*/
14579 $this->_saveTextBuffer($e);
14580 } // *TABLES*
14581 break;
14582
14583 case 'PAGEHEADER':
14584 case 'PAGEFOOTER':
14585 $this->ignorefollowingspaces = true;
14586 if ($attr['NAME']) { $pname = $attr['NAME']; }
14587 else { $pname = '_default'; }
14588
14589 if ($tag=='PAGEHEADER') { $p = &$this->pageheaders[$pname]; }
14590 else { $p = &$this->pagefooters[$pname]; }
14591
14592 $p['L']=array();
14593 $p['C']=array();
14594 $p['R']=array();
14595 $p['L']['font-style'] = '';
14596 $p['C']['font-style'] = '';
14597 $p['R']['font-style'] = '';
14598
14599 if (isset($attr['CONTENT-LEFT'])) {
14600 $p['L']['content'] = $attr['CONTENT-LEFT'];
14601 }
14602 if (isset($attr['CONTENT-CENTER'])) {
14603 $p['C']['content'] = $attr['CONTENT-CENTER'];
14604 }
14605 if (isset($attr['CONTENT-RIGHT'])) {
14606 $p['R']['content'] = $attr['CONTENT-RIGHT'];
14607 }
14608
14609 if (isset($attr['HEADER-STYLE']) || isset($attr['FOOTER-STYLE'])) { // font-family,size,weight,style,color
14610 if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE']); }
14611 else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE']); }
14612 if (isset($properties['FONT-FAMILY'])) {
14613 $p['L']['font-family'] = $properties['FONT-FAMILY'];
14614 $p['C']['font-family'] = $properties['FONT-FAMILY'];
14615 $p['R']['font-family'] = $properties['FONT-FAMILY'];
14616 }
14617 if (isset($properties['FONT-SIZE'])) {
14618 $p['L']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK;
14619 $p['C']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK;
14620 $p['R']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK;
14621 }
14622 if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') {
14623 $p['L']['font-style'] = 'B';
14624 $p['C']['font-style'] = 'B';
14625 $p['R']['font-style'] = 'B';
14626 }
14627 if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') {
14628 $p['L']['font-style'] .= 'I';
14629 $p['C']['font-style'] .= 'I';
14630 $p['R']['font-style'] .= 'I';
14631 }
14632 if (isset($properties['COLOR'])) {
14633 $p['L']['color'] = $properties['COLOR'];
14634 $p['C']['color'] = $properties['COLOR'];
14635 $p['R']['color'] = $properties['COLOR'];
14636 }
14637 }
14638 if (isset($attr['HEADER-STYLE-LEFT']) || isset($attr['FOOTER-STYLE-LEFT'])) {
14639 if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-LEFT']); }
14640 else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-LEFT']); }
14641 if (isset($properties['FONT-FAMILY'])) { $p['L']['font-family'] = $properties['FONT-FAMILY']; }
14642 if (isset($properties['FONT-SIZE'])) { $p['L']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; }
14643 if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['L']['font-style'] ='B'; }
14644 if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['L']['font-style'] .='I'; }
14645 if (isset($properties['COLOR'])) { $p['L']['color'] = $properties['COLOR']; }
14646 }
14647 if (isset($attr['HEADER-STYLE-CENTER']) || isset($attr['FOOTER-STYLE-CENTER'])) {
14648 if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-CENTER']); }
14649 else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-CENTER']); }
14650 if (isset($properties['FONT-FAMILY'])) { $p['C']['font-family'] = $properties['FONT-FAMILY']; }
14651 if (isset($properties['FONT-SIZE'])) { $p['C']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; }
14652 if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['C']['font-style'] = 'B'; }
14653 if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['C']['font-style'] .= 'I'; }
14654 if (isset($properties['COLOR'])) { $p['C']['color'] = $properties['COLOR']; }
14655 }
14656 if (isset($attr['HEADER-STYLE-RIGHT']) || isset($attr['FOOTER-STYLE-RIGHT'])) {
14657 if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-RIGHT']); }
14658 else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-RIGHT']); }
14659 if (isset($properties['FONT-FAMILY'])) { $p['R']['font-family'] = $properties['FONT-FAMILY']; }
14660 if (isset($properties['FONT-SIZE'])) { $p['R']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; }
14661 if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['R']['font-style'] = 'B'; }
14662 if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['R']['font-style'] .= 'I'; }
14663 if (isset($properties['COLOR'])) { $p['R']['color'] = $properties['COLOR']; }
14664 }
14665 if (isset($attr['LINE']) && $attr['LINE']) { // 0|1|on|off
14666 if ($attr['LINE']=='1' || strtoupper($attr['LINE'])=='ON') { $lineset=1; }
14667 else { $lineset=0; }
14668 $p['line'] = $lineset;
14669 }
14670 break;
14671
14672
14673/*-- HTMLHEADERS-FOOTERS --*/
14674 case 'SETHTMLPAGEHEADER':
14675 case 'SETHTMLPAGEFOOTER':
14676 $this->ignorefollowingspaces = true;
14677 if (isset($attr['NAME']) && $attr['NAME']) { $pname = $attr['NAME']; }
14678 else { $pname = '_default'; }
14679 if (isset($attr['PAGE']) && $attr['PAGE']) { // O|odd|even|E|ALL|[blank]
14680 if (strtoupper($attr['PAGE'])=='O' || strtoupper($attr['PAGE'])=='ODD') { $side='odd'; }
14681 else if (strtoupper($attr['PAGE'])=='E' || strtoupper($attr['PAGE'])=='EVEN') { $side='even'; }
14682 else if (strtoupper($attr['PAGE'])=='ALL') { $side='both'; }
14683 else { $side='odd'; }
14684 }
14685 else { $side='odd'; }
14686 if (isset($attr['VALUE']) && $attr['VALUE']) { // -1|1|on|off
14687 if ($attr['VALUE']=='1' || strtoupper($attr['VALUE'])=='ON') { $set=1; }
14688 else if ($attr['VALUE']=='-1' || strtoupper($attr['VALUE'])=='OFF') { $set=0; }
14689 else { $set=1; }
14690 }
14691 else { $set=1; }
14692 if (isset($attr['SHOW-THIS-PAGE']) && $attr['SHOW-THIS-PAGE'] && $tag=='SETHTMLPAGEHEADER') { $write = 1; }
14693 else { $write = 0; }
14694 if ($side=='odd' || $side=='both') {
14695 if ($set && $tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader($this->pageHTMLheaders[$pname],'O',$write); }
14696 else if ($set && $tag=='SETHTMLPAGEFOOTER') { $this->SetHTMLFooter($this->pageHTMLfooters[$pname],'O'); }
14697 else if ($tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader('','O'); }
14698 else { $this->SetHTMLFooter('','O'); }
14699 }
14700 if ($side=='even' || $side=='both') {
14701 if ($set && $tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader($this->pageHTMLheaders[$pname],'E',$write); }
14702 else if ($set && $tag=='SETHTMLPAGEFOOTER') { $this->SetHTMLFooter($this->pageHTMLfooters[$pname],'E'); }
14703 else if ($tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader('','E'); }
14704 else { $this->SetHTMLFooter('','E'); }
14705 }
14706 break;
14707/*-- END HTMLHEADERS-FOOTERS --*/
14708
14709 case 'SETPAGEHEADER':
14710 case 'SETPAGEFOOTER':
14711 $this->ignorefollowingspaces = true;
14712 if (isset($attr['NAME']) && $attr['NAME']) { $pname = $attr['NAME']; }
14713 else { $pname = '_default'; }
14714 if (isset($attr['PAGE']) && $attr['PAGE']) { // O|odd|even|E|ALL|[blank]
14715 if (strtoupper($attr['PAGE'])=='O' || strtoupper($attr['PAGE'])=='ODD') { $side='odd'; }
14716 else if (strtoupper($attr['PAGE'])=='E' || strtoupper($attr['PAGE'])=='EVEN') { $side='even'; }
14717 else if (strtoupper($attr['PAGE'])=='ALL') { $side='both'; }
14718 else { $side='odd'; }
14719 }
14720 else { $side='odd'; }
14721 if (isset($attr['VALUE']) && $attr['VALUE']) { // -1|1|on|off
14722 if ($attr['VALUE']=='1' || strtoupper($attr['VALUE'])=='ON') { $set=1; }
14723 else if ($attr['VALUE']=='-1' || strtoupper($attr['VALUE'])=='OFF') { $set=0; }
14724 else { $set=1; }
14725 }
14726 else { $set=1; }
14727 if ($side=='odd' || $side=='both') {
14728 if ($set && $tag=='SETPAGEHEADER') { $this->headerDetails['odd'] = $this->pageheaders[$pname]; }
14729 else if ($set && $tag=='SETPAGEFOOTER') { $this->footerDetails['odd'] = $this->pagefooters[$pname]; }
14730 else if ($tag=='SETPAGEHEADER') { $this->headerDetails['odd'] = array(); }
14731 else { $this->footerDetails['odd'] = array(); }
14732 if (!$this->mirrorMargins || ($this->page)%2!=0) { // ODD
14733 if ($tag=='SETPAGEHEADER') { $this->_setAutoHeaderHeight($this->headerDetails['odd'],$this->HTMLHeader); }
14734 if ($tag=='SETPAGEFOOTER') { $this->_setAutoFooterHeight($this->footerDetails['odd'],$this->HTMLFooter); }
14735 }
14736 }
14737 if ($side=='even' || $side=='both') {
14738 if ($set && $tag=='SETPAGEHEADER') { $this->headerDetails['even'] = $this->pageheaders[$pname]; }
14739 else if ($set && $tag=='SETPAGEFOOTER') { $this->footerDetails['even'] = $this->pagefooters[$pname]; }
14740 else if ($tag=='SETPAGEHEADER') { $this->headerDetails['even'] = array(); }
14741 else { $this->footerDetails['even'] = array(); }
14742 if ($this->mirrorMargins && ($this->page)%2==0) { // EVEN
14743 if ($tag=='SETPAGEHEADER') { $this->_setAutoHeaderHeight($this->headerDetails['even'],$this->HTMLHeaderE); }
14744 if ($tag=='SETPAGEFOOTER') { $this->_setAutoFooterHeight($this->footerDetails['even'],$this->HTMLFooterE); }
14745 }
14746 }
14747 if (isset($attr['SHOW-THIS-PAGE']) && $attr['SHOW-THIS-PAGE'] && $tag=='SETPAGEHEADER') {
14748 $this->Header();
14749 }
14750 break;
14751
14752
14753/*-- TOC --*/
14754 case 'TOC': //added custom-tag - set Marker for insertion later of ToC
14755 if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
14756 if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
14757 $this->tocontents->openTagTOC($attr);
14758 break;
14759
14760
14761
14762 case 'TOCPAGEBREAK': // custom-tag - set Marker for insertion later of ToC AND adds PAGEBREAK
14763 if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
14764 if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
14765 list($isbreak,$toc_id) = $this->tocontents->openTagTOCPAGEBREAK($attr);
14766 if ($isbreak) break;
14767 // No break - continues as PAGEBREAK...
14768/*-- END TOC --*/
14769
14770
14771 case 'PAGE_BREAK': //custom-tag
14772 case 'PAGEBREAK': //custom-tag
14773 case 'NEWPAGE': //custom-tag
14774 case 'FORMFEED': //custom-tag
14775
14776 $save_blklvl = $this->blklvl;
14777 $save_blk = $this->blk;
14778 $save_silp = $this->saveInlineProperties();
14779 $save_spanlvl = $this->spanlvl;
14780 $save_ilp = $this->InlineProperties;
14781
14782 // Close any open block tags
14783 for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
14784 if(!empty($this->textbuffer)) { //Output previously buffered content
14785 $this->printbuffer($this->textbuffer);
14786 $this->textbuffer=array();
14787 }
14788 $this->ignorefollowingspaces = true;
14789 $save_cols = false;
14790/*-- COLUMNS --*/
14791 if ($this->ColActive) {
14792 $save_cols = true;
14793 $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off
14794 $this->SetColumns(0);
14795 }
14796/*-- END COLUMNS --*/
14797
14798
14799 if (isset($attr['SHEET-SIZE']) && $tag != 'FORMFEED' && !$this->restoreBlockPageBreaks) {
14800 // Convert to same types as accepted in initial mPDF() A4, A4-L, or array(w,h)
14801 $prop = preg_split('/\s+/',trim($attr['SHEET-SIZE']));
14802 if (count($prop) == 2 ) {
14803 $newformat = array($this->ConvertSize($prop[0]), $this->ConvertSize($prop[1]));
14804 }
14805 else { $newformat = $attr['SHEET-SIZE']; }
14806 }
14807 else { $newformat = ''; }
14808
14809 $mgr = $mgl = $mgt = $mgb = $mgh = $mgf = '';
14810 if (isset($attr['MARGIN-RIGHT'])) { $mgr = $this->ConvertSize($attr['MARGIN-RIGHT'],$this->w,$this->FontSize,false); }
14811 if (isset($attr['MARGIN-LEFT'])) { $mgl = $this->ConvertSize($attr['MARGIN-LEFT'],$this->w,$this->FontSize,false); }
14812 if (isset($attr['MARGIN-TOP'])) { $mgt = $this->ConvertSize($attr['MARGIN-TOP'],$this->w,$this->FontSize,false); }
14813 if (isset($attr['MARGIN-BOTTOM'])) { $mgb = $this->ConvertSize($attr['MARGIN-BOTTOM'],$this->w,$this->FontSize,false); }
14814 if (isset($attr['MARGIN-HEADER'])) { $mgh = $this->ConvertSize($attr['MARGIN-HEADER'],$this->w,$this->FontSize,false); }
14815 if (isset($attr['MARGIN-FOOTER'])) { $mgf = $this->ConvertSize($attr['MARGIN-FOOTER'],$this->w,$this->FontSize,false); }
14816 $ohname = $ehname = $ofname = $efname = '';
14817 if (isset($attr['ODD-HEADER-NAME'])) { $ohname = $attr['ODD-HEADER-NAME']; }
14818 if (isset($attr['EVEN-HEADER-NAME'])) { $ehname = $attr['EVEN-HEADER-NAME']; }
14819 if (isset($attr['ODD-FOOTER-NAME'])) { $ofname = $attr['ODD-FOOTER-NAME']; }
14820 if (isset($attr['EVEN-FOOTER-NAME'])) { $efname = $attr['EVEN-FOOTER-NAME']; }
14821 $ohvalue = $ehvalue = $ofvalue = $efvalue = 0;
14822 if (isset($attr['ODD-HEADER-VALUE']) && ($attr['ODD-HEADER-VALUE']=='1' || strtoupper($attr['ODD-HEADER-VALUE'])=='ON')) { $ohvalue = 1; }
14823 else if (isset($attr['ODD-HEADER-VALUE']) && ($attr['ODD-HEADER-VALUE']=='-1' || strtoupper($attr['ODD-HEADER-VALUE'])=='OFF')) { $ohvalue = -1; }
14824 if (isset($attr['EVEN-HEADER-VALUE']) && ($attr['EVEN-HEADER-VALUE']=='1' || strtoupper($attr['EVEN-HEADER-VALUE'])=='ON')) { $ehvalue = 1; }
14825 else if (isset($attr['EVEN-HEADER-VALUE']) && ($attr['EVEN-HEADER-VALUE']=='-1' || strtoupper($attr['EVEN-HEADER-VALUE'])=='OFF')) { $ehvalue = -1; }
14826 if (isset($attr['ODD-FOOTER-VALUE']) && ($attr['ODD-FOOTER-VALUE']=='1' || strtoupper($attr['ODD-FOOTER-VALUE'])=='ON')) { $ofvalue = 1; }
14827 else if (isset($attr['ODD-FOOTER-VALUE']) && ($attr['ODD-FOOTER-VALUE']=='-1' || strtoupper($attr['ODD-FOOTER-VALUE'])=='OFF')) { $ofvalue = -1; }
14828 if (isset($attr['EVEN-FOOTER-VALUE']) && ($attr['EVEN-FOOTER-VALUE']=='1' || strtoupper($attr['EVEN-FOOTER-VALUE'])=='ON')) { $efvalue = 1; }
14829 else if (isset($attr['EVEN-FOOTER-VALUE']) && ($attr['EVEN-FOOTER-VALUE']=='-1' || strtoupper($attr['EVEN-FOOTER-VALUE'])=='OFF')) { $efvalue = -1; }
14830
14831 if (isset($attr['ORIENTATION']) && (strtoupper($attr['ORIENTATION'])=='L' || strtoupper($attr['ORIENTATION'])=='LANDSCAPE')) { $orient = 'L'; }
14832 else if (isset($attr['ORIENTATION']) && (strtoupper($attr['ORIENTATION'])=='P' || strtoupper($attr['ORIENTATION'])=='PORTRAIT')) { $orient = 'P'; }
14833 else { $orient = $this->CurOrientation; }
14834
14835 if (isset($attr['PAGE-SELECTOR']) && $attr['PAGE-SELECTOR']) { $pagesel = $attr['PAGE-SELECTOR']; }
14836 else { $pagesel = ''; }
14837
14838 $resetpagenum = '';
14839 $pagenumstyle = '';
14840 $suppress = '';
14841 if (isset($attr['RESETPAGENUM'])) { $resetpagenum = $attr['RESETPAGENUM']; }
14842 if (isset($attr['PAGENUMSTYLE'])) { $pagenumstyle = $attr['PAGENUMSTYLE']; }
14843 if (isset($attr['SUPPRESS'])) { $suppress = $attr['SUPPRESS']; }
14844
14845 if ($tag == 'TOCPAGEBREAK') { $type = 'NEXT-ODD'; }
14846 else if(isset($attr['TYPE'])) { $type = strtoupper($attr['TYPE']); }
14847 else { $type = ''; }
14848
14849 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); }
14850 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); }
14851 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); }
14852 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); }
14853 else { $this->AddPage($orient,'', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); }
14854
14855/*-- TOC --*/
14856 if ($tag == 'TOCPAGEBREAK') {
14857 if ($toc_id) { $this->tocontents->m_TOC[$toc_id]['TOCmark'] = $this->page; }
14858 else { $this->tocontents->TOCmark = $this->page; }
14859 }
14860/*-- END TOC --*/
14861
14862/*-- COLUMNS --*/
14863 if ($save_cols) {
14864 // Restore columns
14865 $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
14866 }
14867/*-- END COLUMNS --*/
14868 if (($tag == 'FORMFEED' || $this->restoreBlockPagebreaks) && !$this->tableLevel && !$this->listlvl) {
14869 $this->blk = $save_blk;
14870 // Re-open block tags
14871 $t = $this->blk[0]['tag'];
14872 $a = $this->blk[0]['attr'];
14873 $this->blklvl = 0;
14874 for ($b=0; $b<=$save_blklvl;$b++) {
14875 $tc = $t;
14876 $ac = $a;
14877 $t = $this->blk[$b+1]['tag'];
14878 $a = $this->blk[$b+1]['attr'];
14879 unset($this->blk[$b+1]);
14880 $this->OpenTag($tc,$ac);
14881 }
14882 $this->spanlvl = $save_spanlvl;
14883 $this->InlineProperties = $save_ilp;
14884 $this->restoreInlineProperties($save_silp);
14885 }
14886
14887 break;
14888
14889
14890/*-- TOC --*/
14891 case 'TOCENTRY':
14892 if (isset($attr['CONTENT']) && $attr['CONTENT']) {
14893 $objattr = array();
14894 $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
14895 $objattr['type'] = 'toc';
14896 if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['toclevel'] = $attr['LEVEL']; } else { $objattr['toclevel'] = 0; }
14897 if (isset($attr['NAME']) && $attr['NAME']) { $objattr['toc_id'] = $attr['NAME']; } else { $objattr['toc_id'] = 0; }
14898 $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac";
14899 if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); } // *TABLES*
14900 else { // *TABLES*
14901 $this->textbuffer[] = array($e);
14902 } // *TABLES*
14903 }
14904 break;
14905/*-- END TOC --*/
14906
14907/*-- INDEX --*/
14908 case 'INDEXENTRY':
14909 if (isset($attr['CONTENT']) && $attr['CONTENT']) {
14910 if (isset($attr['XREF']) && $attr['XREF']) {
14911 $this->IndexEntry(htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES),$attr['XREF']);
14912 break;
14913 }
14914 $objattr = array();
14915 $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
14916 $objattr['type'] = 'indexentry';
14917 $e = "\xbb\xa4\xactype=indexentry,objattr=".serialize($objattr)."\xbb\xa4\xac";
14918 if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); } // *TABLES*
14919 else { // *TABLES*
14920 $this->textbuffer[] = array($e);
14921 } // *TABLES*
14922 }
14923 break;
14924
14925
14926 case 'INDEXINSERT':
14927 if (isset($attr['FONT-SIZE'])) { $reffontsize = $attr['FONT-SIZE']; } else { $reffontsize = ''; }
14928 if (isset($attr['LINE-SPACING']) && $attr['LINE-SPACING']) { $linespacing = $attr['LINE-SPACING']; } else { $linespacing = ''; }
14929 if (isset($attr['DIV-FONT-SIZE']) && $attr['DIV-FONT-SIZE']) { $divlettfontsize = $attr['DIV-FONT-SIZE']; } else { $divlettfontsize = ''; }
14930 if (isset($attr['FONT']) && $attr['FONT']) { $reffont = $attr['FONT']; } else { $reffont = ''; }
14931 if (isset($attr['DIV-FONT']) && $attr['DIV-FONT']) { $divlettfont = $attr['DIV-FONT']; } else { $divlettfont = ''; }
14932 if (isset($attr['COLS']) && $attr['COLS']) { $cols = $attr['COLS']; } else { $cols = 1; }
14933 if (isset($attr['OFFSET']) && $attr['OFFSET']) { $offset = $attr['OFFSET']; } else { $offset = 3; }
14934 if (isset($attr['GAP']) && $attr['GAP']) { $gap = $attr['GAP']; } else { $gap = 5; }
14935
14936 if (isset($attr['USEDIVLETTERS']) && (strtoupper($attr['USEDIVLETTERS'])=='OFF' || $attr['USEDIVLETTERS']==-1 || $attr['USEDIVLETTERS']==='0')) { $usedivletters = 0; }
14937 else { $usedivletters = 1; }
14938
14939 if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $links = true; }
14940 else { $links = false; }
14941 $this->CreateIndex($cols, $reffontsize, $linespacing, $offset, $usedivletters, $divlettfontsize, $gap, $reffont,$divlettfont, $links);
14942 break;
14943/*-- END INDEX --*/
14944
14945/*-- WATERMARK --*/
14946
14947 case 'WATERMARKTEXT':
14948 if (isset($attr['CONTENT']) && $attr['CONTENT']) { $txt = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES); } else { $txt = ''; }
14949 if (isset($attr['ALPHA']) && $attr['ALPHA']>0) { $alpha = $attr['ALPHA']; } else { $alpha = -1; }
14950 $this->SetWatermarkText($txt, $alpha);
14951 break;
14952
14953
14954 case 'WATERMARKIMAGE':
14955 if (isset($attr['SRC'])) { $src = $attr['SRC']; } else { $src = ''; }
14956 if (isset($attr['ALPHA']) && $attr['ALPHA']>0) { $alpha = $attr['ALPHA']; } else { $alpha = -1; }
14957 if (isset($attr['SIZE']) && $attr['SIZE']) {
14958 $size = $attr['SIZE'];
14959 if (strpos($size,',')) { $size = explode(',',$size); }
14960 }
14961 else { $size = 'D'; }
14962 if (isset($attr['POSITION']) && $attr['POSITION']) { // mPDF 5.7.2
14963 $pos = $attr['POSITION'];
14964 if (strpos($pos,',')) { $pos = explode(',',$pos); }
14965 }
14966 else { $pos = 'P'; }
14967 $this->SetWatermarkImage($src, $alpha, $size, $pos);
14968 break;
14969/*-- END WATERMARK --*/
14970
14971/*-- BOOKMARKS --*/
14972 case 'BOOKMARK':
14973 if (isset($attr['CONTENT'])) {
14974 $objattr = array();
14975 $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
14976 $objattr['type'] = 'bookmark';
14977 if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['bklevel'] = $attr['LEVEL']; } else { $objattr['bklevel'] = 0; }
14978 $e = "\xbb\xa4\xactype=bookmark,objattr=".serialize($objattr)."\xbb\xa4\xac";
14979 if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); } // *TABLES*
14980 else { // *TABLES*
14981 $this->textbuffer[] = array($e);
14982 } // *TABLES*
14983 }
14984 break;
14985/*-- END BOOKMARKS --*/
14986
14987/*-- ANNOTATIONS --*/
14988 case 'ANNOTATION':
14989
14990 //if (isset($attr['CONTENT']) && !$this->writingHTMLheader && !$this->writingHTMLfooter) { // Stops annotations in FixedPos
14991 if (isset($attr['CONTENT'])) {
14992 $objattr = array();
14993 $objattr['margin_top'] = 0;
14994 $objattr['margin_bottom'] = 0;
14995 $objattr['margin_left'] = 0;
14996 $objattr['margin_right'] = 0;
14997 $objattr['width'] = 0;
14998 $objattr['height'] = 0;
14999 $objattr['border_top']['w'] = 0;
15000 $objattr['border_bottom']['w'] = 0;
15001 $objattr['border_left']['w'] = 0;
15002 $objattr['border_right']['w'] = 0;
15003 $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
15004 $objattr['type'] = 'annot';
15005 $objattr['POPUP'] = '';
15006 }
15007 else { break; }
15008 if (isset($attr['POS-X'])) { $objattr['POS-X'] = $attr['POS-X']; } else { $objattr['POS-X'] = 0; }
15009 if (isset($attr['POS-Y'])) { $objattr['POS-Y'] = $attr['POS-Y']; } else { $objattr['POS-Y'] = 0; }
15010 if (isset($attr['ICON'])) { $objattr['ICON'] = $attr['ICON']; } else { $objattr['ICON'] = 'Note'; }
15011 if (isset($attr['AUTHOR'])) { $objattr['AUTHOR'] = $attr['AUTHOR']; }
15012 else if (isset($attr['TITLE'])) { $objattr['AUTHOR'] = $attr['TITLE']; } else { $objattr['AUTHOR'] = ''; }
15013 if (isset($attr['FILE'])) { $objattr['FILE'] = $attr['FILE']; } else { $objattr['FILE'] = ''; }
15014 if (isset($attr['SUBJECT'])) { $objattr['SUBJECT'] = $attr['SUBJECT']; } else { $objattr['SUBJECT'] = ''; }
15015 if (isset($attr['OPACITY']) && $attr['OPACITY']>0 && $attr['OPACITY']<=1) { $objattr['OPACITY'] = $attr['OPACITY']; }
15016 else if ($this->annotMargin) { $objattr['OPACITY'] = 1; }
15017 else { $objattr['OPACITY'] = $this->annotOpacity; }
15018 if (isset($attr['COLOR'])) {
15019 $cor = $this->ConvertColor($attr['COLOR']);
15020 if ($cor) { $objattr['COLOR'] = $cor; }
15021 else { $objattr['COLOR'] = $this->ConvertColor('yellow'); }
15022 }
15023 else { $objattr['COLOR'] = $this->ConvertColor('yellow'); }
15024
15025 if (isset($attr['POPUP']) && !empty($attr['POPUP'])) {
15026 $pop = preg_split('/\s+/',trim($attr['POPUP']));
15027 if (count($pop)>1) { $objattr['POPUP'] = $pop; }
15028 else { $objattr['POPUP'] = true; }
15029 }
15030 $e = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac";
15031 if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); } // *TABLES*
15032 else { // *TABLES*
15033 $this->textbuffer[] = array($e);
15034 } // *TABLES*
15035 break;
15036/*-- END ANNOTATIONS --*/
15037
15038
15039/*-- COLUMNS --*/
15040 case 'COLUMNS': //added custom-tag
15041 if (isset($attr['COLUMN-COUNT']) && ($attr['COLUMN-COUNT'] || $attr['COLUMN-COUNT']==='0')) {
15042 // Close any open block tags
15043 for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
15044 if(!empty($this->textbuffer)) { //Output previously buffered content
15045 $this->printbuffer($this->textbuffer);
15046 $this->textbuffer=array();
15047 }
15048
15049 if (isset($attr['VALIGN']) && $attr['VALIGN']) {
15050 if ($attr['VALIGN'] == 'J') { $valign = 'J'; }
15051 else { $valign = $align[$attr['VALIGN']]; }
15052 }
15053 else { $valign = ''; }
15054 if (isset($attr['COLUMN-GAP']) && $attr['COLUMN-GAP']) { $this->SetColumns($attr['COLUMN-COUNT'],$valign,$attr['COLUMN-GAP']); }
15055 else { $this->SetColumns($attr['COLUMN-COUNT'],$valign); }
15056 }
15057 $this->ignorefollowingspaces = true;
15058 break;
15059
15060 case 'COLUMN_BREAK': //custom-tag
15061 case 'COLUMNBREAK': //custom-tag
15062 case 'NEWCOLUMN': //custom-tag
15063 $this->ignorefollowingspaces = true;
15064 $this->NewColumn();
15065 $this->ColumnAdjust = false; // disables all column height adjustment for the page.
15066 break;
15067
15068/*-- END COLUMNS --*/
15069
15070
15071 case 'BDO':
15072 // $this->biDirectional = true;
15073 break;
15074
15075
15076 case 'TTZ':
15077 $this->ttz = true;
15078 $this->InlineProperties[$tag] = $this->saveInlineProperties();
15079 $this->setCSS(array('FONT-FAMILY'=>'czapfdingbats','FONT-WEIGHT'=>'normal','FONT-STYLE'=>'normal'),'INLINE');
15080 break;
15081
15082 case 'TTS':
15083 $this->tts = true;
15084 $this->InlineProperties[$tag] = $this->saveInlineProperties();
15085 $this->setCSS(array('FONT-FAMILY'=>'csymbol','FONT-WEIGHT'=>'normal','FONT-STYLE'=>'normal'),'INLINE');
15086 break;
15087
15088 case 'TTA':
15089 $this->tta = true;
15090 $this->InlineProperties[$tag] = $this->saveInlineProperties();
15091
15092 if (in_array($this->FontFamily,$this->mono_fonts)) {
15093 $this->setCSS(array('FONT-FAMILY'=>'ccourier'),'INLINE');
15094 }
15095 else if (in_array($this->FontFamily,$this->serif_fonts)) {
15096 $this->setCSS(array('FONT-FAMILY'=>'ctimes'),'INLINE');
15097 }
15098 else {
15099 $this->setCSS(array('FONT-FAMILY'=>'chelvetica'),'INLINE');
15100 }
15101 break;
15102
15103
15104
15105 // INLINE PHRASES OR STYLES
15106 case 'SUB':
15107 case 'SUP':
15108 case 'ACRONYM':
15109 case 'BIG':
15110 case 'SMALL':
15111 case 'INS':
15112 case 'S':
15113 case 'STRIKE':
15114 case 'DEL':
15115 case 'STRONG':
15116 case 'CITE':
15117 case 'Q':
15118 case 'EM':
15119 case 'B':
15120 case 'I':
15121 case 'U':
15122 case 'SAMP':
15123 case 'CODE':
15124 case 'KBD':
15125 case 'TT':
15126 case 'VAR':
15127 case 'FONT':
15128 case 'MARK': // mPDF 5.5.09
15129 case 'TIME':
15130
15131 case 'SPAN':
15132/*-- ANNOTATIONS --*/
15133 if ($this->title2annots && isset($attr['TITLE'])) {
15134 $objattr = array();
15135 $objattr['margin_top'] = 0;
15136 $objattr['margin_bottom'] = 0;
15137 $objattr['margin_left'] = 0;
15138 $objattr['margin_right'] = 0;
15139 $objattr['width'] = 0;
15140 $objattr['height'] = 0;
15141 $objattr['border_top']['w'] = 0;
15142 $objattr['border_bottom']['w'] = 0;
15143 $objattr['border_left']['w'] = 0;
15144 $objattr['border_right']['w'] = 0;
15145
15146 $objattr['CONTENT'] = $attr['TITLE'];
15147 $objattr['type'] = 'annot';
15148 $objattr['POS-X'] = 0;
15149 $objattr['POS-Y'] = 0;
15150 $objattr['ICON'] = 'Comment';
15151 $objattr['AUTHOR'] = '';
15152 $objattr['SUBJECT'] = '';
15153 $objattr['OPACITY'] = $this->annotOpacity;
15154 $objattr['COLOR'] = $this->ConvertColor('yellow');
15155 $annot = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac";
15156 }
15157/*-- END ANNOTATIONS --*/
15158
15159 if ($tag == 'SPAN') {
15160 $this->spanlvl++;
15161 $this->InlineProperties['SPAN'][$this->spanlvl] = $this->saveInlineProperties();
15162 if (isset($annot)) { $this->InlineAnnots[$tag][$this->spanlvl] = $annot; } // *ANNOTATIONS*
15163 }
15164 else {
15165 if (!isset($this->InlineProperties[$tag])) $this->InlineProperties[$tag] = $this->saveInlineProperties(); // mPDF 5.4.13
15166 if (isset($annot)) { $this->InlineAnnots[$tag] = $annot; } // *ANNOTATIONS*
15167 }
15168 $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr);
15169 if (!empty($properties)) $this->setCSS($properties,'INLINE');
15170 break;
15171
15172
15173 case 'A':
15174 if (isset($attr['NAME']) and $attr['NAME'] != '') {
15175 $e = '';
15176/*-- BOOKMARKS --*/
15177 if ($this->anchor2Bookmark) {
15178 $objattr = array();
15179 $objattr['CONTENT'] = htmlspecialchars_decode($attr['NAME'],ENT_QUOTES);
15180 $objattr['type'] = 'bookmark';
15181 if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['bklevel'] = $attr['LEVEL']; } else { $objattr['bklevel'] = 0; }
15182 $e = "\xbb\xa4\xactype=bookmark,objattr=".serialize($objattr)."\xbb\xa4\xac";
15183 }
15184/*-- END BOOKMARKS --*/
15185 if($this->tableLevel) { // *TABLES*
15186 $this->_saveCellTextBuffer($e, '', $attr['NAME']); // *TABLES*
15187 } // *TABLES*
15188 else { // *TABLES*
15189 $this->_saveTextBuffer($e, '', $attr['NAME']); //an internal link (adds a space for recognition)
15190 } // *TABLES*
15191 }
15192 if (isset($attr['HREF'])) {
15193 $this->InlineProperties['A'] = $this->saveInlineProperties();
15194 $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
15195 if (!empty($properties)) $this->setCSS($properties,'INLINE');
15196 $this->HREF=htmlspecialchars_decode(urldecode($attr['HREF']));
15197 }
15198 break;
15199
15200 case 'LEGEND': // mPDF 5.4.18
15201 $this->InlineProperties['LEGEND'] = $this->saveInlineProperties();
15202 $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
15203 if (!empty($properties)) $this->setCSS($properties,'INLINE');
15204 break;
15205
15206
15207
15208 case 'PROGRESS': // mPDF 5.5.09
15209 case 'METER': // mPDF 5.5.09
15210 $this->inMeter = true; // mPDF 5.5.09
15211
15212 if (isset($attr['MAX']) && $attr['MAX']) { $max = $attr['MAX']; }
15213 else { $max = 1; }
15214 if (isset($attr['MIN']) && $attr['MIN'] && $tag=='METER') { $min = $attr['MIN']; }
15215 else { $min = 0; }
15216 if ($max < $min) { $max = $min; }
15217
15218 if (isset($attr['VALUE']) && ($attr['VALUE'] || $attr['VALUE']==='0')) {
15219 $value = $attr['VALUE'];
15220 if ($value < $min) { $value = $min; }
15221 else if ($value > $max) { $value = $max; }
15222 }
15223 else { $value = ''; }
15224
15225 if (isset($attr['LOW']) && $attr['LOW']) { $low = $attr['LOW']; }
15226 else { $low = $min; }
15227 if ($low < $min) { $low = $min; }
15228 else if ($low > $max) { $low = $max; }
15229 if (isset($attr['HIGH']) && $attr['HIGH']) { $high = $attr['HIGH']; }
15230 else { $high = $max; }
15231 if ($high < $low) { $high = $low; }
15232 else if ($high > $max) { $high = $max; }
15233 if (isset($attr['OPTIMUM']) && $attr['OPTIMUM']) { $optimum = $attr['OPTIMUM']; }
15234 else { $optimum = $min + (($max-$min)/2); }
15235 if ($optimum < $min) { $optimum = $min; }
15236 else if ($optimum > $max) { $optimum = $max; }
15237 if (isset($attr['TYPE']) && $attr['TYPE']) { $type = $attr['TYPE']; }
15238 else { $type = ''; }
15239 $objattr = array();
15240 $objattr['margin_top'] = 0;
15241 $objattr['margin_bottom'] = 0;
15242 $objattr['margin_left'] = 0;
15243 $objattr['margin_right'] = 0;
15244 $objattr['padding_top'] = 0;
15245 $objattr['padding_bottom'] = 0;
15246 $objattr['padding_left'] = 0;
15247 $objattr['padding_right'] = 0;
15248 $objattr['width'] = 0;
15249 $objattr['height'] = 0;
15250 $objattr['border_top']['w'] = 0;
15251 $objattr['border_bottom']['w'] = 0;
15252 $objattr['border_left']['w'] = 0;
15253 $objattr['border_right']['w'] = 0;
15254
15255 $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
15256 if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') {
15257 return;
15258 }
15259 $objattr['visibility'] = 'visible';
15260 if (isset($properties['VISIBILITY'])) {
15261 $v = strtolower($properties['VISIBILITY']);
15262 if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') {
15263 $objattr['visibility'] = $v;
15264 }
15265 }
15266
15267 if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
15268 if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
15269 if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
15270 if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
15271
15272 if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
15273 if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
15274 if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
15275 if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
15276
15277 if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
15278 if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
15279 if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
15280 if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
15281
15282 if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
15283 $w = 0;
15284 $h = 0;
15285 if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
15286 else if(isset($attr['WIDTH'])) $w = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
15287
15288 if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
15289 else if(isset($attr['HEIGHT'])) $h = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
15290
15291 if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; }
15292 if ($this->HREF) {
15293 if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) {
15294 $href = $this->HREF;
15295 while(array_key_exists($href,$this->internallink)) $href="#".$href;
15296 $this->internallink[$href] = $this->AddLink();
15297 $objattr['link'] = $this->internallink[$href];
15298 }
15299 else { $objattr['link'] = $this->HREF; }
15300 }
15301 $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
15302 $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
15303
15304 // Image file
15305 if (!class_exists('meter', false)) {
15306 include(_MPDF_PATH.'classes/meter.php');
15307 }
15308 $this->meter = new meter();
15309 $svg = $this->meter->makeSVG(strtolower($tag), $type, $value, $max, $min, $optimum, $low, $high);
15310 //Save to local file
15311 $srcpath= _MPDF_TEMP_PATH.'_tempSVG'.uniqid(rand(1,100000),true).'_'.strtolower($tag).'.svg';
15312 file_put_contents($srcpath, $svg);
15313 $orig_srcpath = $srcpath;
15314 $this->GetFullPath($srcpath);
15315
15316 $info=$this->_getImage($srcpath, true, true, $orig_srcpath);
15317 if(!$info) {
15318 $info = $this->_getImage($this->noImageFile);
15319 if ($info) {
15320 $srcpath = $this->noImageFile;
15321 $w = ($info['w'] * (25.4/$this->dpi));
15322 $h = ($info['h'] * (25.4/$this->dpi));
15323 }
15324 }
15325 if(!$info) break;
15326
15327 $objattr['file'] = $srcpath;
15328 //Default width and height calculation if needed
15329 if($w==0 and $h==0) {
15330 // SVG units are pixels
15331 $w = $this->FontSize/(10/_MPDFK) * abs($info['w'])/_MPDFK; // mPDF 5.5.21
15332 $h = $this->FontSize/(10/_MPDFK) * abs($info['h'])/_MPDFK;
15333 }
15334 // IF WIDTH OR HEIGHT SPECIFIED
15335 if($w==0) $w=abs($h*$info['w']/$info['h']);
15336 if($h==0) $h=abs($w*$info['h']/$info['w']);
15337
15338 // Resize to maximum dimensions of page
15339 $maxWidth = $this->blk[$this->blklvl]['inner_width'];
15340 $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 1) ;
15341 if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
15342 if ($w + $extrawidth > $maxWidth ) {
15343 $w = $maxWidth - $extrawidth;
15344 $h=abs($w*$info['h']/$info['w']);
15345 }
15346
15347 if ($h + $extraheight > $maxHeight ) {
15348 $h = $maxHeight - $extraheight;
15349 $w=abs($h*$info['w']/$info['h']);
15350 }
15351 $objattr['type'] = 'image';
15352 $objattr['itype'] = $info['type'];
15353
15354 $objattr['orig_h'] = $info['h'];
15355 $objattr['orig_w'] = $info['w'];
15356 $objattr['wmf_x'] = $info['x'];
15357 $objattr['wmf_y'] = $info['y'];
15358 $objattr['height'] = $h + $extraheight;
15359 $objattr['width'] = $w + $extrawidth;
15360 $objattr['image_height'] = $h;
15361 $objattr['image_width'] = $w;
15362 $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
15363 $properties = array();
15364 if ($this->tableLevel) {
15365 $this->_saveCellTextBuffer($e, $this->HREF);
15366 $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
15367 }
15368 else {
15369 $this->_saveTextBuffer($e, $this->HREF);
15370 }
15371
15372 break;
15373
15374
15375 case 'BR':
15376 // Added mPDF 3.0 Float DIV - CLEAR
15377 if (isset($attr['STYLE'])) {
15378 $properties = $this->cssmgr->readInlineCSS($attr['STYLE']);
15379 if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']),$this->blklvl); } // *CSS-FLOAT*
15380 }
15381
15382
15383/*-- TABLES --*/
15384 if($this->tableLevel) {
15385
15386 if ($this->blockjustfinished || $this->listjustfinished) {
15387 $this->_saveCellTextBuffer("\n");
15388 }
15389
15390 $this->_saveCellTextBuffer("\n");
15391 if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
15392 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
15393 }
15394 elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
15395 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
15396 }
15397 $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
15398 }
15399 else {
15400/*-- END TABLES --*/
15401 if (count($this->textbuffer)) {
15402 $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/ $/','',$this->textbuffer[count($this->textbuffer)-1][0]);
15403 }
15404 $this->_saveTextBuffer("\n");
15405 } // *TABLES*
15406 $this->ignorefollowingspaces = true;
15407 $this->blockjustfinished=false;
15408 $this->listjustfinished=false;
15409
15410 $this->linebreakjustfinished=true;
15411 break;
15412
15413
15414 // *********** BLOCKS ********************
15415
15416
15417 case 'PRE':
15418 $this->ispre=true; // ADDED - Prevents left trim of textbuffer in printbuffer()
15419
15420 case 'DIV':
15421 case 'FORM':
15422 case 'CENTER':
15423
15424 case 'BLOCKQUOTE':
15425 case 'ADDRESS':
15426
15427 case 'CAPTION':
15428 case 'P':
15429 case 'H1':
15430 case 'H2':
15431 case 'H3':
15432 case 'H4':
15433 case 'H5':
15434 case 'H6':
15435 case 'DL':
15436 case 'DT':
15437 case 'DD':
15438 case 'FIELDSET':
15439 // mPDF 5.5.22
15440 case 'DETAILS':
15441 case 'SUMMARY':
15442 // mPDF 5.5.09
15443 case 'ARTICLE':
15444 case 'ASIDE':
15445 case 'FIGURE':
15446 case 'FIGCAPTION':
15447 case 'FOOTER':
15448 case 'HEADER':
15449 case 'HGROUP':
15450 case 'NAV':
15451 case 'SECTION':
15452 $p = $this->cssmgr->PreviewBlockCSS($tag,$attr);
15453 if(isset($p['DISPLAY']) && strtolower($p['DISPLAY'])=='none') {
15454 $this->blklvl++;
15455 $this->blk[$this->blklvl]['hide'] = true;
15456 return;
15457 }
15458 if($tag == 'CAPTION') {
15459 // position is written in AdjstHTML
15460 if (isset($attr['POSITION']) && strtolower($attr['POSITION'])=='bottom') { $divpos = 'B'; }
15461 else { $divpos = 'T'; }
15462 if (isset($attr['ALIGN']) && strtolower($attr['ALIGN'])=='bottom') { $cappos = 'B'; }
15463 else if (isset($p['CAPTION-SIDE']) && strtolower($p['CAPTION-SIDE'])=='bottom') { $cappos = 'B'; }
15464 else { $cappos = 'T'; }
15465 if (isset($attr['ALIGN'])) { unset($attr['ALIGN']); }
15466 if ($cappos != $divpos) {
15467 $this->blklvl++;
15468 $this->blk[$this->blklvl]['hide'] = true;
15469 return;
15470 }
15471 }
15472
15473/*-- FORMS --*/
15474 if($tag == 'FORM') {
15475 if (isset($attr['METHOD']) && strtolower($attr['METHOD'])=='get') { $this->form->formMethod = 'GET'; }
15476 else { $this->form->formMethod = 'POST'; }
15477 if (isset($attr['ACTION'])) { $this->form->formAction = $attr['ACTION']; }
15478 else { $this->form->formAction = ''; }
15479 }
15480/*-- END FORMS --*/
15481
15482
15483/*-- CSS-POSITION --*/
15484 if ((isset($p['POSITION']) && (strtolower($p['POSITION'])=='fixed' || strtolower($p['POSITION'])=='absolute')) && $this->blklvl==0) {
15485 if ($this->inFixedPosBlock) {
15486 $this->Error("Cannot nest block with position:fixed or position:absolute");
15487 }
15488 $this->inFixedPosBlock = true;
15489 return;
15490 }
15491/*-- END CSS-POSITION --*/
15492 // Start Block
15493 $this->ignorefollowingspaces = true;
15494
15495 if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins) { $lastbottommargin = $this->lastblockbottommargin; }
15496 else { $lastbottommargin = 0; }
15497 $this->lastblockbottommargin = 0;
15498 $this->blockjustfinished=false;
15499
15500/*-- LISTS --*/
15501 if ($this->listlvl>0) { return; }
15502/*-- END LISTS --*/
15503
15504 $this->InlineProperties = array();
15505 $this->spanlvl = 0;
15506 $this->listjustfinished=false;
15507 $this->divbegin=true;
15508
15509 $this->linebreakjustfinished=false;
15510
15511/*-- TABLES --*/
15512 if ($this->tableLevel) {
15513
15514 // If already something on the line
15515 if ($this->cell[$this->row][$this->col]['s'] > 0 && !$this->nestedtablejustfinished ) {
15516 $this->_saveCellTextBuffer("\n");
15517 if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
15518 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
15519 }
15520 elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
15521 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
15522 }
15523 $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
15524 }
15525 // Cannot set block properties inside table - use Bold to indicate h1-h6
15526 if ($tag == 'CENTER' && $this->tdbegin) { $this->cell[$this->row][$this->col]['a'] = $align['center']; }
15527
15528 $this->InlineProperties['BLOCKINTABLE'] = $this->saveInlineProperties();
15529 $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
15530 if (!empty($properties)) $this->setCSS($properties,'INLINE');
15531
15532
15533 break;
15534 }
15535/*-- END TABLES --*/
15536
15537 if ($tag == 'P' || $tag == 'DT' || $tag == 'DD') { $this->lastoptionaltag = $tag; } // Save current HTML specified optional endtag
15538 else { $this->lastoptionaltag = ''; }
15539
15540 if ($this->lastblocklevelchange == 1) { $blockstate = 1; } // Top margins/padding only
15541 else if ($this->lastblocklevelchange < 1) { $blockstate = 0; } // NO margins/padding
15542 $this->printbuffer($this->textbuffer,$blockstate);
15543 $this->textbuffer=array();
15544
15545 $save_blklvl = $this->blklvl;
15546 $save_blk = $this->blk;
15547 $save_silp = $this->saveInlineProperties();
15548 $save_spanlvl = $this->spanlvl;
15549 $save_ilp = $this->InlineProperties;
15550
15551 $this->blklvl++;
15552
15553 $currblk =& $this->blk[$this->blklvl];
15554 $this->initialiseBlock($currblk);
15555 $prevblk =& $this->blk[$this->blklvl-1];
15556
15557 $currblk['tag'] = $tag;
15558 $currblk['attr'] = $attr;
15559
15560 $this->Reset();
15561 $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
15562 $pagesel = '';
15563/*-- CSS-PAGE --*/
15564
15565 if (isset($properties['PAGE'])) { $pagesel = $properties['PAGE']; }
15566/*-- END CSS-PAGE --*/
15567
15568 // If page-box has changed AND/OR PAGE-BREAK-BEFORE
15569 $save_cols = false;
15570 if (($pagesel && $pagesel != $this->page_box['current']) || (isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE'])) {
15571 if ($this->blklvl>1) {
15572 // Close any open block tags
15573 for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
15574 // Output any text left in buffer
15575 if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); }
15576 }
15577/*-- COLUMNS --*/
15578 if ($this->ColActive) {
15579 $save_cols = true;
15580 $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off
15581 $this->SetColumns(0);
15582 }
15583/*-- END COLUMNS --*/
15584
15585
15586 // Must Add new page if changed page properties
15587 if (isset($properties['PAGE-BREAK-BEFORE'])) {
15588 if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
15589 else if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
15590 else if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'ALWAYS') { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
15591 else if ($this->page_box['current'] != $pagesel) { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } // *CSS-PAGE*
15592 }
15593/*-- CSS-PAGE --*/
15594 else if ($pagesel != $this->page_box['current']) { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
15595/*-- END CSS-PAGE --*/
15596
15597 // if using htmlheaders, the headers need to be rewritten when new page
15598 // done by calling WriteHTML() within resethtmlheaders
15599 // so block is reset to 0 - now we need to resurrect it
15600 // As in WriteHTML() initialising
15601 if (!($this->restoreBlockPagebreaks && isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE'])) {
15602 $this->blklvl = 0;
15603 $this->lastblocklevelchange = 0;
15604 $this->blk = array();
15605 $this->initialiseBlock($this->blk[0]);
15606 $this->blk[0]['width'] =& $this->pgwidth;
15607 $this->blk[0]['inner_width'] =& $this->pgwidth;
15608 $this->blk[0]['blockContext'] = $this->blockContext;
15609 $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
15610 $this->setCSS($properties,'','BODY');
15611 $this->blklvl++;
15612 $currblk =& $this->blk[$this->blklvl];
15613 $prevblk =& $this->blk[$this->blklvl-1];
15614
15615 $this->initialiseBlock($currblk);
15616 $currblk['tag'] = $tag;
15617 $currblk['attr'] = $attr;
15618
15619 $this->Reset();
15620 $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
15621 }
15622/*-- COLUMNS --*/
15623 if ($save_cols) {
15624 // Restore columns
15625 $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
15626 }
15627/*-- END COLUMNS --*/
15628 if ($this->restoreBlockPagebreaks && isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE']) {
15629 $this->blk = $save_blk;
15630 // Re-open block tags
15631 $t = $this->blk[0]['tag'];
15632 $a = $this->blk[0]['attr'];
15633 $this->blklvl = 0;
15634 for ($b=0; $b<=$save_blklvl;$b++) {
15635 $tc = $t;
15636 $ac = $a;
15637 $t = $this->blk[$b+1]['tag'];
15638 $a = $this->blk[$b+1]['attr'];
15639 unset($this->blk[$b+1]);
15640 $this->OpenTag($tc,$ac);
15641 }
15642 $this->spanlvl = $save_spanlvl;
15643 $this->InlineProperties = $save_ilp;
15644 $this->restoreInlineProperties($save_silp);
15645 }
15646 }
15647
15648 if (isset($properties['PAGE-BREAK-INSIDE']) && strtoupper($properties['PAGE-BREAK-INSIDE']) == 'AVOID' && !$this->ColActive && !$this->keep_block_together) {
15649 $currblk['keep_block_together'] = 1;
15650 $this->kt_y00 = $this->y;
15651 $this->kt_p00 = $this->page;
15652 $this->keep_block_together = 1;
15653 $this->divbuffer = array();
15654 $this->ktLinks = array();
15655 $this->ktAnnots = array();
15656 $this->ktForms = array();
15657 $this->ktBlock = array();
15658 $this->ktReference = array();
15659 $this->ktBMoutlines = array();
15660 $this->_kttoc = array();
15661 }
15662 if ($lastbottommargin && isset($properties['MARGIN-TOP']) && $properties['MARGIN-TOP'] && empty($properties['FLOAT'])) { $currblk['lastbottommargin'] = $lastbottommargin; }
15663
15664 // mPDF 5.6.01 - LAYERS
15665 if (isset($properties['Z-INDEX']) && $this->currentlayer==0) {
15666 $v = intval($properties['Z-INDEX']);
15667 if ($v > 0) {
15668 $currblk['z-index'] = $v;
15669 $this->BeginLayer($v);
15670 }
15671 }
15672
15673 $this->setCSS($properties,'BLOCK',$tag); //name(id/class/style) found in the CSS array!
15674 $currblk['InlineProperties'] = $this->saveInlineProperties();
15675
15676 if (isset($properties['VISIBILITY'])) {
15677 $v = strtolower($properties['VISIBILITY']);
15678 if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible' && !$this->tableLevel) {
15679 $currblk['visibility'] = $v;
15680 $this->SetVisibility($v);
15681 }
15682 }
15683
15684 if(isset($attr['DIR']) && $attr['DIR']) { $currblk['direction'] = strtolower($attr['DIR']); }
15685 if(isset($attr['ALIGN']) && $attr['ALIGN']) { $currblk['block-align'] = $align[strtolower($attr['ALIGN'])]; }
15686
15687 if (isset($properties['HEIGHT'])) {
15688 $currblk['css_set_height'] = $this->ConvertSize($properties['HEIGHT'],($this->h - $this->tMargin - $this->bMargin),$this->FontSize,false);
15689 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); }
15690 }
15691 else { $currblk['css_set_height'] = false; }
15692
15693
15694 // Added mPDF 3.0 Float DIV
15695 if (isset($prevblk['blockContext'])) { $currblk['blockContext'] = $prevblk['blockContext'] ; } // *CSS-FLOAT*
15696
15697 if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']), $this->blklvl-1); } // *CSS-FLOAT*
15698
15699 $container_w = $prevblk['inner_width'];
15700 $bdr = $currblk['border_right']['w'];
15701 $bdl = $currblk['border_left']['w'];
15702 $pdr = $currblk['padding_right'];
15703 $pdl = $currblk['padding_left'];
15704
15705 if (isset($currblk['css_set_width'])) { $setwidth = $currblk['css_set_width']; }
15706 else { $setwidth = 0; }
15707
15708/*-- CSS-FLOAT --*/
15709 if (isset($properties['FLOAT']) && strtoupper($properties['FLOAT']) == 'RIGHT' && !$this->ColActive) {
15710 // Cancel Keep-Block-together
15711 $currblk['keep_block_together'] = false;
15712 $this->kt_y00 = '';
15713 $this->keep_block_together = 0;
15714
15715 $this->blockContext++;
15716 $currblk['blockContext'] = $this->blockContext;
15717
15718 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
15719
15720 // DIV is too narrow for text to fit!
15721 $maxw = $container_w - $l_width - $r_width;
15722 if (($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) > $maxw || ($maxw - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) < (2*$this->GetCharWidth('W',false))) {
15723 // Too narrow to fit - try to move down past L or R float
15724 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))) {
15725 $this->ClearFloats('LEFT', $this->blklvl-1);
15726 }
15727 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))) {
15728 $this->ClearFloats('RIGHT', $this->blklvl-1);
15729 }
15730 else { $this->ClearFloats('BOTH', $this->blklvl-1); }
15731 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
15732 }
15733
15734 if ($r_exists) { $currblk['margin_right'] += $r_width; }
15735
15736 $currblk['float'] = 'R';
15737 $currblk['float_start_y'] = $this->y;
15738 if ($currblk['css_set_width']) {
15739 $currblk['margin_left'] = $container_w - ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']);
15740 $currblk['float_width'] = ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']);
15741 }
15742 else {
15743 // *** If no width set - would need to buffer and keep track of max width, then Right-align if not full width
15744 // and do borders and backgrounds - For now - just set to maximum width left
15745
15746 if ($l_exists) { $currblk['margin_left'] += $l_width; }
15747 $currblk['css_set_width'] = $container_w - ($currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr);
15748
15749 $currblk['float_width'] = ($currblk['css_set_width'] + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']);
15750 }
15751 }
15752 else if (isset($properties['FLOAT']) && strtoupper($properties['FLOAT']) == 'LEFT' && !$this->ColActive) {
15753 // Cancel Keep-Block-together
15754 $currblk['keep_block_together'] = false;
15755 $this->kt_y00 = '';
15756 $this->keep_block_together = 0;
15757
15758 $this->blockContext++;
15759 $currblk['blockContext'] = $this->blockContext;
15760
15761 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
15762
15763 // DIV is too narrow for text to fit!
15764 $maxw = $container_w - $l_width - $r_width;
15765 if (($setwidth + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr) > $maxw || ($maxw - ($currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) < (2*$this->GetCharWidth('W',false))) {
15766 // Too narrow to fit - try to move down past L or R float
15767 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))) {
15768 $this->ClearFloats('LEFT', $this->blklvl-1);
15769 }
15770 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))) {
15771 $this->ClearFloats('RIGHT', $this->blklvl-1);
15772 }
15773 else { $this->ClearFloats('BOTH', $this->blklvl-1); }
15774 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
15775 }
15776
15777 if ($l_exists) { $currblk['margin_left'] += $l_width; }
15778
15779 $currblk['float'] = 'L';
15780 $currblk['float_start_y'] = $this->y;
15781 if ($setwidth) {
15782 $currblk['margin_right'] = $container_w - ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']);
15783 $currblk['float_width'] = ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']);
15784 }
15785 else {
15786 // *** If no width set - would need to buffer and keep track of max width, then Right-align if not full width
15787 // and do borders and backgrounds - For now - just set to maximum width left
15788
15789 if ($r_exists) { $currblk['margin_right'] += $r_width; }
15790 $currblk['css_set_width'] = $container_w - ($currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr);
15791
15792 $currblk['float_width'] = ($currblk['css_set_width'] + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']);
15793 }
15794 }
15795
15796 else {
15797 // Don't allow overlap - if floats present - adjust padding to avoid overlap with Floats
15798 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
15799 $maxw = $container_w - $l_width - $r_width;
15800 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))) {
15801 // Too narrow to fit - try to move down past L or R float
15802 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))) {
15803 $this->ClearFloats('LEFT', $this->blklvl-1);
15804 }
15805 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))) {
15806 $this->ClearFloats('RIGHT', $this->blklvl-1);
15807 }
15808 else { $this->ClearFloats('BOTH', $this->blklvl-1); }
15809 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
15810 }
15811 if ($r_exists) { $currblk['padding_right'] = max(($r_width-$currblk['margin_right']-$bdr), $pdr); }
15812 if ($l_exists) { $currblk['padding_left'] = max(($l_width-$currblk['margin_left']-$bdl), $pdl); }
15813 }
15814/*-- END CSS-FLOAT --*/
15815
15816
15817/*-- BORDER-RADIUS --*/
15818 // Automatically increase padding if required for border-radius
15819 if ($this->autoPadding && !$this->ColActive && !$this->keep_block_together) {
15820 if ($currblk['border_radius_TL_H']>$currblk['padding_left'] && $currblk['border_radius_TL_V']>$currblk['padding_top']) {
15821 if ($currblk['border_radius_TL_H']>$currblk['border_radius_TL_V']) {
15822 $this->_borderPadding($currblk['border_radius_TL_H'],$currblk['border_radius_TL_V'], $currblk['padding_left'], $currblk['padding_top']);
15823 }
15824 else {
15825 $this->_borderPadding($currblk['border_radius_TL_V'],$currblk['border_radius_TL_H'], $currblk['padding_top'], $currblk['padding_left']);
15826 }
15827 }
15828 if ($currblk['border_radius_TR_H']>$currblk['padding_right'] && $currblk['border_radius_TR_V']>$currblk['padding_top']) {
15829 if ($currblk['border_radius_TR_H']>$currblk['border_radius_TR_V']) {
15830 $this->_borderPadding($currblk['border_radius_TR_H'],$currblk['border_radius_TR_V'], $currblk['padding_right'], $currblk['padding_top']);
15831 }
15832 else {
15833 $this->_borderPadding($currblk['border_radius_TR_V'],$currblk['border_radius_TR_H'], $currblk['padding_top'], $currblk['padding_right']);
15834 }
15835 }
15836 if ($currblk['border_radius_BL_H']>$currblk['padding_left'] && $currblk['border_radius_BL_V']>$currblk['padding_bottom']) {
15837 if ($currblk['border_radius_BL_H']>$currblk['border_radius_BL_V']) {
15838 $this->_borderPadding($currblk['border_radius_BL_H'],$currblk['border_radius_BL_V'], $currblk['padding_left'], $currblk['padding_bottom']);
15839 }
15840 else {
15841 $this->_borderPadding($currblk['border_radius_BL_V'],$currblk['border_radius_BL_H'], $currblk['padding_bottom'], $currblk['padding_left']);
15842 }
15843 }
15844 if ($currblk['border_radius_BR_H']>$currblk['padding_right'] && $currblk['border_radius_BR_V']>$currblk['padding_bottom']) {
15845 if ($currblk['border_radius_BR_H']>$currblk['border_radius_BR_V']) {
15846 $this->_borderPadding($currblk['border_radius_BR_H'],$currblk['border_radius_BR_V'], $currblk['padding_right'], $currblk['padding_bottom']);
15847 }
15848 else {
15849 $this->_borderPadding($currblk['border_radius_BR_V'],$currblk['border_radius_BR_H'], $currblk['padding_bottom'], $currblk['padding_right']);
15850 }
15851 }
15852 }
15853/*-- END BORDER-RADIUS --*/
15854
15855
15856 // Hanging indent - if negative indent: ensure padding is >= indent
15857 if(!isset($currblk['text_indent'])) { $currblk['text_indent'] = null; }
15858 if(!isset($currblk['inner_width'])) { $currblk['inner_width'] = null; }
15859 $cbti = $this->ConvertSize($currblk['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
15860 if ($cbti < 0) {
15861 $hangind = -($cbti);
15862 if ($currblk['direction'] == 'rtl') { // *RTL*
15863 $currblk['padding_right'] = max($currblk['padding_right'],$hangind); // *RTL*
15864 } // *RTL*
15865 else { // *RTL*
15866 $currblk['padding_left'] = max($currblk['padding_left'],$hangind);
15867 } // *RTL*
15868 }
15869
15870 if (isset($currblk['css_set_width'])) {
15871 if (isset($properties['MARGIN-LEFT']) && isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-LEFT'])=='auto' && strtolower($properties['MARGIN-RIGHT'])=='auto') {
15872 // Try to reduce margins to accomodate - if still too wide, set margin-right/left=0 (reduces width)
15873 $anyextra = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']);
15874 if ($anyextra>0) {
15875 $currblk['margin_left'] = $currblk['margin_right'] = $anyextra /2;
15876 }
15877 else {
15878 $currblk['margin_left'] = $currblk['margin_right'] = 0;
15879 }
15880 }
15881 else if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') {
15882 // Try to reduce margin-left to accomodate - if still too wide, set margin-left=0 (reduces width)
15883 $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']);
15884 if ($currblk['margin_left'] < 0) {
15885 $currblk['margin_left'] = 0;
15886 }
15887 }
15888 else if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') {
15889 // Try to reduce margin-right to accomodate - if still too wide, set margin-right=0 (reduces width)
15890 $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']);
15891 if ($currblk['margin_right'] < 0) {
15892 $currblk['margin_right'] = 0;
15893 }
15894 }
15895 else {
15896 if ($currblk['direction'] == 'rtl') { // *RTL*
15897 // Try to reduce margin-left to accomodate - if still too wide, set margin-left=0 (reduces width)
15898 $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*
15899 if ($currblk['margin_left'] < 0) { // *RTL*
15900 $currblk['margin_left'] = 0; // *RTL*
15901 } // *RTL*
15902 } // *RTL*
15903 else { // *RTL*
15904 // Try to reduce margin-right to accomodate - if still too wide, set margin-right=0 (reduces width)
15905 $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']);
15906 if ($currblk['margin_right'] < 0) {
15907 $currblk['margin_right'] = 0;
15908 }
15909 } // *RTL*
15910 }
15911 }
15912
15913 $currblk['outer_left_margin'] = $prevblk['outer_left_margin'] + $currblk['margin_left'] + $prevblk['border_left']['w'] + $prevblk['padding_left'];
15914 $currblk['outer_right_margin'] = $prevblk['outer_right_margin'] + $currblk['margin_right'] + $prevblk['border_right']['w'] + $prevblk['padding_right'];
15915
15916 $currblk['width'] = $this->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin']);
15917 $currblk['inner_width'] = $currblk['width'] - ($currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']);
15918
15919 // Check DIV is not now too narrow to fit text
15920 $mw = 2*$this->GetCharWidth('W',false);
15921 if ($currblk['inner_width'] < $mw) {
15922 $currblk['padding_left'] = 0;
15923 $currblk['padding_right'] = 0;
15924 $currblk['border_left']['w'] = 0.2;
15925 $currblk['border_right']['w'] = 0.2;
15926 $currblk['margin_left'] = 0;
15927 $currblk['margin_right'] = 0;
15928 $currblk['outer_left_margin'] = $prevblk['outer_left_margin'] + $currblk['margin_left'] + $prevblk['border_left']['w'] + $prevblk['padding_left'];
15929 $currblk['outer_right_margin'] = $prevblk['outer_right_margin'] + $currblk['margin_right'] + $prevblk['border_right']['w'] + $prevblk['padding_right'];
15930 $currblk['width'] = $this->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin']);
15931 $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']);
15932// if ($currblk['inner_width'] < $mw) { $this->Error("DIV is too narrow for text to fit!"); }
15933 }
15934
15935 $this->x = $this->lMargin + $currblk['outer_left_margin'];
15936
15937/*-- BACKGROUNDS --*/
15938 if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive && !$this->keep_block_together) {
15939 $ret = $this->SetBackground($properties, $currblk['inner_width']);
15940 if ($ret) { $currblk['background-image'] = $ret; }
15941 }
15942/*-- END BACKGROUNDS --*/
15943
15944/*-- TABLES --*/
15945 if ($this->use_kwt && isset($attr['KEEP-WITH-TABLE']) && !$this->ColActive && !$this->keep_block_together) {
15946 $this->kwt = true;
15947 $this->kwt_y0 = $this->y;
15948 $this->kwt_x0 = $this->x;
15949 $this->kwt_height = 0;
15950 $this->kwt_buffer = array();
15951 $this->kwt_Links = array();
15952 $this->kwt_Annots = array();
15953 $this->kwt_moved = false;
15954 $this->kwt_saved = false;
15955 $this->kwt_Reference = array();
15956 $this->kwt_BMoutlines = array();
15957 $this->kwt_toc = array();
15958 }
15959 else {
15960/*-- END TABLES --*/
15961 $this->kwt = false;
15962 } // *TABLES*
15963
15964 //Save x,y coords in case we need to print borders...
15965 $currblk['y0'] = $this->y;
15966 $currblk['x0'] = $this->x;
15967 $currblk['startpage'] = $this->page;
15968 $this->oldy = $this->y;
15969
15970 $this->lastblocklevelchange = 1 ;
15971
15972 break;
15973
15974 case 'HR':
15975 // Added mPDF 3.0 Float DIV - CLEAR
15976 if (isset($attr['STYLE'])) {
15977 $properties = $this->cssmgr->readInlineCSS($attr['STYLE']);
15978 if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']),$this->blklvl); } // *CSS-FLOAT*
15979 }
15980
15981 $this->ignorefollowingspaces = true;
15982
15983 $objattr = array();
15984 $objattr['margin_top'] = 0;
15985 $objattr['margin_bottom'] = 0;
15986 $objattr['margin_left'] = 0;
15987 $objattr['margin_right'] = 0;
15988 $objattr['width'] = 0;
15989 $objattr['height'] = 0;
15990 $objattr['border_top']['w'] = 0;
15991 $objattr['border_bottom']['w'] = 0;
15992 $objattr['border_left']['w'] = 0;
15993 $objattr['border_right']['w'] = 0;
15994 $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
15995 if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top'] = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
15996 if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
15997 if (isset($properties['WIDTH'])) { $objattr['width'] = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']); }
15998 else if(isset($attr['WIDTH']) && $attr['WIDTH'] != '') $objattr['width'] = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width']);
15999 if (isset($properties['TEXT-ALIGN'])) { $objattr['align'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
16000 else if(isset($attr['ALIGN']) && $attr['ALIGN'] != '') $objattr['align'] = $align[strtolower($attr['ALIGN'])];
16001
16002 if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') {
16003 $objattr['align'] = 'R';
16004 }
16005 if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') {
16006 $objattr['align'] = 'L';
16007 if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto' && isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') {
16008 $objattr['align'] = 'C';
16009 }
16010 }
16011 if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
16012 else if(isset($attr['COLOR']) && $attr['COLOR'] != '') $objattr['color'] = $this->ConvertColor($attr['COLOR']);
16013 if (isset($properties['HEIGHT'])) { $objattr['linewidth'] = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16014
16015
16016/*-- TABLES --*/
16017 if ($this->tableLevel) {
16018 $objattr['W-PERCENT'] = 100;
16019 if (isset($properties['WIDTH']) && stristr($properties['WIDTH'],'%')) {
16020 $properties['WIDTH'] += 0; //make "90%" become simply "90"
16021 $objattr['W-PERCENT'] = $properties['WIDTH'];
16022 }
16023 if (isset($attr['WIDTH']) && stristr($attr['WIDTH'],'%')) {
16024 $attr['WIDTH'] += 0; //make "90%" become simply "90"
16025 $objattr['W-PERCENT'] = $attr['WIDTH'];
16026 }
16027 }
16028/*-- END TABLES --*/
16029
16030 $objattr['type'] = 'hr';
16031 $objattr['height'] = $objattr['linewidth'] + $objattr['margin_top'] + $objattr['margin_bottom'];
16032 $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
16033
16034 // Clear properties - tidy up
16035 $properties = array();
16036
16037/*-- TABLES --*/
16038 // Output it to buffers
16039 if ($this->tableLevel) {
16040 if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
16041 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
16042 }
16043 elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
16044 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
16045 }
16046 $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
16047 $this->_saveCellTextBuffer($e, $this->HREF);
16048 }
16049 else {
16050/*-- END TABLES --*/
16051 $this->_saveTextBuffer($e, $this->HREF);
16052 } // *TABLES*
16053
16054 break;
16055
16056
16057/*-- BARCODES --*/
16058
16059 case 'BARCODE':
16060 if(isset($attr['CODE']) && $attr['CODE']) {
16061 $objattr = array();
16062 $objattr['margin_top'] = 0;
16063 $objattr['margin_bottom'] = 0;
16064 $objattr['margin_left'] = 0;
16065 $objattr['margin_right'] = 0;
16066 $objattr['padding_top'] = 0;
16067 $objattr['padding_bottom'] = 0;
16068 $objattr['padding_left'] = 0;
16069 $objattr['padding_right'] = 0;
16070 $objattr['width'] = 0;
16071 $objattr['height'] = 0;
16072 $objattr['border_top']['w'] = 0;
16073 $objattr['border_bottom']['w'] = 0;
16074 $objattr['border_left']['w'] = 0;
16075 $objattr['border_right']['w'] = 0;
16076 $objattr['code'] = $attr['CODE'];
16077
16078 if(isset($attr['TYPE'])) {
16079 $objattr['btype'] = trim(strtoupper($attr['TYPE']));
16080 }
16081 else { $objattr['btype'] = 'EAN13'; } // default
16082 if (preg_match('/^(EAN13|ISBN|ISSN|EAN8|UPCA|UPCE)P([25])$/',$objattr['btype'],$m)) {
16083 $objattr['btype'] = $m[1];
16084 $objattr['bsupp'] = $m[2];
16085 if (preg_match('/^(\S+)\s+(.*)$/',$objattr['code'],$mm)) {
16086 $objattr['code'] = $mm[1];
16087 $objattr['bsupp_code'] = $mm[2];
16088 }
16089 }
16090 else { $objattr['bsupp'] = 0; }
16091
16092 if(isset($attr['TEXT']) && $attr['TEXT']==1) { $objattr['showtext'] = 1; }
16093 else { $objattr['showtext'] = 0; }
16094 if(isset($attr['SIZE']) && $attr['SIZE']>0) { $objattr['bsize'] = $attr['SIZE']; }
16095 else { $objattr['bsize'] = 1; }
16096 if(isset($attr['HEIGHT']) && $attr['HEIGHT']>0) { $objattr['bheight'] = $attr['HEIGHT']; }
16097 else { $objattr['bheight'] = 1; }
16098 if(isset($attr['PR']) && $attr['PR']>0) { $objattr['pr_ratio'] = $attr['PR']; }
16099 else { $objattr['pr_ratio'] = ''; }
16100 $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
16101 if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') {
16102 return;
16103 }
16104 if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16105 if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16106 if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16107 if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16108
16109 if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16110 if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16111 if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16112 if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16113
16114 if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
16115 if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
16116 if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
16117 if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
16118
16119 if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
16120 if (isset($properties['COLOR']) && $properties['COLOR'] != '') { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
16121 else { $objattr['color'] = false; }
16122 if (isset($properties['BACKGROUND-COLOR']) && $properties['BACKGROUND-COLOR'] != '') { $objattr['bgcolor'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
16123 else { $objattr['bgcolor'] = false; }
16124
16125 if (!class_exists('PDFBarcode', false)) {
16126 include(_MPDF_PATH.'classes/barcode.php');
16127 }
16128 $this->barcode = new PDFBarcode();
16129
16130 if ($objattr['btype'] == 'EAN13' || $objattr['btype'] == 'ISBN' || $objattr['btype'] == 'ISSN' || $objattr['btype'] == 'UPCA' || $objattr['btype'] == 'UPCE' || $objattr['btype'] == 'EAN8') {
16131 $code = preg_replace('/\-/','',$objattr['code']);
16132 if ($objattr['btype'] == 'ISSN' || $objattr['btype'] == 'ISBN') {
16133 $arrcode = $this->barcode->getBarcodeArray($code, 'EAN13');
16134 }
16135 else { $arrcode = $this->barcode->getBarcodeArray($code, $objattr['btype'] ); }
16136 if ($arrcode === false) { $this->Error('Error in barcode string.'); }
16137
16138 if ($objattr['bsupp'] == 2 || $objattr['bsupp'] == 5) { // EAN-2 or -5 Supplement
16139 $supparrcode = $this->barcode->getBarcodeArray($objattr['bsupp_code'], 'EAN'.$objattr['bsupp'] );
16140 $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR'] + $supparrcode["maxw"] + $supparrcode['sepM']) * $arrcode['nom-X'] * $objattr['bsize'];
16141 }
16142 else {
16143 $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR']) * $arrcode['nom-X'] * $objattr['bsize'];
16144 }
16145 $h = $arrcode['nom-H'] * $objattr['bsize'] * $objattr['bheight'];
16146 // Add height for ISBN string + margin from top of bars
16147 if (($objattr['showtext'] && $objattr['btype'] == 'EAN13') || $objattr['btype'] == 'ISBN' || $objattr['btype'] == 'ISSN') {
16148 $tisbnm = 1.5 * $objattr['bsize']; // Top margin between TOP TEXT (isbn - if shown) & bars
16149 $isbn_fontsize = 2.1 * $objattr['bsize'];
16150 $h += $isbn_fontsize + $tisbnm ;
16151 }
16152 }
16153 // QR-code
16154 else if ($objattr['btype'] == 'QR') {
16155 $w = $h = $objattr['bsize']*25; // Factor of 25mm (default)
16156 $objattr['errorlevel'] = 'L';
16157 if (isset($attr['ERROR'])) { $objattr['errorlevel'] = $attr['ERROR']; }
16158 }
16159 else if ($objattr['btype'] == 'IMB' || $objattr['btype'] == 'RM4SCC' || $objattr['btype'] == 'KIX' || $objattr['btype'] == 'POSTNET' || $objattr['btype'] == 'PLANET') {
16160 $arrcode = $this->barcode->getBarcodeArray($objattr['code'], $objattr['btype'] );
16161 if ($arrcode === false) { $this->Error('Error in barcode string.'); }
16162 $w = ($arrcode["maxw"] * $arrcode['nom-X'] * $objattr['bsize']) + $arrcode['quietL'] + $arrcode['quietR'];
16163 $h = ($arrcode['nom-H'] * $objattr['bsize']) + (2*$arrcode['quietTB']);
16164 }
16165 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'))) {
16166 $arrcode = $this->barcode->getBarcodeArray($objattr['code'], $objattr['btype'], $objattr['pr_ratio'] );
16167 if ($arrcode === false) { $this->Error('Error in barcode string.'); }
16168 $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR']) * $arrcode['nom-X'] * $objattr['bsize'];
16169 $h = ((2*$arrcode['lightTB'] * $arrcode['nom-X']) + $arrcode['nom-H']) * $objattr['bsize'] * $objattr['bheight'];
16170 }
16171 else { break; }
16172
16173 $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
16174 $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
16175
16176 $objattr['type'] = 'barcode';
16177 $objattr['height'] = $h + $extraheight;
16178 $objattr['width'] = $w + $extrawidth;
16179 $objattr['barcode_height'] = $h;
16180 $objattr['barcode_width'] = $w;
16181/*-- CSS-IMAGE-FLOAT --*/
16182 if (!$this->ColActive && !$this->tableLevel && !$this->listlvl && !$this->kwt && !$this->keep_block_together) {
16183 if (isset($properties['FLOAT']) && (strtoupper($properties['FLOAT']) == 'RIGHT' || strtoupper($properties['FLOAT']) == 'LEFT')) {
16184 $objattr['float'] = substr(strtoupper($properties['FLOAT']),0,1);
16185 }
16186 }
16187/*-- END CSS-IMAGE-FLOAT --*/
16188
16189 $e = "\xbb\xa4\xactype=barcode,objattr=".serialize($objattr)."\xbb\xa4\xac";
16190
16191 // Clear properties - tidy up
16192 $properties = array();
16193
16194/*-- TABLES --*/
16195 // Output it to buffers
16196 if ($this->tableLevel) {
16197 $this->_saveCellTextBuffer($e, $this->HREF);
16198 $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
16199 }
16200 else {
16201/*-- END TABLES --*/
16202 $this->_saveTextBuffer($e, $this->HREF);
16203
16204 } // *TABLES*
16205 }
16206 break;
16207/*-- END BARCODES --*/
16208
16209
16210 // *********** FORM ELEMENTS ********************
16211
16212/*-- FORMS --*/
16213 case 'SELECT':
16214 $this->lastoptionaltag = ''; // Save current HTML specified optional endtag
16215 $this->InlineProperties[$tag] = $this->saveInlineProperties();
16216 $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
16217 if (isset($properties['FONT-FAMILY'])) {
16218 $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false);
16219 }
16220 if (isset($properties['FONT-SIZE'])) {
16221 $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK);
16222 $this->SetFontSize($mmsize*_MPDFK,false);
16223 }
16224 if (isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') {
16225 $this->selectoption['SPELLCHECK'] = true;
16226 }
16227
16228 if (isset($properties['COLOR'])) { $this->selectoption['COLOR'] = $this->ConvertColor($properties['COLOR']); }
16229 $this->specialcontent = "type=select";
16230 if(isset($attr['DISABLED'])) { $this->selectoption['DISABLED'] = $attr['DISABLED']; }
16231 if(isset($attr['READONLY'])) { $this->selectoption['READONLY'] = $attr['READONLY']; }
16232 if(isset($attr['REQUIRED'])) { $this->selectoption['REQUIRED'] = $attr['REQUIRED']; }
16233 if(isset($attr['EDITABLE'])) { $this->selectoption['EDITABLE'] = $attr['EDITABLE']; }
16234 if(isset($attr['TITLE'])) { $this->selectoption['TITLE'] = $attr['TITLE']; }
16235 if(isset($attr['MULTIPLE'])) { $this->selectoption['MULTIPLE'] = $attr['MULTIPLE']; }
16236 if(isset($attr['SIZE']) && $attr['SIZE']>1) { $this->selectoption['SIZE'] = $attr['SIZE']; }
16237 if ($this->useActiveForms) {
16238 if(isset($attr['NAME'])) { $this->selectoption['NAME'] = $attr['NAME']; }
16239 if (isset($attr['ONCHANGE'])) { $this->selectoption['ONCHANGE'] = $attr['ONCHANGE']; }
16240 }
16241
16242 $properties = array();
16243 break;
16244
16245 case 'OPTION':
16246 $this->lastoptionaltag = 'OPTION'; // Save current HTML specified optional endtag
16247 $this->selectoption['ACTIVE'] = true;
16248 $this->selectoption['currentSEL'] = false;
16249 if (empty($this->selectoption)) {
16250 $this->selectoption['MAXWIDTH'] = '';
16251 $this->selectoption['SELECTED'] = '';
16252 }
16253 if (isset($attr['SELECTED'])) {
16254 $this->selectoption['SELECTED'] = '';
16255 $this->selectoption['currentSEL'] = true;
16256 }
16257 if(isset($attr['VALUE'])) {
16258 $attr['VALUE'] = strcode2utf($attr['VALUE']);
16259 $attr['VALUE'] = $this->lesser_entity_decode($attr['VALUE']);
16260 if ($this->onlyCoreFonts)
16261 $attr['VALUE'] = mb_convert_encoding($attr['VALUE'], $this->mb_enc,'UTF-8');
16262 }
16263 $this->selectoption['currentVAL'] = $attr['VALUE'];
16264 break;
16265
16266 case 'TEXTAREA':
16267 $objattr = array();
16268 $objattr['margin_top'] = 0;
16269 $objattr['margin_bottom'] = 0;
16270 $objattr['margin_left'] = 0;
16271 $objattr['margin_right'] = 0;
16272 $objattr['width'] = 0;
16273 $objattr['height'] = 0;
16274 $objattr['border_top']['w'] = 0;
16275 $objattr['border_bottom']['w'] = 0;
16276 $objattr['border_left']['w'] = 0;
16277 $objattr['border_right']['w'] = 0;
16278 if(isset($attr['DISABLED'])) { $objattr['disabled'] = true; }
16279 if(isset($attr['READONLY'])) { $objattr['readonly'] = true; }
16280 if(isset($attr['REQUIRED'])) { $objattr['required'] = true; }
16281 if(isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') { $objattr['spellcheck'] = true; }
16282 if(isset($attr['TITLE'])) { $objattr['title'] = $attr['TITLE']; }
16283 if ($this->onlyCoreFonts)
16284 $objattr['title'] = mb_convert_encoding($objattr['title'], $this->mb_enc,'UTF-8');
16285 if ($this->useActiveForms) {
16286 if(isset($attr['NAME'])) { $objattr['fieldname'] = $attr['NAME']; }
16287 $this->form->form_element_spacing['textarea']['outer']['v'] = 0;
16288 $this->form->form_element_spacing['textarea']['inner']['v'] = 0;
16289 if (isset($attr['ONCALCULATE'])) { $objattr['onCalculate'] = $attr['ONCALCULATE']; }
16290 else if (isset($attr['ONCHANGE'])) { $objattr['onCalculate'] = $attr['ONCHANGE']; }
16291 if (isset($attr['ONVALIDATE'])) { $objattr['onValidate'] = $attr['ONVALIDATE']; }
16292 if (isset($attr['ONKEYSTROKE'])) { $objattr['onKeystroke'] = $attr['ONKEYSTROKE']; }
16293 if (isset($attr['ONFORMAT'])) { $objattr['onFormat'] = $attr['ONFORMAT']; }
16294 }
16295 $this->InlineProperties[$tag] = $this->saveInlineProperties();
16296 $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
16297 if (isset($properties['FONT-FAMILY'])) {
16298 $this->SetFont($properties['FONT-FAMILY'],'',0,false);
16299 }
16300 if (isset($properties['FONT-SIZE'])) {
16301 $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK);
16302 $this->SetFontSize($mmsize*_MPDFK,false);
16303 }
16304 if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
16305 $objattr['fontfamily'] = $this->FontFamily;
16306 $objattr['fontsize'] = $this->FontSizePt;
16307 if ($this->useActiveForms) {
16308 if(isset($properties['TEXT-ALIGN'])) { $objattr['text_align'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
16309 else if(isset($attr['ALIGN'])) { $objattr['text_align'] = $align[strtolower($attr['ALIGN'])]; }
16310 if (isset($properties['OVERFLOW']) && strtolower($properties['OVERFLOW'])=='hidden') { $objattr['donotscroll'] = true; }
16311 if (isset($properties['BORDER-TOP-COLOR'])) { $objattr['border-col'] = $this->ConvertColor($properties['BORDER-TOP-COLOR']); }
16312 if (isset($properties['BACKGROUND-COLOR'])) { $objattr['background-col'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
16313 }
16314 $this->SetLineHeight('',$this->form->textarea_lineheight);
16315 $formLineHeight = $this->lineheight;
16316
16317 $w = 0;
16318 $h = 0;
16319 if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16320 if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16321 if ($properties['VERTICAL-ALIGN']) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
16322
16323 $colsize = 20; //HTML default value
16324 $rowsize = 2; //HTML default value
16325 if (isset($attr['COLS'])) $colsize = intval($attr['COLS']);
16326 if (isset($attr['ROWS'])) $rowsize = intval($attr['ROWS']);
16327
16328 $charsize = $this->GetCharWidth('w',false);
16329 if ($w) { $colsize = round(($w-($this->form->form_element_spacing['textarea']['outer']['h']*2)-($this->form->form_element_spacing['textarea']['inner']['h']*2))/$charsize); }
16330 if ($h) { $rowsize = round(($h-($this->form->form_element_spacing['textarea']['outer']['v']*2)-($this->form->form_element_spacing['textarea']['inner']['v']*2))/$formLineHeight); }
16331
16332 $objattr['type'] = 'textarea';
16333 $objattr['width'] = ($colsize * $charsize) + ($this->form->form_element_spacing['textarea']['outer']['h']*2)+($this->form->form_element_spacing['textarea']['inner']['h']*2);
16334 $objattr['height'] = ($rowsize * $formLineHeight) + ($this->form->form_element_spacing['textarea']['outer']['v']*2)+($this->form->form_element_spacing['textarea']['inner']['v']*2);
16335 $objattr['rows'] = $rowsize;
16336 $objattr['cols'] = $colsize;
16337
16338 $this->specialcontent = serialize($objattr);
16339
16340 if ($this->tableLevel) { // *TABLES*
16341 $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; // *TABLES*
16342 } // *TABLES*
16343
16344 // Clear properties - tidy up
16345 $properties = array();
16346 break;
16347
16348
16349
16350 // *********** FORM - INPUT ********************
16351
16352 case 'INPUT':
16353 if (!isset($attr['TYPE'])) $attr['TYPE'] == 'TEXT';
16354 $objattr = array();
16355 $objattr['margin_top'] = 0;
16356 $objattr['margin_bottom'] = 0;
16357 $objattr['margin_left'] = 0;
16358 $objattr['margin_right'] = 0;
16359 $objattr['width'] = 0;
16360 $objattr['height'] = 0;
16361 $objattr['border_top']['w'] = 0;
16362 $objattr['border_bottom']['w'] = 0;
16363 $objattr['border_left']['w'] = 0;
16364 $objattr['border_right']['w'] = 0;
16365 $objattr['type'] = 'input';
16366 if(isset($attr['DISABLED'])) { $objattr['disabled'] = true; }
16367 if(isset($attr['READONLY'])) { $objattr['readonly'] = true; }
16368 if(isset($attr['REQUIRED'])) { $objattr['required'] = true; }
16369 if(isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') { $objattr['spellcheck'] = true; }
16370 if(isset($attr['TITLE'])) { $objattr['title'] = $attr['TITLE']; }
16371 else if(isset($attr['ALT'])) { $objattr['title'] = $attr['ALT']; }
16372 else $objattr['title'] = '';
16373 $objattr['title'] = strcode2utf($objattr['title']);
16374 $objattr['title'] = $this->lesser_entity_decode($objattr['title']);
16375 if ($this->onlyCoreFonts)
16376 $objattr['title'] = mb_convert_encoding($objattr['title'], $this->mb_enc,'UTF-8');
16377 if ($this->useActiveForms) {
16378 if(isset($attr['NAME'])) { $objattr['fieldname'] = $attr['NAME']; }
16379 }
16380 if(isset($attr['VALUE'])) {
16381 $attr['VALUE'] = strcode2utf($attr['VALUE']);
16382 $attr['VALUE'] = $this->lesser_entity_decode($attr['VALUE']);
16383 if ($this->onlyCoreFonts)
16384 $attr['VALUE'] = mb_convert_encoding($attr['VALUE'], $this->mb_enc,'UTF-8');
16385 $objattr['value'] = $attr['VALUE'];
16386 }
16387
16388 $this->InlineProperties[$tag] = $this->saveInlineProperties();
16389 $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
16390 $objattr['vertical-align'] = '';
16391
16392 if (isset($properties['FONT-FAMILY'])) {
16393 $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false);
16394 }
16395 if (isset($properties['FONT-SIZE'])) {
16396 $mmsize = $this->ConvertSize($properties['FONT-SIZE'],($this->default_font_size/_MPDFK));
16397 $this->SetFontSize($mmsize*_MPDFK,false);
16398 }
16399 if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
16400 $objattr['fontfamily'] = $this->FontFamily;
16401 $objattr['fontsize'] = $this->FontSizePt;
16402 if ($this->useActiveForms) {
16403 if(isset($attr['ALIGN'])) { $objattr['text_align'] = $align[strtolower($attr['ALIGN'])]; }
16404 else if(isset($properties['TEXT-ALIGN'])) { $objattr['text_align'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
16405 if (isset($properties['BORDER-TOP-COLOR'])) { $objattr['border-col'] = $this->ConvertColor($properties['BORDER-TOP-COLOR']); }
16406 if (isset($properties['BACKGROUND-COLOR'])) { $objattr['background-col'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
16407 }
16408
16409 $type = '';
16410 $texto='';
16411 $height = $this->FontSize;
16412 $width = 0;
16413 $spacesize = $this->GetCharWidth(' ',false);
16414
16415 $w = 0;
16416 if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']);
16417
16418 if ($properties['VERTICAL-ALIGN']) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
16419
16420 switch(strtoupper($attr['TYPE'])){
16421 case 'HIDDEN':
16422 $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
16423 if ($this->useActiveForms) {
16424 $this->form->SetFormText( 0, 0, $objattr['fieldname'], $objattr['value'], $objattr['value'], '', 0, '', true );
16425 }
16426 if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
16427 unset($this->InlineProperties[$tag]);
16428 break 2;
16429 case 'CHECKBOX': //Draw Checkbox
16430 $type = 'CHECKBOX';
16431 if (isset($attr['CHECKED'])) { $objattr['checked'] = true; }
16432 else { $objattr['checked'] = false; }
16433 $width = $this->FontSize;
16434 $height = $this->FontSize;
16435 break;
16436
16437 case 'RADIO': //Draw Radio button
16438 $type = 'RADIO';
16439 if (isset($attr['CHECKED'])) $objattr['checked'] = true;
16440 $width = $this->FontSize;
16441 $height = $this->FontSize;
16442 break;
16443
16444/*-- IMAGES-CORE --*/
16445 case 'IMAGE': // Draw an Image button
16446 if(isset($attr['SRC'])) {
16447 $type = 'IMAGE';
16448 $srcpath = $attr['SRC'];
16449 $orig_srcpath = $attr['ORIG_SRC'];
16450 // VSPACE and HSPACE converted to margins in MergeCSS
16451 if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16452 if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16453 if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16454 if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16455
16456
16457 if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
16458 if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
16459 if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
16460 if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
16461
16462 $objattr['padding_top'] = 0;
16463 $objattr['padding_bottom'] = 0;
16464 $objattr['padding_left'] = 0;
16465 $objattr['padding_right'] = 0;
16466
16467 if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
16468
16469 $w = 0;
16470 $h = 0;
16471 if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']);
16472 if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width']);
16473
16474 $extraheight = $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
16475 $extrawidth = $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
16476
16477 // Image file
16478 $info=$this->_getImage($srcpath, true, true, $orig_srcpath);
16479 if(!$info) {
16480 $info = $this->_getImage($this->noImageFile);
16481 if ($info) {
16482 $srcpath = $this->noImageFile;
16483 $w = ($info['w'] * (25.4/$this->dpi));
16484 $h = ($info['h'] * (25.4/$this->dpi));
16485 }
16486 }
16487 if(!$info) break;
16488 if ($info['cs']=='Indexed') { $objattr['Indexed'] = true; }
16489 $objattr['file'] = $srcpath;
16490 //Default width and height calculation if needed
16491 if($w==0 and $h==0) {
16492/*-- IMAGES-WMF --*/
16493 if ($info['type']=='wmf') {
16494 // WMF units are twips (1/20pt)
16495 // divide by 20 to get points
16496 // divide by k to get user units
16497 $w = abs($info['w'])/(20*_MPDFK);
16498 $h = abs($info['h']) / (20*_MPDFK);
16499 }
16500 else
16501/*-- END IMAGES-WMF --*/
16502 if ($info['type']=='svg') {
16503 // SVG units are pixels
16504 $w = abs($info['w'])/_MPDFK;
16505 $h = abs($info['h'])/_MPDFK;
16506 }
16507 else {
16508 //Put image at default image dpi
16509 $w=($info['w']/_MPDFK) * (72/$this->img_dpi);
16510 $h=($info['h']/_MPDFK) * (72/$this->img_dpi);
16511 }
16512 if (isset($properties['IMAGE-RESOLUTION'])) {
16513 if (preg_match('/from-image/i', $properties['IMAGE-RESOLUTION']) && isset($info['set-dpi']) && $info['set-dpi']>0) {
16514 $w *= $this->img_dpi / $info['set-dpi'];
16515 $h *= $this->img_dpi / $info['set-dpi'];
16516 }
16517 else if (preg_match('/(\d+)dpi/i', $properties['IMAGE-RESOLUTION'], $m)) {
16518 $dpi = $m[1];
16519 if ($dpi > 0) {
16520 $w *= $this->img_dpi / $dpi;
16521 $h *= $this->img_dpi / $dpi;
16522 }
16523 }
16524 }
16525 }
16526 // IF WIDTH OR HEIGHT SPECIFIED
16527 if($w==0) $w=$h*$info['w']/$info['h'];
16528 if($h==0) $h=$w*$info['h']/$info['w'];
16529 // Resize to maximum dimensions of page
16530 $maxWidth = $this->blk[$this->blklvl]['inner_width'];
16531 $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 10) ;
16532 if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
16533 if ($w + $extrawidth > $maxWidth ) {
16534 $w = $maxWidth - $extrawidth;
16535 $h=$w*$info['h']/$info['w'];
16536 }
16537 if ($h + $extraheight > $maxHeight ) {
16538 $h = $maxHeight - $extraheight;
16539 $w=$h*$info['w']/$info['h'];
16540 }
16541 $height = $h + $extraheight;
16542 $width = $w + $extrawidth;
16543 $objattr['type'] = 'image';
16544 $objattr['itype'] = $info['type'];
16545 $objattr['orig_h'] = $info['h'];
16546 $objattr['orig_w'] = $info['w'];
16547/*-- IMAGES-WMF --*/
16548 if ($info['type']=='wmf') {
16549 $objattr['wmf_x'] = $info['x'];
16550 $objattr['wmf_y'] = $info['y'];
16551 }
16552 else
16553/*-- END IMAGES-WMF --*/
16554 if ($info['type']=='svg') {
16555 $objattr['wmf_x'] = $info['x'];
16556 $objattr['wmf_y'] = $info['y'];
16557 }
16558 $objattr['height'] = $h + $extraheight;
16559 $objattr['width'] = $w + $extrawidth;
16560
16561 $objattr['image_height'] = $h;
16562 $objattr['image_width'] = $w;
16563 $objattr['ID'] = $info['i'];
16564 $texto = 'X';
16565 if ($this->useActiveForms) {
16566 if (isset($attr['ONCLICK'])) { $objattr['onClick'] = $attr['ONCLICK']; }
16567 $objattr['type'] = 'input';
16568 $type = 'IMAGE';
16569 }
16570 break;
16571 }
16572/*-- END IMAGES-CORE --*/
16573
16574 case 'BUTTON': // Draw a button
16575 case 'SUBMIT':
16576 case 'RESET':
16577 $type = strtoupper($attr['TYPE']);
16578 if ($type=='IMAGE') { $type = 'BUTTON'; } // src path not found
16579 if(isset($attr['NOPRINT'])) { $objattr['noprint'] = true; }
16580 if (!isset($attr['VALUE'])) {
16581 $objattr['value'] = ucfirst(strtolower($type));
16582 }
16583
16584 $texto = " " . $objattr['value'] . " ";
16585 $width = $this->GetStringWidth($texto) + ($this->form->form_element_spacing['button']['outer']['h']*2)+($this->form->form_element_spacing['button']['inner']['h']*2);
16586 $height = $this->FontSize + ($this->form->form_element_spacing['button']['outer']['v']*2)+($this->form->form_element_spacing['button']['inner']['v']*2);
16587 if ($this->useActiveForms) {
16588 if (isset($attr['ONCLICK'])) { $objattr['onClick'] = $attr['ONCLICK']; }
16589 }
16590 break;
16591
16592 case 'PASSWORD':
16593 case 'TEXT':
16594 default:
16595 if ($type == '') { $type = 'TEXT'; }
16596 if(strtoupper($attr['TYPE'])=='PASSWORD') { $type = 'PASSWORD'; }
16597 if (isset($attr['VALUE'])) {
16598 if ($type == 'PASSWORD') {
16599 $num_stars = mb_strlen($attr['VALUE'],$this->mb_enc );
16600 $texto = str_repeat('*',$num_stars);
16601 }
16602 else { $texto = $attr['VALUE']; }
16603 }
16604 $xw = ($this->form->form_element_spacing['input']['outer']['h']*2)+($this->form->form_element_spacing['input']['inner']['h']*2);
16605 $xh = ($this->form->form_element_spacing['input']['outer']['v']*2)+($this->form->form_element_spacing['input']['inner']['v']*2);
16606 if ($w) { $width = $w + $xw; }
16607 else { $width = (20 * $spacesize) + $xw; } // Default width in chars
16608 if (isset($attr['SIZE']) and ctype_digit($attr['SIZE']) ) $width = ($attr['SIZE'] * $spacesize) + $xw;
16609 $height = $this->FontSize + $xh;
16610 if (isset($attr['MAXLENGTH']) and ctype_digit($attr['MAXLENGTH']) ) $objattr['maxlength'] = $attr['MAXLENGTH'];
16611 if ($this->useActiveForms) {
16612 if (isset($attr['ONCALCULATE'])) { $objattr['onCalculate'] = $attr['ONCALCULATE']; }
16613 else if (isset($attr['ONCHANGE'])) { $objattr['onCalculate'] = $attr['ONCHANGE']; }
16614 if (isset($attr['ONVALIDATE'])) { $objattr['onValidate'] = $attr['ONVALIDATE']; }
16615 if (isset($attr['ONKEYSTROKE'])) { $objattr['onKeystroke'] = $attr['ONKEYSTROKE']; }
16616 if (isset($attr['ONFORMAT'])) { $objattr['onFormat'] = $attr['ONFORMAT']; }
16617 }
16618 break;
16619 }
16620
16621 $objattr['subtype'] = $type;
16622 $objattr['text'] = $texto;
16623 $objattr['width'] = $width;
16624 $objattr['height'] = $height;
16625 $e = "\xbb\xa4\xactype=input,objattr=".serialize($objattr)."\xbb\xa4\xac";
16626
16627 // Clear properties - tidy up
16628 $properties = array();
16629
16630/*-- TABLES --*/
16631 // Output it to buffers
16632 if ($this->tableLevel) {
16633 $this->_saveCellTextBuffer($e, $this->HREF);
16634 $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
16635
16636 }
16637 else {
16638/*-- END TABLES --*/
16639 $this->_saveTextBuffer($e, $this->HREF);
16640 } // *TABLES*
16641
16642 if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
16643 unset($this->InlineProperties[$tag]);
16644
16645 break; // END of INPUT
16646/*-- END FORMS --*/
16647
16648
16649 // *********** GRAPH ********************
16650 case 'JPGRAPH':
16651 if (!$this->useGraphs) { break; }
16652 if ($attr['TABLE']) { $gid = strtoupper($attr['TABLE']); }
16653 else { $gid = '0'; }
16654 if (!is_array($this->graphs[$gid]) || count($this->graphs[$gid])==0 ) { break; }
16655 include_once(_MPDF_PATH.'graph.php');
16656 $this->graphs[$gid]['attr'] = $attr;
16657
16658
16659 if (isset($this->graphs[$gid]['attr']['WIDTH']) && $this->graphs[$gid]['attr']['WIDTH']) {
16660 $this->graphs[$gid]['attr']['cWIDTH']=$this->ConvertSize($this->graphs[$gid]['attr']['WIDTH'],$pgwidth);
16661 } // mm
16662 if (isset($this->graphs[$gid]['attr']['HEIGHT']) && $this->graphs[$gid]['attr']['HEIGHT']) {
16663 $this->graphs[$gid]['attr']['cHEIGHT']=$this->ConvertSize($this->graphs[$gid]['attr']['HEIGHT'],$pgwidth);
16664 }
16665
16666 $graph_img = print_graph($this->graphs[$gid],$this->blk[$this->blklvl]['inner_width']);
16667 if ($graph_img) {
16668 if(isset($attr['ROTATE'])) {
16669 if ($attr['ROTATE']==90 || $attr['ROTATE']==-90) {
16670 $tmpw = $graph_img['w'];
16671 $graph_img['w']= $graph_img['h'];
16672 $graph_img['h']= $tmpw;
16673 }
16674 }
16675 $attr['SRC'] = $graph_img['file'];
16676 $attr['WIDTH'] = $graph_img['w'];
16677 $attr['HEIGHT'] = $graph_img['h'];
16678 }
16679 else { break; }
16680
16681 // *********** IMAGE ********************
16682/*-- IMAGES-CORE --*/
16683 case 'IMG':
16684 if ($this->progressBar) { $this->UpdateProgressBar(1,'','IMG'); } // *PROGRESS-BAR*
16685 $objattr = array();
16686 $objattr['margin_top'] = 0;
16687 $objattr['margin_bottom'] = 0;
16688 $objattr['margin_left'] = 0;
16689 $objattr['margin_right'] = 0;
16690 $objattr['padding_top'] = 0;
16691 $objattr['padding_bottom'] = 0;
16692 $objattr['padding_left'] = 0;
16693 $objattr['padding_right'] = 0;
16694 $objattr['width'] = 0;
16695 $objattr['height'] = 0;
16696 $objattr['border_top']['w'] = 0;
16697 $objattr['border_bottom']['w'] = 0;
16698 $objattr['border_left']['w'] = 0;
16699 $objattr['border_right']['w'] = 0;
16700 if(isset($attr['SRC'])) {
16701 $srcpath = $attr['SRC'];
16702 $orig_srcpath = $attr['ORIG_SRC'];
16703 $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
16704 if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') {
16705 return;
16706 }
16707 // mPDF 5.6.01 - LAYERS
16708 if (isset($properties['Z-INDEX']) && $this->currentlayer==0) {
16709 $v = intval($properties['Z-INDEX']);
16710 if ($v > 0) {
16711 $objattr['z-index'] = $v;
16712 }
16713 }
16714
16715 $objattr['visibility'] = 'visible';
16716 if (isset($properties['VISIBILITY'])) {
16717 $v = strtolower($properties['VISIBILITY']);
16718 if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') {
16719 $objattr['visibility'] = $v;
16720 }
16721 }
16722
16723 // VSPACE and HSPACE converted to margins in MergeCSS
16724 if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16725 if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16726 if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16727 if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16728
16729 if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16730 if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16731 if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16732 if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16733
16734 if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
16735 if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
16736 if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
16737 if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
16738
16739 if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
16740 $w = 0;
16741 $h = 0;
16742 if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16743 else if(isset($attr['WIDTH'])) $w = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16744 if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16745 else if(isset($attr['HEIGHT'])) $h = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16746 // mPDF 5.5.15 // mPDF 5.6.60
16747 $maxw=$maxh=$minw=$minh=false;
16748 if(isset($properties['MAX-WIDTH'])) $maxw = $this->ConvertSize($properties['MAX-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16749 else if(isset($attr['MAX-WIDTH'])) $maxw = $this->ConvertSize($attr['MAX-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16750 if(isset($properties['MAX-HEIGHT'])) $maxh = $this->ConvertSize($properties['MAX-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16751 else if(isset($attr['MAX-HEIGHT'])) $maxh = $this->ConvertSize($attr['MAX-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16752 if(isset($properties['MIN-WIDTH'])) $minw = $this->ConvertSize($properties['MIN-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16753 else if(isset($attr['MIN-WIDTH'])) $minw = $this->ConvertSize($attr['MIN-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16754 if(isset($properties['MIN-HEIGHT'])) $minh = $this->ConvertSize($properties['MIN-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16755 else if(isset($attr['MIN-HEIGHT'])) $minh = $this->ConvertSize($attr['MIN-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
16756
16757 if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; }
16758 if ($this->HREF) {
16759 if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) {
16760 $href = $this->HREF;
16761 while(array_key_exists($href,$this->internallink)) $href="#".$href;
16762 $this->internallink[$href] = $this->AddLink();
16763 $objattr['link'] = $this->internallink[$href];
16764 }
16765 else { $objattr['link'] = $this->HREF; }
16766 }
16767 $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
16768 $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
16769
16770/*-- BACKGROUNDS --*/
16771 if(isset($properties['GRADIENT-MASK']) && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/',$properties['GRADIENT-MASK'])) {
16772 $objattr['GRADIENT-MASK'] = $properties['GRADIENT-MASK'];
16773 }
16774/*-- END BACKGROUNDS --*/
16775
16776 // Image file
16777 $info=$this->_getImage($srcpath, true, true, $orig_srcpath);
16778 if(!$info) {
16779 $info = $this->_getImage($this->noImageFile);
16780 if ($info) {
16781 $srcpath = $this->noImageFile;
16782 $w = ($info['w'] * (25.4/$this->dpi));
16783 $h = ($info['h'] * (25.4/$this->dpi));
16784 }
16785 }
16786 if(!$info) break;
16787
16788 if(isset($attr['ROTATE'])) { $image_orientation = $attr['ROTATE']; }
16789 else if(isset($properties['IMAGE-ORIENTATION'])) { $image_orientation = $properties['IMAGE-ORIENTATION']; }
16790 else { $image_orientation = 0; }
16791 if($image_orientation) {
16792 if ($image_orientation==90 || $image_orientation==-90 || $image_orientation==270) {
16793 $tmpw = $info['w'];
16794 $info['w'] = $info['h'];
16795 $info['h'] = $tmpw;
16796 }
16797 $objattr['ROTATE'] = $image_orientation;
16798 }
16799
16800 $objattr['file'] = $srcpath;
16801 //Default width and height calculation if needed
16802 if($w==0 and $h==0) {
16803/*-- IMAGES-WMF --*/
16804 if ($info['type']=='wmf') {
16805 // WMF units are twips (1/20pt)
16806 // divide by 20 to get points
16807 // divide by k to get user units
16808 $w = abs($info['w'])/(20*_MPDFK);
16809 $h = abs($info['h']) / (20*_MPDFK);
16810 }
16811 else
16812/*-- END IMAGES-WMF --*/
16813 if ($info['type']=='svg') {
16814 // SVG units are pixels
16815 $w = abs($info['w'])/_MPDFK;
16816 $h = abs($info['h'])/_MPDFK;
16817 }
16818 else {
16819 //Put image at default image dpi
16820 $w=($info['w']/_MPDFK) * (72/$this->img_dpi);
16821 $h=($info['h']/_MPDFK) * (72/$this->img_dpi);
16822 }
16823 if (isset($properties['IMAGE-RESOLUTION'])) {
16824 if (preg_match('/from-image/i', $properties['IMAGE-RESOLUTION']) && isset($info['set-dpi']) && $info['set-dpi']>0) {
16825 $w *= $this->img_dpi / $info['set-dpi'];
16826 $h *= $this->img_dpi / $info['set-dpi'];
16827 }
16828 else if (preg_match('/(\d+)dpi/i', $properties['IMAGE-RESOLUTION'], $m)) {
16829 $dpi = $m[1];
16830 if ($dpi > 0) {
16831 $w *= $this->img_dpi / $dpi;
16832 $h *= $this->img_dpi / $dpi;
16833 }
16834 }
16835 }
16836 }
16837 // IF WIDTH OR HEIGHT SPECIFIED
16838 if($w==0) $w=abs($h*$info['w']/$info['h']);
16839 if($h==0) $h=abs($w*$info['h']/$info['w']);
16840
16841 // mPDF 5.5.15
16842 if ($minw && $w<$minw) { $w = $minw; $h=abs($w*$info['h']/$info['w']); }
16843 if ($maxw && $w>$maxw) { $w = $maxw; $h=abs($w*$info['h']/$info['w']); }
16844 if ($minh && $h<$minh) { $h = $minh; $w=abs($h*$info['w']/$info['h']); }
16845 if ($maxh && $h>$maxh) { $h = $maxh; $w=abs($h*$info['w']/$info['h']); }
16846
16847 // Resize to maximum dimensions of page
16848 $maxWidth = $this->blk[$this->blklvl]['inner_width'];
16849 $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 1) ;
16850 if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
16851 if ($w + $extrawidth > $maxWidth ) {
16852 $w = $maxWidth - $extrawidth;
16853 $h=abs($w*$info['h']/$info['w']);
16854 }
16855
16856 if ($h + $extraheight > $maxHeight ) {
16857 $h = $maxHeight - $extraheight;
16858 $w=abs($h*$info['w']/$info['h']);
16859 }
16860 $objattr['type'] = 'image';
16861 $objattr['itype'] = $info['type'];
16862
16863 $objattr['orig_h'] = $info['h'];
16864 $objattr['orig_w'] = $info['w'];
16865/*-- IMAGES-WMF --*/
16866 if ($info['type']=='wmf') {
16867 $objattr['wmf_x'] = $info['x'];
16868 $objattr['wmf_y'] = $info['y'];
16869 }
16870 else
16871/*-- END IMAGES-WMF --*/
16872 if ($info['type']=='svg') {
16873 $objattr['wmf_x'] = $info['x'];
16874 $objattr['wmf_y'] = $info['y'];
16875 }
16876 $objattr['height'] = $h + $extraheight;
16877 $objattr['width'] = $w + $extrawidth;
16878 $objattr['image_height'] = $h;
16879 $objattr['image_width'] = $w;
16880/*-- CSS-IMAGE-FLOAT --*/
16881 if (!$this->ColActive && !$this->tableLevel && !$this->listlvl && !$this->kwt && !$this->keep_block_together) {
16882 if (isset($properties['FLOAT']) && (strtoupper($properties['FLOAT']) == 'RIGHT' || strtoupper($properties['FLOAT']) == 'LEFT')) {
16883 $objattr['float'] = substr(strtoupper($properties['FLOAT']),0,1);
16884 }
16885 }
16886/*-- END CSS-IMAGE-FLOAT --*/
16887
16888 $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
16889
16890 // Clear properties - tidy up
16891 $properties = array();
16892
16893/*-- TABLES --*/
16894 // Output it to buffers
16895 if ($this->tableLevel) {
16896 $this->_saveCellTextBuffer($e, $this->HREF);
16897 $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
16898 }
16899 else {
16900/*-- END TABLES --*/
16901 $this->_saveTextBuffer($e, $this->HREF);
16902 } // *TABLES*
16903/*-- ANNOTATIONS --*/
16904 if ($this->title2annots && isset($attr['TITLE'])) {
16905 $objattr = array();
16906 $objattr['margin_top'] = 0;
16907 $objattr['margin_bottom'] = 0;
16908 $objattr['margin_left'] = 0;
16909 $objattr['margin_right'] = 0;
16910 $objattr['width'] = 0;
16911 $objattr['height'] = 0;
16912 $objattr['border_top']['w'] = 0;
16913 $objattr['border_bottom']['w'] = 0;
16914 $objattr['border_left']['w'] = 0;
16915 $objattr['border_right']['w'] = 0;
16916 $objattr['CONTENT'] = $attr['TITLE'];
16917 $objattr['type'] = 'annot';
16918 $objattr['POS-X'] = 0;
16919 $objattr['POS-Y'] = 0;
16920 $objattr['ICON'] = 'Comment';
16921 $objattr['AUTHOR'] = '';
16922 $objattr['SUBJECT'] = '';
16923 $objattr['OPACITY'] = $this->annotOpacity;
16924 $objattr['COLOR'] = $this->ConvertColor('yellow');
16925 $e = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac";
16926 if($this->tableLevel) { // *TABLES*
16927 $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); // *TABLES*
16928 } // *TABLES*
16929 else { // *TABLES*
16930 $this->textbuffer[] = array($e);
16931 } // *TABLES*
16932 }
16933/*-- END ANNOTATIONS --*/
16934 }
16935 break;
16936/*-- END IMAGES-CORE --*/
16937
16938
16939 // *********** CIRCULAR TEXT = TEXTCIRCLE ********************
16940 case 'TEXTCIRCLE':
16941 $objattr = array();
16942 $objattr['margin_top'] = 0;
16943 $objattr['margin_bottom'] = 0;
16944 $objattr['margin_left'] = 0;
16945 $objattr['margin_right'] = 0;
16946 $objattr['padding_top'] = 0;
16947 $objattr['padding_bottom'] = 0;
16948 $objattr['padding_left'] = 0;
16949 $objattr['padding_right'] = 0;
16950 $objattr['width'] = 0;
16951 $objattr['height'] = 0;
16952 $objattr['border_top']['w'] = 0;
16953 $objattr['border_bottom']['w'] = 0;
16954 $objattr['border_left']['w'] = 0;
16955 $objattr['border_right']['w'] = 0;
16956 $objattr['top-text'] = '';
16957 $objattr['bottom-text'] = '';
16958 $objattr['r'] = 20; // radius (default value here for safety)
16959 $objattr['space-width'] = 120;
16960 $objattr['char-width'] = 100;
16961
16962 $this->InlineProperties[$tag] = $this->saveInlineProperties();
16963 $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr);
16964
16965 if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') {
16966 return;
16967 }
16968 if (isset($attr['R'])) { $objattr['r']=$this->ConvertSize($attr['R'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
16969 if(isset($attr['TOP-TEXT'])) {
16970 $objattr['top-text'] = strcode2utf($attr['TOP-TEXT']);
16971 $objattr['top-text'] = $this->lesser_entity_decode($objattr['top-text']);
16972 if ($this->onlyCoreFonts)
16973 $objattr['top-text'] = mb_convert_encoding($objattr['top-text'], $this->mb_enc,'UTF-8');
16974 }
16975 if(isset($attr['BOTTOM-TEXT'])) {
16976 $objattr['bottom-text'] = strcode2utf($attr['BOTTOM-TEXT']);
16977 $objattr['bottom-text'] = $this->lesser_entity_decode($objattr['bottom-text']);
16978 if ($this->onlyCoreFonts)
16979 $objattr['bottom-text'] = mb_convert_encoding($objattr['bottom-text'], $this->mb_enc,'UTF-8');
16980 }
16981 if(isset($attr['SPACE-WIDTH']) && $attr['SPACE-WIDTH']) { $objattr['space-width'] = $attr['SPACE-WIDTH']; }
16982 if(isset($attr['CHAR-WIDTH']) && $attr['CHAR-WIDTH']) { $objattr['char-width'] = $attr['CHAR-WIDTH']; }
16983
16984 // VISIBILITY
16985 $objattr['visibility'] = 'visible';
16986 if (isset($properties['VISIBILITY'])) {
16987 $v = strtolower($properties['VISIBILITY']);
16988 if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') {
16989 $objattr['visibility'] = $v;
16990 }
16991 }
16992 // mPDF 5.5.23
16993 if (isset($properties['FONT-SIZE'])) {
16994 if (strtolower($properties['FONT-SIZE'])=='auto') {
16995 if ($objattr['top-text'] && $objattr['bottom-text']) {
16996 $objattr['fontsize'] = -2;
16997 }
16998 else {
16999 $objattr['fontsize'] = -1;
17000 }
17001 }
17002 else {
17003 $mmsize = $this->ConvertSize($properties['FONT-SIZE'],($this->default_font_size/_MPDFK));
17004 $this->SetFontSize($mmsize*_MPDFK,false);
17005 $objattr['fontsize'] = $this->FontSizePt;
17006 }
17007 }
17008 // mPDF 5.5.23
17009 if(isset($attr['DIVIDER'])) {
17010 $objattr['divider'] = strcode2utf($attr['DIVIDER']);
17011 $objattr['divider'] = $this->lesser_entity_decode($objattr['divider']);
17012 if ($this->onlyCoreFonts)
17013 $objattr['divider'] = mb_convert_encoding($objattr['divider'], $this->mb_enc,'UTF-8');
17014
17015 }
17016
17017 if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
17018
17019 $objattr['fontstyle'] = '';
17020 if (isset($properties['FONT-WEIGHT'])) {
17021 if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD') { $objattr['fontstyle'] .= 'B'; }
17022 }
17023 if (isset($properties['FONT-STYLE'])) {
17024 if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $objattr['fontstyle'] .= 'I'; }
17025 }
17026
17027 if (isset($properties['FONT-FAMILY'])) {
17028 $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false);
17029 }
17030 $objattr['fontfamily'] = $this->FontFamily;
17031
17032 // VSPACE and HSPACE converted to margins in MergeCSS
17033 if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
17034 if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
17035 if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
17036 if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
17037
17038 if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
17039 if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
17040 if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
17041 if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
17042
17043 if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
17044 if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
17045 if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
17046 if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
17047
17048 if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; }
17049 if (isset($properties['BACKGROUND-COLOR']) && $properties['BACKGROUND-COLOR'] != '') { $objattr['bgcolor'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
17050 else { $objattr['bgcolor'] = false; }
17051 if ($this->HREF) {
17052 if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) {
17053 $href = $this->HREF;
17054 while(array_key_exists($href,$this->internallink)) $href="#".$href;
17055 $this->internallink[$href] = $this->AddLink();
17056 $objattr['link'] = $this->internallink[$href];
17057 }
17058 else { $objattr['link'] = $this->HREF; }
17059 }
17060 $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
17061 $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
17062
17063
17064 $w = $objattr['r']*2;
17065 $h = $w;
17066 $objattr['height'] = $h + $extraheight;
17067 $objattr['width'] = $w + $extrawidth;
17068 $objattr['type'] = 'textcircle';
17069
17070 $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
17071
17072 // Clear properties - tidy up
17073 $properties = array();
17074
17075/*-- TABLES --*/
17076 // Output it to buffers
17077 if ($this->tableLevel) {
17078 $this->_saveCellTextBuffer($e, $this->HREF);
17079 $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
17080 }
17081 else {
17082/*-- END TABLES --*/
17083 $this->_saveTextBuffer($e, $this->HREF);
17084 } // *TABLES*
17085
17086 if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
17087 unset($this->InlineProperties[$tag]);
17088
17089 break;
17090
17091
17092/*-- TABLES --*/
17093
17094 case 'TABLE': // TABLE-BEGIN
17095 $this->tdbegin = false;
17096 $this->lastoptionaltag = '';
17097 // Disable vertical justification in columns
17098 if ($this->ColActive) { $this->colvAlign = ''; } // *COLUMNS*
17099 if ($this->lastblocklevelchange == 1) { $blockstate = 1; } // Top margins/padding only
17100 else if ($this->lastblocklevelchange < 1) { $blockstate = 0; } // NO margins/padding
17101 // called from block after new div e.g. <div> ... <table> ... Outputs block top margin/border and padding
17102 if (count($this->textbuffer) == 0 && $this->lastblocklevelchange == 1 && !$this->tableLevel && !$this->kwt) {
17103 $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,1,true, $this->blk[$this->blklvl]['direction']);
17104 $this->finishFlowingBlock(true); // true = END of flowing block
17105 }
17106 else if (!$this->tableLevel && count($this->textbuffer)) { $this->printbuffer($this->textbuffer,$blockstate); }
17107
17108 $this->textbuffer=array();
17109 $this->lastblocklevelchange = -1;
17110 if ($this->tableLevel) { // i.e. now a nested table coming...
17111 // Save current level table
17112 // mPDF 5.4.10
17113 $this->cell['PARENTCELL'] = $this->saveInlineProperties();
17114 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['baseProperties']= $this->base_table_properties;
17115 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = $this->cell;
17116 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currrow'] = $this->row;
17117 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currcol'] = $this->col;
17118 }
17119 $this->tableLevel++;
17120 $this->cssmgr->tbCSSlvl++;
17121
17122 if ($this->tableLevel>1) { // inherit table properties from cell in which nested
17123 $this->base_table_properties['FONT-KERNING'] = $this->kerning ;
17124 $this->base_table_properties['LETTER-SPACING'] = $this->lSpacingCSS ;
17125 $this->base_table_properties['WORD-SPACING'] = $this->wSpacingCSS ;
17126 }
17127
17128 if (isset($this->tbctr[$this->tableLevel])) { $this->tbctr[$this->tableLevel]++; }
17129 else { $this->tbctr[$this->tableLevel] = 1; }
17130
17131 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['level'] = $this->tableLevel;
17132 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['levelid'] = $this->tbctr[$this->tableLevel];
17133
17134 if ($this->tableLevel > $this->innermostTableLevel) { $this->innermostTableLevel = $this->tableLevel; }
17135 if ($this->tableLevel > 1) {
17136 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nestedpos'] = array($this->row,$this->col,$this->tbctr[($this->tableLevel-1)]);
17137 }
17138 //++++++++++++++++++++++++++++
17139
17140 $this->cell = array();
17141 $this->col=-1; //int
17142 $this->row=-1; //int
17143 $table = &$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]];
17144
17145 // New table - any level
17146 if ($this->cacheTables) {
17147 $this->packTableData = true; // required for cacheTables
17148 $this->simpleTables = false; // Cannot co-exist with cacheTables
17149 $table['cache'] = _MPDF_TEMP_PATH.'_tempTblCache'.uniqid(rand(1,100000),true).'.dat';
17150 $fh = fopen($table['cache'] , "wb") or $this->Error("When using cacheTables, you must have read/write access to cache files (".$table['cache'] .")");
17151 fwrite($fh, "\x00");
17152 fclose($fh);
17153 $table['ptr'] = 1 ; // Must not be 0
17154 }
17155
17156 $table['direction'] = $this->directionality;
17157 $table['bgcolor'] = false;
17158 $table['va'] = false;
17159 $table['txta'] = false;
17160 $table['topntail'] = false;
17161 $table['thead-underline'] = false;
17162 $table['border'] = false;
17163 $table['border_details']['R']['w'] = 0;
17164 $table['border_details']['L']['w'] = 0;
17165 $table['border_details']['T']['w'] = 0;
17166 $table['border_details']['B']['w'] = 0;
17167 $table['border_details']['R']['style'] = '';
17168 $table['border_details']['L']['style'] = '';
17169 $table['border_details']['T']['style'] = '';
17170 $table['border_details']['B']['style'] = '';
17171 $table['max_cell_border_width']['R'] = 0;
17172 $table['max_cell_border_width']['L'] = 0;
17173 $table['max_cell_border_width']['T'] = 0;
17174 $table['max_cell_border_width']['B'] = 0;
17175 $table['padding']['L'] = false;
17176 $table['padding']['R'] = false;
17177 $table['padding']['T'] = false;
17178 $table['padding']['B'] = false;
17179 $table['margin']['L'] = false;
17180 $table['margin']['R'] = false;
17181 $table['margin']['T'] = false;
17182 $table['margin']['B'] = false;
17183 $table['a'] = false;
17184 $table['border_spacing_H'] = false;
17185 $table['border_spacing_V'] = false;
17186 $table['decimal_align'] = false; // mPDF 5.6.13
17187 $this->Reset();
17188 $this->InlineProperties = array();
17189 $this->spanlvl = 0;
17190 $table['nc'] = $table['nr'] = 0;
17191 $this->tablethead = 0;
17192 $this->tabletfoot = 0;
17193 $this->tabletheadjustfinished = false;
17194
17195
17196 if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins && $this->tableLevel==1) { $lastbottommargin = $this->lastblockbottommargin; }
17197 else { $lastbottommargin = 0; }
17198 $this->lastblockbottommargin = 0;
17199 $this->blockjustfinished=false;
17200
17201 if ($this->tableLevel==1) {
17202 $this->tableCJK = false;
17203 $this->table_lineheight = $this->normalLineheight;
17204 $table['headernrows'] = 0;
17205 $table['footernrows'] = 0;
17206 $this->base_table_properties = array();
17207 }
17208
17209 // ADDED CSS FUNCIONS FOR TABLE
17210 if ($this->cssmgr->tbCSSlvl==1) {
17211 $properties = $this->cssmgr->MergeCSS('TOPTABLE',$tag,$attr);
17212 }
17213 else {
17214 $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
17215 }
17216 $w = '';
17217 if (isset($properties['WIDTH'])) { $w = $properties['WIDTH']; }
17218 else if (isset($attr['WIDTH']) && $attr['WIDTH']) { $w = $attr['WIDTH']; }
17219
17220
17221 if(isset($properties['DIRECTION']) && $properties['DIRECTION']) { $table['direction'] = strtolower($properties['DIRECTION']); }
17222 else if(isset($attr['DIR']) && $attr['DIR']) { $table['direction'] = strtolower($attr['DIR']); }
17223 else if (!isset($table['direction'])){ $table['direction'] = $this->blk[$this->blklvl]['direction']; }
17224
17225 if (isset($properties['BACKGROUND-COLOR'])) { $table['bgcolor'][-1] = $properties['BACKGROUND-COLOR']; }
17226 else if (isset($properties['BACKGROUND'])) { $table['bgcolor'][-1] = $properties['BACKGROUND']; }
17227 else if (isset($attr['BGCOLOR'])) { $table['bgcolor'][-1] = $attr['BGCOLOR']; }
17228 if (isset($properties['VERTICAL-ALIGN'])) { $table['va'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
17229 if (isset($properties['TEXT-ALIGN'])) { $table['txta'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
17230 if (isset($attr['ALIGN'])) { $table['a'] = $align[strtolower($attr['ALIGN'])]; }
17231 if (!$table['a']) {
17232 if ($table['direction'] == 'rtl' ) { $table['a'] = 'R'; }
17233 else { $table['a'] = 'L'; }
17234 }
17235
17236 if (isset($properties['AUTOSIZE']) && $properties['AUTOSIZE'] && $this->tableLevel ==1) {
17237 $this->shrink_this_table_to_fit = $properties['AUTOSIZE'];
17238 if ($this->shrink_this_table_to_fit < 1) { $this->shrink_this_table_to_fit = 0; }
17239 }
17240 if (isset($properties['ROTATE']) && $properties['ROTATE'] && $this->tableLevel ==1) {
17241 $this->table_rotate = $properties['ROTATE'];
17242 }
17243 if (isset($properties['TOPNTAIL'])) { $table['topntail'] = $properties['TOPNTAIL']; }
17244 if (isset($properties['THEAD-UNDERLINE'])) { $table['thead-underline'] = $properties['THEAD-UNDERLINE']; }
17245
17246 if (isset($properties['BORDER'])) {
17247 $bord = $this->border_details($properties['BORDER']);
17248 if ($bord['s']) {
17249 $table['border'] = _BORDER_ALL;
17250 $table['border_details']['R'] = $bord;
17251 $table['border_details']['L'] = $bord;
17252 $table['border_details']['T'] = $bord;
17253 $table['border_details']['B'] = $bord;
17254 }
17255 }
17256 if (isset($properties['BORDER-RIGHT'])) {
17257 if ($table['direction'] == 'rtl') { // *RTL*
17258 $table['border_details']['R'] = $this->border_details($properties['BORDER-LEFT']); // *RTL*
17259 } // *RTL*
17260 else { // *RTL*
17261 $table['border_details']['R'] = $this->border_details($properties['BORDER-RIGHT']);
17262 } // *RTL*
17263 $this->setBorder($table['border'], _BORDER_RIGHT, $table['border_details']['R']['s']);
17264 }
17265 if (isset($properties['BORDER-LEFT'])) {
17266 if ($table['direction'] == 'rtl') { // *RTL*
17267 $table['border_details']['L'] = $this->border_details($properties['BORDER-RIGHT']); // *RTL*
17268 } // *RTL*
17269 else { // *RTL*
17270 $table['border_details']['L'] = $this->border_details($properties['BORDER-LEFT']);
17271 } // *RTL*
17272 $this->setBorder($table['border'], _BORDER_LEFT, $table['border_details']['L']['s']);
17273 }
17274 if (isset($properties['BORDER-BOTTOM'])) {
17275 $table['border_details']['B'] = $this->border_details($properties['BORDER-BOTTOM']);
17276 $this->setBorder($table['border'], _BORDER_BOTTOM, $table['border_details']['B']['s']);
17277 }
17278 if (isset($properties['BORDER-TOP'])) {
17279 $table['border_details']['T'] = $this->border_details($properties['BORDER-TOP']);
17280 $this->setBorder($table['border'], _BORDER_TOP, $table['border_details']['T']['s']);
17281 }
17282 if ($table['border']){
17283 $this->table_border_css_set = 1;
17284 }
17285 else {
17286 $this->table_border_css_set = 0;
17287 }
17288
17289 if (isset($properties['FONT-FAMILY'])) {
17290 $this->default_font = $properties['FONT-FAMILY'];
17291 $this->SetFont($this->default_font,'',0,false);
17292 }
17293 $this->base_table_properties['FONT-FAMILY'] = $this->FontFamily; // mPDF 5.4.10
17294
17295 if (isset($properties['FONT-SIZE'])) {
17296 // mPDF 5.4.10
17297 if ($this->tableLevel>1) { $mmsize = $this->ConvertSize($properties['FONT-SIZE'], $this->base_table_properties['FONT-SIZE']); }
17298 else { $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK); }
17299 if ($mmsize) {
17300 $this->default_font_size = $mmsize*(_MPDFK);
17301 $this->SetFontSize($this->default_font_size,false);
17302 }
17303 }
17304 $this->base_table_properties['FONT-SIZE'] = $this->FontSize.'mm'; // mPDF 5.4.10
17305
17306 if (isset($properties['FONT-WEIGHT'])) {
17307 if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD') { $this->base_table_properties['FONT-WEIGHT'] = 'BOLD'; }
17308 }
17309 if (isset($properties['FONT-STYLE'])) {
17310 if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->base_table_properties['FONT-STYLE'] = 'ITALIC'; }
17311 }
17312 if (isset($properties['COLOR'])) {
17313 $this->base_table_properties['COLOR'] = $properties['COLOR'];
17314 }
17315 if (isset($properties['FONT-KERNING'])) {
17316 $this->base_table_properties['FONT-KERNING'] = $properties['FONT-KERNING'];
17317 }
17318 if (isset($properties['LETTER-SPACING'])) {
17319 $this->base_table_properties['LETTER-SPACING'] = $properties['LETTER-SPACING'];
17320 }
17321 if (isset($properties['WORD-SPACING'])) {
17322 $this->base_table_properties['WORD-SPACING'] = $properties['WORD-SPACING'];
17323 }
17324
17325 if (isset($properties['PADDING-LEFT'])) {
17326 $table['padding']['L'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17327 }
17328 if (isset($properties['PADDING-RIGHT'])) {
17329 $table['padding']['R'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17330 }
17331 if (isset($properties['PADDING-TOP'])) {
17332 $table['padding']['T'] = $this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17333 }
17334 if (isset($properties['PADDING-BOTTOM'])) {
17335 $table['padding']['B'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17336 }
17337
17338 if (isset($properties['MARGIN-TOP'])) {
17339 if ($lastbottommargin) {
17340 $tmp = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17341 if ($tmp > $lastbottommargin) { $properties['MARGIN-TOP'] -= $lastbottommargin; }
17342 else { $properties['MARGIN-TOP'] = 0; }
17343 }
17344 $table['margin']['T'] = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17345 }
17346
17347 if (isset($properties['MARGIN-BOTTOM'])) {
17348 $table['margin']['B'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17349 }
17350 if (isset($properties['MARGIN-LEFT'])) {
17351 $table['margin']['L'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17352 }
17353
17354 if (isset($properties['MARGIN-RIGHT'])) {
17355 $table['margin']['R'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17356 }
17357 if (isset($properties['MARGIN-LEFT']) && isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-LEFT'])=='auto' && strtolower($properties['MARGIN-RIGHT'])=='auto') {
17358 $table['a'] = 'C';
17359 }
17360 else if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') {
17361 $table['a'] = 'R';
17362 }
17363 else if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') {
17364 $table['a'] = 'L';
17365 }
17366
17367 if (isset($properties['LINE-HEIGHT']) && $this->tableLevel==1) {
17368 $this->table_lineheight = $this->fixLineheight($properties['LINE-HEIGHT']);
17369 if (!$this->table_lineheight) { $this->table_lineheight = $this->normalLineheight; }
17370 }
17371
17372 if (isset($properties['BORDER-COLLAPSE']) && strtoupper($properties['BORDER-COLLAPSE'])=='SEPARATE') {
17373 $table['borders_separate'] = true;
17374 }
17375 else {
17376 $table['borders_separate'] = false;
17377 }
17378
17379 if (!$table['borders_separate']) { $table['border_spacing_H'] = $table['border_spacing_V'] = 0; }
17380 else if (isset($attr['CELLSPACING'])) {
17381 $table['border_spacing_H'] = $table['border_spacing_V'] = $this->ConvertSize($attr['CELLSPACING'],$this->blk[$this->blklvl]['inner_width']);
17382 }
17383 if (isset($properties['BORDER-SPACING-H'])) {
17384 $table['border_spacing_H'] = $this->ConvertSize($properties['BORDER-SPACING-H'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17385 }
17386 if (isset($properties['BORDER-SPACING-V'])) {
17387 $table['border_spacing_V'] = $this->ConvertSize($properties['BORDER-SPACING-V'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17388 }
17389
17390 if (isset($properties['EMPTY-CELLS'])) {
17391 $table['empty_cells'] = strtolower($properties['EMPTY-CELLS']); // 'hide' or 'show'
17392 }
17393 else { $table['empty_cells'] = ''; }
17394
17395 if (isset($properties['PAGE-BREAK-INSIDE']) && strtoupper($properties['PAGE-BREAK-INSIDE'])=='AVOID' && $this->tableLevel==1 && !$this->writingHTMLfooter) {
17396 $this->table_keep_together = true;
17397 }
17398 else if ($this->tableLevel==1) {
17399 $this->table_keep_together = false;
17400 }
17401 if (isset($properties['PAGE-BREAK-AFTER']) && $this->tableLevel==1) {
17402 $table['page_break_after'] = strtoupper($properties['PAGE-BREAK-AFTER']);
17403 }
17404
17405/*-- BACKGROUNDS --*/
17406 if (isset($properties['BACKGROUND-GRADIENT']) && !$this->kwt && !$this->ColActive) { $table['gradient'] = $properties['BACKGROUND-GRADIENT']; }
17407
17408 if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive) {
17409 $ret = $this->SetBackground($properties, $currblk['inner_width']);
17410 if ($ret) { $table['background-image'] = $ret; }
17411 }
17412/*-- END BACKGROUNDS --*/
17413
17414 if (isset($properties['OVERFLOW'])) {
17415 $table['overflow'] = strtolower($properties['OVERFLOW']); // 'hidden' 'wrap' or 'visible' or 'auto'
17416 if (($this->ColActive || $this->tableLevel>1) && $table['overflow']=='visible') { unset($table['overflow']); }
17417 }
17418
17419 $properties = array();
17420
17421
17422
17423 if (isset($attr['CELLPADDING'])) {
17424 $table['cell_padding'] = $attr['CELLPADDING'];
17425 }
17426 else {
17427 $table['cell_padding'] = false;
17428 }
17429
17430 if (isset($attr['BORDER']) && $attr['BORDER']=='1') { // mPDF 5.5.08
17431 $this->table_border_attr_set = 1; // mPDF 5.5.08
17432 $bord = $this->border_details('#000000 1px solid');
17433 if ($bord['s']) {
17434 $table['border'] = _BORDER_ALL;
17435 $table['border_details']['R'] = $bord;
17436 $table['border_details']['L'] = $bord;
17437 $table['border_details']['T'] = $bord;
17438 $table['border_details']['B'] = $bord;
17439 }
17440 }
17441 else {
17442 $this->table_border_attr_set = 0;
17443 }
17444
17445 if ($w) {
17446 $maxwidth = $this->blk[$this->blklvl]['inner_width'];
17447 if ($table['borders_separate']) {
17448 $tblblw = $table['margin']['L'] + $table['margin']['R'] + $table['border_details']['L']['w']/2 + $table['border_details']['R']['w']/2;
17449 }
17450 else {
17451 $tblblw = $table['margin']['L'] + $table['margin']['R'] + $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2;
17452 }
17453 if (strpos($w,'%') && $this->tableLevel == 1 && !$this->ignore_table_percents ) {
17454 // % needs to be of inner box without table margins etc.
17455 $maxwidth -= $tblblw ;
17456 $wmm = $this->ConvertSize($w,$maxwidth,$this->FontSize,false);
17457 $table['w'] = $wmm + $tblblw ;
17458 }
17459 if (strpos($w,'%') && $this->tableLevel > 1 && !$this->ignore_table_percents && $this->keep_table_proportions) {
17460 $table['wpercent'] = $w + 0; // makes 80% -> 80
17461 }
17462 if (!strpos($w,'%') && !$this->ignore_table_widths ) {
17463 $wmm = $this->ConvertSize($w,$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17464 $table['w'] = $wmm + $tblblw ;
17465 }
17466 if (!$this->keep_table_proportions) {
17467 if (isset($table['w']) && $table['w'] > $this->blk[$this->blklvl]['inner_width']) { $table['w'] = $this->blk[$this->blklvl]['inner_width']; }
17468 }
17469 }
17470
17471 if (isset($attr['AUTOSIZE']) && $this->tableLevel==1) {
17472 $this->shrink_this_table_to_fit = $attr['AUTOSIZE'];
17473 if ($this->shrink_this_table_to_fit < 1) { $this->shrink_this_table_to_fit = 1; }
17474 }
17475 if (isset($attr['ROTATE']) && $this->tableLevel==1) {
17476 $this->table_rotate = $attr['ROTATE'];
17477 }
17478
17479 //++++++++++++++++++++++++++++
17480 // keeping block together on one page
17481 // Autosize is now forced therefore keep block together disabled
17482 if ($this->keep_block_together) {
17483 $this->keep_block_together = 0;
17484 $this->printdivbuffer();
17485 $this->blk[$this->blklvl]['keep_block_together'] = 0;
17486 }
17487 if ($this->table_rotate) {
17488 $this->tbrot_Links = array();
17489 $this->tbrot_Annots = array();
17490 $this->tbrotForms = array();
17491 $this->tbrot_Reference = array();
17492 $this->tbrot_BMoutlines = array();
17493 $this->tbrot_toc = array();
17494 }
17495
17496 if ($this->kwt) {
17497 if ($this->table_rotate) { $this->table_keep_together = true; }
17498 $this->kwt = false;
17499 $this->kwt_saved = true;
17500 }
17501
17502 if ($this->tableLevel==1 && $this->useGraphs) {
17503 if (isset($attr['ID']) && $attr['ID']) { $this->currentGraphId = strtoupper($attr['ID']); }
17504 else { $this->currentGraphId = '0'; }
17505 $this->graphs[$this->currentGraphId] = array();
17506 }
17507 //++++++++++++++++++++++++++++
17508 $this->plainCell_properties = array();
17509 unset($table);
17510 break;
17511
17512 case 'THEAD':
17513 $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
17514 $this->cssmgr->tbCSSlvl++;
17515 $this->tablethead = 1;
17516 $this->tabletfoot = 0;
17517 $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
17518 if (isset($properties['FONT-WEIGHT'])) {
17519 if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD') { $this->thead_font_weight = 'B'; }
17520 else { $this->thead_font_weight = ''; }
17521 }
17522
17523 if (isset($properties['FONT-STYLE'])) {
17524 if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->thead_font_style = 'I'; }
17525 else { $this->thead_font_style = ''; }
17526 }
17527 if (isset($properties['FONT-VARIANT'])) {
17528 if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->thead_font_smCaps = 'S'; }
17529 else { $this->thead_font_smCaps = ''; }
17530 }
17531
17532 if (isset($properties['VERTICAL-ALIGN'])) {
17533 $this->thead_valign_default = $properties['VERTICAL-ALIGN'];
17534 }
17535 if (isset($properties['TEXT-ALIGN'])) {
17536 $this->thead_textalign_default = $properties['TEXT-ALIGN'];
17537 }
17538 $properties = array();
17539 break;
17540
17541 case 'TFOOT':
17542 $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
17543 $this->cssmgr->tbCSSlvl++;
17544 $this->tabletfoot = 1;
17545 $this->tablethead = 0;
17546 $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
17547 if (isset($properties['FONT-WEIGHT'])) {
17548 if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD') { $this->tfoot_font_weight = 'B'; }
17549 else { $this->tfoot_font_weight = ''; }
17550 }
17551
17552 if (isset($properties['FONT-STYLE'])) {
17553 if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->tfoot_font_style = 'I'; }
17554 else { $this->tfoot_font_style = ''; }
17555 }
17556 if (isset($properties['FONT-VARIANT'])) {
17557 if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->tfoot_font_smCaps = 'S'; }
17558 else { $this->tfoot_font_smCaps = ''; }
17559 }
17560
17561 if (isset($properties['VERTICAL-ALIGN'])) {
17562 $this->tfoot_valign_default = $properties['VERTICAL-ALIGN'];
17563 }
17564 if (isset($properties['TEXT-ALIGN'])) {
17565 $this->tfoot_textalign_default = $properties['TEXT-ALIGN'];
17566 }
17567 $properties = array();
17568 break;
17569
17570
17571 case 'TBODY':
17572 $this->tablethead = 0;
17573 $this->tabletfoot = 0;
17574 $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
17575 $this->cssmgr->tbCSSlvl++;
17576 $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
17577 break;
17578
17579
17580 case 'TR':
17581 $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
17582 $this->cssmgr->tbCSSlvl++;
17583 $this->row++;
17584 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']++;
17585 $this->col = -1;
17586 $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
17587
17588 if (!$this->simpleTables && (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['borders_separate']) || !$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['borders_separate'])) {
17589 if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-left'][$this->row] = $properties['BORDER-LEFT']; }
17590 if (isset($properties['BORDER-RIGHT']) && $properties['BORDER-RIGHT']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-right'][$this->row] = $properties['BORDER-RIGHT']; }
17591 if (isset($properties['BORDER-TOP']) && $properties['BORDER-TOP']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-top'][$this->row] = $properties['BORDER-TOP']; }
17592 if (isset($properties['BORDER-BOTTOM']) && $properties['BORDER-BOTTOM']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-bottom'][$this->row] = $properties['BORDER-BOTTOM']; }
17593 }
17594
17595 if (isset($properties['BACKGROUND-COLOR'])) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$this->row] = $properties['BACKGROUND-COLOR']; }
17596 else if (isset($attr['BGCOLOR'])) $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$this->row] = $attr['BGCOLOR'];
17597
17598/*-- BACKGROUNDS --*/
17599 if (isset($properties['BACKGROUND-GRADIENT']) && !$this->kwt && !$this->ColActive) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$this->row] = $properties['BACKGROUND-GRADIENT']; }
17600
17601 if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive) {
17602 $ret = $this->SetBackground($properties, $currblk['inner_width']);
17603 if ($ret) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$this->row] = $ret; }
17604 }
17605/*-- END BACKGROUNDS --*/
17606
17607
17608 if (isset($properties['TEXT-ROTATE'])) {
17609 $this->trow_text_rotate = $properties['TEXT-ROTATE'];
17610 }
17611 if (isset($attr['TEXT-ROTATE'])) $this->trow_text_rotate = $attr['TEXT-ROTATE'];
17612
17613 if ($this->tablethead) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_thead'][$this->row] = true; }
17614 if ($this->tabletfoot) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$this->row] = true; }
17615 $properties = array();
17616 break;
17617
17618
17619 case 'TH':
17620 case 'TD':
17621 $this->ignorefollowingspaces = true;
17622 $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
17623 $this->cssmgr->tbCSSlvl++;
17624 $this->InlineProperties = array();
17625 $this->spanlvl = 0;
17626 $this->tdbegin = true;
17627 $this->col++;
17628 while (isset($this->cell[$this->row][$this->col])) { $this->col++; }
17629
17630 //Update number column
17631 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; }
17632
17633 $table = &$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]];
17634
17635 $c = array('a' => false,
17636 'R' => false,
17637 'nowrap' => false,
17638 'bgcolor' => false,
17639 'padding' => array('L' => false,
17640 'R' => false,
17641 'T' => false,
17642 'B' => false
17643 )
17644 );
17645
17646 if ($this->simpleTables && $this->row==0 && $this->col==0){
17647 $table['simple']['border'] = false;
17648 $table['simple']['border_details']['R']['w'] = 0;
17649 $table['simple']['border_details']['L']['w'] = 0;
17650 $table['simple']['border_details']['T']['w'] = 0;
17651 $table['simple']['border_details']['B']['w'] = 0;
17652 $table['simple']['border_details']['R']['style'] = '';
17653 $table['simple']['border_details']['L']['style'] = '';
17654 $table['simple']['border_details']['T']['style'] = '';
17655 $table['simple']['border_details']['B']['style'] = '';
17656 }
17657 else if (!$this->simpleTables) {
17658 $c['border'] = false;
17659 $c['border_details']['R']['w'] = 0;
17660 $c['border_details']['L']['w'] = 0;
17661 $c['border_details']['T']['w'] = 0;
17662 $c['border_details']['B']['w'] = 0;
17663 $c['border_details']['mbw']['BL'] = 0;
17664 $c['border_details']['mbw']['BR'] = 0;
17665 $c['border_details']['mbw']['RT'] = 0;
17666 $c['border_details']['mbw']['RB'] = 0;
17667 $c['border_details']['mbw']['TL'] = 0;
17668 $c['border_details']['mbw']['TR'] = 0;
17669 $c['border_details']['mbw']['LT'] = 0;
17670 $c['border_details']['mbw']['LB'] = 0;
17671 $c['border_details']['R']['style'] = '';
17672 $c['border_details']['L']['style'] = '';
17673 $c['border_details']['T']['style'] = '';
17674 $c['border_details']['B']['style'] = '';
17675 $c['border_details']['R']['s'] = 0;
17676 $c['border_details']['L']['s'] = 0;
17677 $c['border_details']['T']['s'] = 0;
17678 $c['border_details']['B']['s'] = 0;
17679 $c['border_details']['R']['c'] = $this->ConvertColor(0);
17680 $c['border_details']['L']['c'] = $this->ConvertColor(0);
17681 $c['border_details']['T']['c'] = $this->ConvertColor(0);
17682 $c['border_details']['B']['c'] = $this->ConvertColor(0);
17683 $c['border_details']['R']['dom'] = 0;
17684 $c['border_details']['L']['dom'] = 0;
17685 $c['border_details']['T']['dom'] = 0;
17686 $c['border_details']['B']['dom'] = 0;
17687 }
17688
17689
17690 if ($table['va']) { $c['va'] = $table['va']; }
17691 if ($table['txta']) { $c['a'] = $table['txta']; }
17692 if ($this->table_border_attr_set) {
17693 if ($table['border_details']) {
17694 if (!$this->simpleTables){
17695 $c['border_details']['R'] = $table['border_details']['R'];
17696 $c['border_details']['L'] = $table['border_details']['L'];
17697 $c['border_details']['T'] = $table['border_details']['T'];
17698 $c['border_details']['B'] = $table['border_details']['B'];
17699 $c['border'] = $table['border'];
17700 $c['border_details']['L']['dom'] = 1;
17701 $c['border_details']['R']['dom'] = 1;
17702 $c['border_details']['T']['dom'] = 1;
17703 $c['border_details']['B']['dom'] = 1;
17704 }
17705 else if ($this->simpleTables && $this->row==0 && $this->col==0){
17706 $table['simple']['border_details']['R'] = $table['border_details']['R'];
17707 $table['simple']['border_details']['L'] = $table['border_details']['L'];
17708 $table['simple']['border_details']['T'] = $table['border_details']['T'];
17709 $table['simple']['border_details']['B'] = $table['border_details']['B'];
17710 $table['simple']['border'] = $table['border'];
17711 }
17712 }
17713 }
17714 // INHERITED THEAD CSS Properties
17715 if ($this->tablethead) {
17716 if ($this->thead_valign_default) $c['va'] = $align[strtolower($this->thead_valign_default)];
17717 if ($this->thead_textalign_default) $c['a'] = $align[strtolower($this->thead_textalign_default)];
17718 if ($this->thead_font_weight == 'B') { $this->SetStyle('B',true); }
17719 if ($this->thead_font_style == 'I') { $this->SetStyle('I',true); }
17720 if ($this->thead_font_smCaps == 'S') { $this->SetStyle('S',true); }
17721 }
17722
17723 // INHERITED TFOOT CSS Properties
17724 if ($this->tabletfoot) {
17725 if ($this->tfoot_valign_default) $c['va'] = $align[strtolower($this->tfoot_valign_default)];
17726 if ($this->tfoot_textalign_default) $c['a'] = $align[strtolower($this->tfoot_textalign_default)];
17727 if ($this->tfoot_font_weight == 'B') { $this->SetStyle('B',true); }
17728 if ($this->tfoot_font_style == 'I') { $this->SetStyle('I',true); }
17729 if ($this->tfoot_font_style == 'S') { $this->SetStyle('S',true); }
17730 }
17731
17732
17733 if ($this->trow_text_rotate){
17734 $c['R'] = $this->trow_text_rotate;
17735 }
17736
17737 $this->cell_border_dominance_L = 0;
17738 $this->cell_border_dominance_R = 0;
17739 $this->cell_border_dominance_T = 0;
17740 $this->cell_border_dominance_B = 0;
17741
17742 $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
17743 $properties = $this->cssmgr->array_merge_recursive_unique($this->base_table_properties, $properties);
17744
17745 if (isset($properties['FONT-KERNING']) && (strtoupper($properties['FONT-KERNING'])=='NORMAL' || strtoupper($properties['FONT-KERNING'])=='AUTO')) {
17746 $this->kerning = true;
17747 }
17748 else { $this->kerning = false; }
17749
17750 if (isset($properties['LETTER-SPACING']) && ($properties['LETTER-SPACING'] || $properties['LETTER-SPACING']==='0') && strtoupper($properties['LETTER-SPACING']) != 'NORMAL') {
17751 $this->lSpacingCSS = strtoupper($properties['LETTER-SPACING']);
17752 $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
17753 }
17754 else {
17755 $this->lSpacingCSS = '';
17756 $this->fixedlSpacing = false;
17757 }
17758 if (isset($properties['WORD-SPACING']) && strtoupper($properties['WORD-SPACING']) != 'NORMAL') {
17759 $this->wSpacingCSS = strtoupper($properties['WORD-SPACING']);
17760 $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
17761 }
17762 else {
17763 $this->minwSpacing = 0;
17764 $this->wSpacingCSS = '';
17765 }
17766 // mPDF 5.6.08
17767 if (isset($properties['HYPHENS']) && $properties['HYPHENS']) {
17768 if (strtoupper($properties['HYPHENS']) == 'NONE') { $this->textparam['hyphens'] = 2; }
17769 else if (strtoupper($properties['HYPHENS']) == 'AUTO') { $this->textparam['hyphens'] = 1; }
17770 else if (strtoupper($properties['HYPHENS']) == 'MANUAL') { $this->textparam['hyphens'] = 0; }
17771 }
17772
17773 if (isset($properties['BACKGROUND-COLOR'])) { $c['bgcolor'] = $properties['BACKGROUND-COLOR']; }
17774 else if (isset($properties['BACKGROUND'])) { $c['bgcolor'] = $properties['BACKGROUND']; }
17775 else if (isset($attr['BGCOLOR'])) $c['bgcolor'] = $attr['BGCOLOR'];
17776
17777
17778
17779/*-- BACKGROUNDS --*/
17780 if (isset($properties['BACKGROUND-GRADIENT'])) { $c['gradient'] = $properties['BACKGROUND-GRADIENT']; }
17781 else { $c['gradient'] = false; }
17782
17783 if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->keep_block_together) {
17784 $ret = $this->SetBackground($properties, $this->blk[$this->blklvl]['inner_width']);
17785 if ($ret) { $c['background-image'] = $ret; }
17786 }
17787/*-- END BACKGROUNDS --*/
17788 if (isset($properties['VERTICAL-ALIGN'])) { $c['va']=$align[strtolower($properties['VERTICAL-ALIGN'])]; }
17789 else if (isset($attr['VALIGN'])) $c['va'] = $align[strtolower($attr['VALIGN'])];
17790
17791
17792 // mPDF 5.6.13
17793 if (isset($properties['TEXT-ALIGN']) && $properties['TEXT-ALIGN']) {
17794 if (substr($properties['TEXT-ALIGN'],0,1)=='D') { $c['a'] = $properties['TEXT-ALIGN']; }
17795 else { $c['a'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
17796 }
17797 // mPDF 5.6.13
17798 if (isset($attr['ALIGN']) && $attr['ALIGN']) {
17799 if (strtolower($attr['ALIGN']) == 'char') {
17800 if (isset($attr['CHAR']) && $attr['CHAR']) {
17801 $char = html_entity_decode($attr['CHAR']);
17802 $char = strcode2utf($char);
17803 $d = array_search($char,$this->decimal_align);
17804 if ($d !== false) { $c['a'] = $d.'R'; }
17805 }
17806 else { $c['a'] = 'DPR'; }
17807 }
17808 else { $c['a'] = $align[strtolower($attr['ALIGN'])]; }
17809 }
17810
17811 if (!$c['a']) {
17812 if (isset($table['direction']) && $table['direction'] == 'rtl' ) { $c['a'] = 'R'; }
17813 else { $c['a'] = 'L'; }
17814 }
17815
17816
17817 if (isset($properties['TEXT-ROTATE']) && ($properties['TEXT-ROTATE'] || $properties['TEXT-ROTATE']==="0")){
17818 $c['R'] = $properties['TEXT-ROTATE'];
17819 }
17820 if (isset($properties['BORDER'])) {
17821 $bord = $this->border_details($properties['BORDER']);
17822 if ($bord['s']) {
17823 if (!$this->simpleTables){
17824 $c['border'] = _BORDER_ALL;
17825 $c['border_details']['R'] = $bord;
17826 $c['border_details']['L'] = $bord;
17827 $c['border_details']['T'] = $bord;
17828 $c['border_details']['B'] = $bord;
17829 $c['border_details']['L']['dom'] = $this->cell_border_dominance_L;
17830 $c['border_details']['R']['dom'] = $this->cell_border_dominance_R;
17831 $c['border_details']['T']['dom'] = $this->cell_border_dominance_T;
17832 $c['border_details']['B']['dom'] = $this->cell_border_dominance_B;
17833 }
17834 else if ($this->simpleTables && $this->row==0 && $this->col==0){
17835 $table['simple']['border'] = _BORDER_ALL;
17836 $table['simple']['border_details']['R'] = $bord;
17837 $table['simple']['border_details']['L'] = $bord;
17838 $table['simple']['border_details']['T'] = $bord;
17839 $table['simple']['border_details']['B'] = $bord;
17840 }
17841 }
17842 }
17843 if (!$this->simpleTables){
17844 if (isset($properties['BORDER-RIGHT']) && $properties['BORDER-RIGHT']) {
17845 $c['border_details']['R'] = $this->border_details($properties['BORDER-RIGHT']);
17846 $this->setBorder($c['border'], _BORDER_RIGHT, $c['border_details']['R']['s']);
17847 $c['border_details']['R']['dom'] = $this->cell_border_dominance_R;
17848 }
17849 if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) {
17850 $c['border_details']['L'] = $this->border_details($properties['BORDER-LEFT']);
17851 $this->setBorder($c['border'], _BORDER_LEFT, $c['border_details']['L']['s']);
17852 $c['border_details']['L']['dom'] = $this->cell_border_dominance_L;
17853 }
17854 if (isset($properties['BORDER-BOTTOM']) && $properties['BORDER-BOTTOM']) {
17855 $c['border_details']['B'] = $this->border_details($properties['BORDER-BOTTOM']);
17856 $this->setBorder($c['border'], _BORDER_BOTTOM, $c['border_details']['B']['s']);
17857 $c['border_details']['B']['dom'] = $this->cell_border_dominance_B;
17858 }
17859 if (isset($properties['BORDER-TOP']) && $properties['BORDER-TOP']) {
17860 $c['border_details']['T'] = $this->border_details($properties['BORDER-TOP']);
17861 $this->setBorder($c['border'], _BORDER_TOP, $c['border_details']['T']['s']);
17862 $c['border_details']['T']['dom'] = $this->cell_border_dominance_T;
17863 }
17864 }
17865 else if ($this->simpleTables && $this->row==0 && $this->col==0){
17866 if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) {
17867 $bord = $this->border_details($properties['BORDER-LEFT']);
17868 if ($bord['s']) { $table['simple']['border'] = _BORDER_ALL; }
17869 else { $table['simple']['border'] = 0; }
17870 $table['simple']['border_details']['R'] = $bord;
17871 $table['simple']['border_details']['L'] = $bord;
17872 $table['simple']['border_details']['T'] = $bord;
17873 $table['simple']['border_details']['B'] = $bord;
17874 }
17875 }
17876
17877 if ($this->simpleTables && $this->row==0 && $this->col==0 && !$table['borders_separate'] && $table['simple']['border'] ){
17878 $table['border_details'] = $table['simple']['border_details'];
17879 $table['border'] = $table['simple']['border'];
17880 }
17881
17882 // Border set on TR (if collapsed only)
17883 if (!$table['borders_separate'] && !$this->simpleTables && isset($table['trborder-left'][$this->row])) {
17884 if ($this->col==0) {
17885 $left = $this->border_details($table['trborder-left'][$this->row]);
17886 $c['border_details']['L'] = $left;
17887 $this->setBorder($c['border'], _BORDER_LEFT, $c['border_details']['L']['s']);
17888 }
17889 $c['border_details']['B'] = $this->border_details($table['trborder-bottom'][$this->row]);
17890 $this->setBorder($c['border'], _BORDER_BOTTOM, $c['border_details']['B']['s']);
17891 $c['border_details']['T'] = $this->border_details($table['trborder-top'][$this->row]);
17892 $this->setBorder($c['border'], _BORDER_TOP, $c['border_details']['T']['s']);
17893 }
17894
17895 if ($this->packTableData && !$this->simpleTables) {
17896 $c['borderbin'] = $this->_packCellBorder($c);
17897 unset($c['border']);
17898 unset($c['border_details']);
17899 }
17900
17901 if (isset($properties['PADDING-LEFT'])) {
17902 $c['padding']['L'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17903 }
17904 if (isset($properties['PADDING-RIGHT'])) {
17905 $c['padding']['R'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17906 }
17907 if (isset($properties['PADDING-BOTTOM'])) {
17908 $c['padding']['B'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17909 }
17910 if (isset($properties['PADDING-TOP'])) {
17911 $c['padding']['T'] = $this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17912 }
17913
17914 $w = '';
17915 if (isset($properties['WIDTH'])) { $w = $properties['WIDTH']; }
17916 else if (isset($attr['WIDTH'])) { $w = $attr['WIDTH']; }
17917 if ($w) {
17918 if (strpos($w,'%') && !$this->ignore_table_percents ) { $c['wpercent'] = $w + 0; } // makes 80% -> 80
17919 else if (!strpos($w,'%') && !$this->ignore_table_widths ) { $c['w'] = $this->ConvertSize($w,$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
17920 }
17921
17922 if (isset($properties['HEIGHT']) && !strpos($properties['HEIGHT'],'%')) { $c['h'] = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
17923 else if (isset($attr['HEIGHT']) && !strpos($attr['HEIGHT'],'%')) $c['h'] = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
17924
17925
17926 if (isset($properties['COLOR'])) {
17927 $cor = $this->ConvertColor($properties['COLOR']);
17928 if ($cor) {
17929 $this->colorarray = $cor;
17930 $this->SetTColor($cor);
17931 }
17932 }
17933 if (isset($properties['FONT-FAMILY'])) {
17934 $this->SetFont($properties['FONT-FAMILY'],'',0,false);
17935 }
17936 if (isset($properties['FONT-SIZE'])) {
17937 $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK);
17938 if ($mmsize) {
17939 $this->SetFontSize($mmsize*(_MPDFK),false);
17940 }
17941 }
17942 $c['dfs'] = $this->FontSize; // Default Font size
17943 if (isset($properties['FONT-WEIGHT'])) {
17944 if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD') { $this->SetStyle('B',true); }
17945 }
17946 if (isset($properties['FONT-STYLE'])) {
17947 if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->SetStyle('I',true); }
17948 }
17949 if (isset($properties['FONT-VARIANT'])) {
17950 if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->SetStyle('S',true); }
17951 }
17952 if (isset($properties['TEXT-DECORATION'])) {
17953 if (strtoupper($properties['TEXT-DECORATION']) == 'LINE-THROUGH') { $this->strike = true; }
17954 else if (strtoupper($properties['TEXT-DECORATION']) == 'UNDERLINE') { $this->SetStyle('U',true); }
17955 }
17956 if (isset($properties['TEXT-SHADOW'])) {
17957 $ts = $this->cssmgr->setCSStextshadow($properties['TEXT-SHADOW']);
17958 if ($ts) { $this->textshadow = $ts; }
17959 }
17960 if (isset($properties['TEXT-TRANSFORM'])) {
17961 if (strtoupper($properties['TEXT-TRANSFORM']) == 'CAPITALIZE') { $this->capitalize = true; }
17962 else if (strtoupper($properties['TEXT-TRANSFORM']) == 'UPPERCASE') { $this->toupper = true; }
17963 else if (strtoupper($properties['TEXT-TRANSFORM']) == 'LOWERCASE') { $this->tolower = true; }
17964 }
17965 if (isset($properties['WHITE-SPACE'])) {
17966 if (strtoupper($properties['WHITE-SPACE']) == 'NOWRAP') { $c['nowrap']= 1; }
17967 }
17968 $properties = array();
17969
17970 if (isset($attr['TEXT-ROTATE'])) {
17971 $c['R'] = $attr['TEXT-ROTATE'];
17972 }
17973 if (isset($attr['NOWRAP']) && $attr['NOWRAP']) $c['nowrap']= 1;
17974
17975 $this->cell[$this->row][$this->col] = $c;
17976 unset($c);
17977 $this->cell[$this->row][$this->col]['s'] = 0 ;
17978
17979 $cs = $rs = 1;
17980 if (isset($attr['COLSPAN']) && $attr['COLSPAN']>1) $cs = $this->cell[$this->row][$this->col]['colspan'] = $attr['COLSPAN'];
17981 if ($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] < $this->col+$cs) {
17982 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] = $this->col+$cs;
17983 } // following code moved outside if...
17984 for($l=$this->col; $l < $this->col+$cs ;$l++) {
17985 if ($l-$this->col) $this->cell[$this->row][$l] = 0;
17986 }
17987 if (isset($attr['ROWSPAN']) && $attr['ROWSPAN']>1) $rs = $this->cell[$this->row][$this->col]['rowspan'] = $attr['ROWSPAN'];
17988 for ($k=$this->row ; $k < $this->row+$rs ;$k++) {
17989 for($l=$this->col; $l < $this->col+$cs ;$l++) {
17990 if ($k-$this->row || $l-$this->col) $this->cell[$k][$l] = 0;
17991 }
17992 }
17993 unset($table);
17994 break;
17995/*-- END TABLES --*/
17996
17997
17998/*-- LISTS --*/
17999 // *********** LISTS ********************
18000 case 'OL':
18001 case 'UL':
18002 $this->listjustfinished = false;
18003
18004 if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins) { $lastbottommargin = $this->lastblockbottommargin; }
18005 else { $lastbottommargin = 0; }
18006 $this->lastblockbottommargin = 0;
18007 $this->blockjustfinished=false;
18008
18009 $this->linebreakjustfinished=false;
18010 $this->lastoptionaltag = ''; // Save current HTML specified optional endtag
18011 $this->cssmgr->listCSSlvl++;
18012 if((!$this->tableLevel) && ($this->listlvl == 0)) {
18013 $blockstate = 0;
18014 //if ($this->lastblocklevelchange == 1) { $blockstate = -1; } // Top margins/padding only
18015 //else if ($this->lastblocklevelchange < 1) { $blockstate = 0; } // NO margins/padding
18016 // called from block after new div e.g. <div> ... <ol> ... Outputs block top margin/border and padding
18017 if (count($this->textbuffer) == 0 && $this->lastblocklevelchange == 1 && !$this->tableLevel && !$this->kwt) {
18018 $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,1,true, $this->blk[$this->blklvl]['direction']);
18019 $this->finishFlowingBlock(true); // true = END of flowing block
18020 }
18021 else if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer,$blockstate); }
18022 $this->textbuffer=array();
18023 $this->lastblocklevelchange = -1;
18024 }
18025 // ol and ul types are mixed here
18026 if ($this->listlvl == 0) {
18027 $this->list_indent = array();
18028 $this->list_align = array();
18029 $this->list_lineheight = array();
18030 $this->InlineProperties['LIST'] = array();
18031 $this->InlineProperties['LISTITEM'] = array();
18032 }
18033
18034/*-- TABLES --*/
18035 // A simple list for inside a table
18036 if($this->tableLevel) {
18037 $this->list_indent[$this->listlvl] = 0; // mm default indent for each level
18038 if ($tag == 'OL') $this->listtype = '1';
18039 else if ($tag == 'UL') $this->listtype = 'disc';
18040 if ($this->listlvl > 0) {
18041 $this->listlist[$this->listlvl]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
18042 }
18043 $this->listlvl++;
18044 // mPDF 5.6.15
18045 if (isset($attr['START'])) { $this->listnum = intval($attr['START']); }
18046 else { $this->listnum = 0; }
18047 $this->listlist[$this->listlvl] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum);
18048 break;
18049 }
18050/*-- END TABLES --*/
18051
18052
18053 if (($this->PDFA || $this->PDFX) && $tag == 'UL') {
18054 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 '-')"; }
18055 }
18056
18057 if ($this->cssmgr->listCSSlvl==1) {
18058 $properties = $this->cssmgr->MergeCSS('TOPLIST',$tag,$attr);
18059 }
18060 else {
18061 $properties = $this->cssmgr->MergeCSS('LIST',$tag,$attr);
18062 }
18063 if (!empty($properties)) $this->setCSS($properties,'LIST');
18064 // List-type
18065
18066 $this->listtype = '';
18067 if (isset($properties['LIST-STYLE-TYPE'])) {
18068 $this->listtype = $this->_getListStyle($properties['LIST-STYLE-TYPE']);
18069 }
18070 else if (isset($properties['LIST-STYLE'])) {
18071 $this->listtype = $this->_getListStyle($properties['LIST-STYLE']);
18072 }
18073 else if (isset($attr['TYPE']) && $attr['TYPE']) { $this->listtype = $attr['TYPE']; }
18074 if (!$this->listtype) {
18075 if ($tag == 'OL') $this->listtype = '1';
18076 if ($tag == 'UL') {
18077 if ($this->listlvl % 3 == 0) $this->listtype = 'disc';
18078 elseif ($this->listlvl % 3 == 1) $this->listtype = 'circle';
18079 else $this->listtype = 'square';
18080 }
18081 }
18082 if ($this->listlvl == 0) {
18083 $this->inherit_lineheight = 0;
18084 $this->listlvl++; // first depth level
18085 // mPDF 5.6.15
18086 if (isset($attr['START'])) { $this->listnum = intval($attr['START']); }
18087 else { $this->listnum = 0; }
18088 $this->listDir = (isset($this->blk[$this->blklvl]['direction']) ? $this->blk[$this->blklvl]['direction'] : null);
18089 $occur = $this->listoccur[$this->listlvl] = 1;
18090 $this->listlist[$this->listlvl][1] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum);
18091 }
18092 else {
18093 if (!empty($this->textbuffer))
18094 {
18095 $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
18096 $this->listnum++;
18097 }
18098 // Save current lineheight to inherit
18099 $this->textbuffer = array();
18100 $occur = $this->listoccur[$this->listlvl];
18101 $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
18102 $this->listlvl++;
18103 // mPDF 5.6.15
18104 if (isset($attr['START'])) { $this->listnum = intval($attr['START']); }
18105 else { $this->listnum = 0; }
18106
18107
18108 if (!isset($this->listoccur[$this->listlvl]) || $this->listoccur[$this->listlvl] == 0) $this->listoccur[$this->listlvl] = 1;
18109 else $this->listoccur[$this->listlvl]++;
18110 $occur = $this->listoccur[$this->listlvl];
18111 $this->listlist[$this->listlvl][$occur] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum);
18112 }
18113
18114
18115 // TOP LEVEL ONLY
18116 if ($this->listlvl == 1) {
18117 if (isset($properties['MARGIN-TOP'])) {
18118 if ($lastbottommargin) {
18119 $tmp = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
18120 if ($tmp > $lastbottommargin) { $properties['MARGIN-TOP'] -= $lastbottommargin; }
18121 else { $properties['MARGIN-TOP'] = 0; }
18122 }
18123 $this->DivLn($this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false),$this->blklvl,true,1); // collapsible
18124 }
18125 if (isset($properties['MARGIN-BOTTOM'])) {
18126 $this->list_margin_bottom = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
18127 }
18128
18129 if (isset($this->blk[$this->blklvl]['line_height'])) {
18130 $this->list_lineheight[$this->listlvl][$occur] = $this->blk[$this->blklvl]['line_height'];
18131 }
18132
18133 if (isset($properties['DIRECTION']) && $properties['DIRECTION']) { $this->listDir = strtolower($properties['DIRECTION']); }
18134 else if (isset($attr['DIR']) && $attr['DIR']) { $this->listDir = strtolower($attr['DIR']); }
18135
18136 }
18137 $this->list_indent[$this->listlvl][$occur] = 5; // mm default indent for each level
18138 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); }
18139
18140 if (isset($properties['TEXT-ALIGN'])) {
18141 $this->list_align[$this->listlvl][$occur] = $align[strtolower($properties['TEXT-ALIGN'])];
18142 }
18143
18144
18145 if (isset($properties['LINE-HEIGHT'])) {
18146 $this->list_lineheight[$this->listlvl][$occur] = $this->fixLineheight($properties['LINE-HEIGHT']);
18147 }
18148 else if ($this->listlvl>1 && isset($this->list_lineheight[($this->listlvl - 1)][1])) {
18149 $this->list_lineheight[$this->listlvl][$occur] = end($this->list_lineheight[($this->listlvl - 1)]);
18150 }
18151 if (!isset($this->list_lineheight[$this->listlvl][$occur]) || !$this->list_lineheight[$this->listlvl][$occur]) {
18152 $this->list_lineheight[$this->listlvl][$occur] = $this->normalLineheight;
18153 }
18154
18155 $this->InlineProperties['LIST'][$this->listlvl][$occur] = $this->saveInlineProperties();
18156 $properties = array();
18157 break;
18158
18159
18160
18161 case 'LI':
18162 // Start Block
18163 $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
18164 $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
18165/*-- TABLES --*/
18166 // A simple list for inside a table
18167 if($this->tableLevel) {
18168 $this->blockjustfinished=false;
18169
18170 // If already something in the Cell
18171 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 ) {
18172 $this->_saveCellTextBuffer("\n");
18173 if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
18174 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
18175 }
18176 elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
18177 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
18178 }
18179 $this->cell[$this->row][$this->col]['s'] = 0 ;
18180 }
18181 if ($this->listlvl == 0) { //in case of malformed HTML code. Example:(...)</p><li>Content</li><p>Paragraph1</p>(...)
18182 $this->listlvl++; // first depth level
18183 $this->listnum = 0; // reset
18184 $this->listlist[$this->listlvl] = array('TYPE'=>'disc','MAXNUM'=>$this->listnum);
18185 }
18186
18187 $this->listnum++;
18188 switch($this->listlist[$this->listlvl]['TYPE']) {
18189 case 'A':
18190 $blt = $this->dec2alpha($this->listnum,true).$this->list_number_suffix;
18191 break;
18192 case 'a':
18193 $blt = $this->dec2alpha($this->listnum,false).$this->list_number_suffix;
18194 break;
18195 case 'I':
18196 $blt = $this->dec2roman($this->listnum,true).$this->list_number_suffix;
18197 break;
18198 case 'i':
18199 $blt = $this->dec2roman($this->listnum,false).$this->list_number_suffix;
18200 break;
18201 case '1':
18202 $blt = $this->listnum.$this->list_number_suffix;
18203 break;
18204 default:
18205 if ($this->listlvl % 3 == 1 && $this->_charDefined($this->CurrentFont['cw'],8226)) { $blt = "\xe2\x80\xa2"; } // &#8226;
18206 else if ($this->listlvl % 3 == 2 && $this->_charDefined($this->CurrentFont['cw'],9900)) { $blt = "\xe2\x9a\xac"; } // &#9900;
18207 else if ($this->listlvl % 3 == 0 && $this->_charDefined($this->CurrentFont['cw'],9642)) { $blt = "\xe2\x96\xaa"; } // &#9642;
18208 else { $blt = '-'; }
18209 break;
18210 }
18211
18212 // change to &nbsp; spaces
18213 if ($this->usingCoreFont) {
18214 $ls = str_repeat(chr(160).chr(160),($this->listlvl-1)*2) . $blt . ' ';
18215 }
18216 else {
18217 $ls = str_repeat("\xc2\xa0\xc2\xa0",($this->listlvl-1)*2) . $blt . ' ';
18218 }
18219
18220 $this->_saveCellTextBuffer($ls, $this->HREF);
18221 $this->cell[$this->row][$this->col]['s'] += $this->GetStringWidth($ls);
18222 break;
18223 }
18224/*-- END TABLES --*/
18225 //Observation: </LI> is ignored
18226 if ($this->listlvl == 0) { //in case of malformed HTML code. Example:(...)</p><li>Content</li><p>Paragraph1</p>(...)
18227 //First of all, skip a line
18228 $this->listlvl++; // first depth level
18229 $this->listnum = 0; // reset
18230 $this->listoccur[$this->listlvl] = 1;
18231 $this->listlist[$this->listlvl][1] = array('TYPE'=>'disc','MAXNUM'=>$this->listnum);
18232 }
18233 if ($this->listnum == 0) {
18234 $this->listnum++;
18235 $this->textbuffer = array();
18236 }
18237 else {
18238 if (!empty($this->textbuffer)) {
18239 if (!$this->listjustfinished) {
18240 $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
18241 $this->listnum++;
18242 }
18243 else {
18244 $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype, true);
18245 }
18246 }
18247 $this->textbuffer = array();
18248 }
18249 $this->listjustfinished = false;
18250
18251 $this->cssmgr->listCSSlvl++;
18252 $properties = $this->cssmgr->MergeCSS('LIST',$tag,$attr);
18253 if (!empty($properties)) $this->setCSS($properties,'LIST');
18254 $this->InlineProperties['LISTITEM'][$this->listlvl][$this->listoccur[$this->listlvl]][$this->listnum] = $this->saveInlineProperties();
18255
18256 // List-type
18257 if (isset($properties['LIST-STYLE-TYPE'])) {
18258 $this->listitemtype = $this->_getListStyle($properties['LIST-STYLE-TYPE']);
18259 }
18260 else if (isset($properties['LIST-STYLE'])) {
18261 $this->listitemtype = $this->_getListStyle($properties['LIST-STYLE']);
18262 }
18263 else if (isset($attr['TYPE']) && $attr['TYPE']) { $this->listitemtype = $attr['TYPE']; }
18264 else $this->listitemtype = '';
18265 break;
18266/*-- END LISTS --*/
18267
18268 }//end of switch
18269}
18270
18271/*-- LISTS --*/
18272
18273function _getListStyle($ls) {
18274 if (stristr($ls,'decimal')) { return '1'; }
18275 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)) {
18276 return strtolower(trim($m[1]));
18277 }
18278 else if (stristr($ls,'lower-roman')) { return 'i'; }
18279 else if (stristr($ls,'upper-roman')) { return 'I'; }
18280 else if (stristr($ls,'lower-latin')|| stristr($ls,'lower-alpha')) { return 'a'; }
18281 else if (stristr($ls,'upper-latin') || stristr($ls,'upper-alpha')) { return 'A'; }
18282 else if (stristr($ls,'none')) { return 'none'; }
18283 else if (preg_match('/U\+([a-fA-F0-9]+)/i',$ls)) { return $ls; }
18284 else { return ''; }
18285}
18286/*-- END LISTS --*/
18287
18288
18289
18290function CloseTag($tag)
18291{
18292 $this->ignorefollowingspaces = false; //Eliminate exceeding left-side spaces
18293 //Closing tag
18294 if($tag=='OPTION') { $this->selectoption['ACTIVE'] = false; $this->lastoptionaltag = ''; }
18295
18296 if($tag=='TTS' or $tag=='TTA' or $tag=='TTZ') {
18297 if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
18298 unset($this->InlineProperties[$tag]);
18299 $ltag = strtolower($tag);
18300 $this->$ltag = false;
18301 }
18302
18303
18304 if($tag=='FONT' || $tag=='SPAN' || $tag=='CODE' || $tag=='KBD' || $tag=='SAMP' || $tag=='TT' || $tag=='VAR'
18305 || $tag=='INS' || $tag=='STRONG' || $tag=='CITE' || $tag=='SUB' || $tag=='SUP' || $tag=='S' || $tag=='STRIKE' || $tag=='DEL'
18306 || $tag=='Q' || $tag=='EM' || $tag=='B' || $tag=='I' || $tag=='U' | $tag=='SMALL' || $tag=='BIG' || $tag=='ACRONYM'
18307 || $tag=='MARK' || $tag=='TIME' || $tag=='PROGRESS' || $tag=='METER'
18308 ) { // mPDF 5.5.09
18309
18310 if ($tag == 'SPAN') {
18311 if (isset($this->InlineProperties['SPAN'][$this->spanlvl]) && $this->InlineProperties['SPAN'][$this->spanlvl]) { $this->restoreInlineProperties($this->InlineProperties['SPAN'][$this->spanlvl]); }
18312 unset($this->InlineProperties['SPAN'][$this->spanlvl]);
18313 if (isset($this->InlineAnnots['SPAN'][$this->spanlvl]) && $this->InlineAnnots['SPAN'][$this->spanlvl]) { $annot = $this->InlineAnnots['SPAN'][$this->spanlvl]; } // *ANNOTATIONS*
18314 unset($this->InlineAnnots['SPAN'][$this->spanlvl]); // *ANNOTATIONS*
18315 $this->spanlvl--;
18316 }
18317 else {
18318 if (isset($this->InlineProperties[$tag]) && $this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
18319 unset($this->InlineProperties[$tag]);
18320 if (isset($this->InlineAnnots[$tag]) && $this->InlineAnnots[$tag]) { $annot = $this->InlineAnnots[$tag]; } // *ANNOTATIONS*
18321 unset($this->InlineAnnots[$tag]); // *ANNOTATIONS*
18322 }
18323
18324/*-- ANNOTATIONS --*/
18325 if (isset($annot)) {
18326 if($this->tableLevel) { // *TABLES*
18327 $this->cell[$this->row][$this->col]['textbuffer'][] = array($annot); // *TABLES*
18328 } // *TABLES*
18329 else { // *TABLES*
18330 $this->textbuffer[] = array($annot);
18331 } // *TABLES*
18332 }
18333/*-- END ANNOTATIONS --*/
18334 }
18335
18336 if($tag=='METER' || $tag=='PROGRESS') {
18337 $this->inMeter = false; // mPDF 5.5.09
18338 }
18339
18340
18341 if($tag=='A') {
18342 $this->HREF='';
18343 if (isset($this->InlineProperties['A'])) { $this->restoreInlineProperties($this->InlineProperties['A']); }
18344 unset($this->InlineProperties['A']);
18345 }
18346
18347 if($tag=='LEGEND') { // mPDF 5.4.18
18348 if (count($this->textbuffer) && !$this->tableLevel) {
18349 $leg = $this->textbuffer[(count($this->textbuffer)-1)];
18350 unset($this->textbuffer[(count($this->textbuffer)-1)]);
18351 $this->textbuffer = array_values($this->textbuffer);
18352 $this->blk[$this->blklvl]['border_legend'] = $leg;
18353 $this->blk[$this->blklvl]['margin_top'] += ($leg[11]/2)/_MPDFK;
18354 $this->blk[$this->blklvl]['padding_top'] += ($leg[11]/2)/_MPDFK;
18355 }
18356 if (isset($this->InlineProperties['LEGEND'])) { $this->restoreInlineProperties($this->InlineProperties['LEGEND']); }
18357 unset($this->InlineProperties['LEGEND']);
18358 $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
18359 }
18360
18361
18362
18363/*-- FORMS --*/
18364 // *********** FORM ELEMENTS ********************
18365
18366 if($tag=='TEXTAREA') {
18367 $this->specialcontent = '';
18368 if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
18369 unset($this->InlineProperties[$tag]);
18370 }
18371
18372
18373 if($tag=='SELECT') {
18374 $this->lastoptionaltag = '';
18375 $texto = '';
18376 if (isset($this->selectoption['SELECTED'])) { $texto = $this->selectoption['SELECTED']; }
18377
18378 if ($this->useActiveForms) { $w = $this->selectoption['MAXWIDTH']; }
18379 else { $w = $this->GetStringWidth($texto); }
18380 if ($w == 0) { $w = 5; }
18381 $objattr['type'] = 'select';
18382 $objattr['text'] = $texto;
18383 if (isset($this->selectoption['NAME'])) { $objattr['fieldname'] = $this->selectoption['NAME']; }
18384 if (isset($this->selectoption['READONLY'])) { $objattr['readonly'] = true; }
18385 if (isset($this->selectoption['REQUIRED'])) { $objattr['required'] = true; }
18386 if (isset($this->selectoption['SPELLCHECK'])) { $objattr['spellcheck'] = true; }
18387 if (isset($this->selectoption['EDITABLE'])) { $objattr['editable'] = true; }
18388 if (isset($this->selectoption['ONCHANGE'])) { $objattr['onChange'] = $this->selectoption['ONCHANGE']; }
18389 if (isset($this->selectoption['ITEMS'])) { $objattr['items'] = $this->selectoption['ITEMS']; }
18390 if (isset($this->selectoption['MULTIPLE'])) { $objattr['multiple'] = $this->selectoption['MULTIPLE']; }
18391 if (isset($this->selectoption['DISABLED'])) { $objattr['disabled'] = $this->selectoption['DISABLED']; }
18392 if (isset($this->selectoption['TITLE'])) { $objattr['title'] = $this->selectoption['TITLE']; }
18393 if (isset($this->selectoption['COLOR'])) { $objattr['color'] = $this->selectoption['COLOR']; }
18394 if (isset($this->selectoption['SIZE'])) { $objattr['size'] = $this->selectoption['SIZE']; }
18395 if (isset($objattr['size']) && $objattr['size']>1) { $rows=$objattr['size']; } else { $rows = 1; }
18396
18397 $objattr['fontfamily'] = $this->FontFamily;
18398 $objattr['fontsize'] = $this->FontSizePt;
18399
18400 $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);
18401 $objattr['height'] = ($this->FontSize*$rows) + ($this->form->form_element_spacing['select']['outer']['v']*2)+($this->form->form_element_spacing['select']['inner']['v']*2);
18402 $e = "\xbb\xa4\xactype=select,objattr=".serialize($objattr)."\xbb\xa4\xac";
18403
18404 // Clear properties - tidy up
18405 $properties = array();
18406
18407 // Output it to buffers
18408 if ($this->tableLevel) { // *TABLES*
18409 $this->_saveCellTextBuffer($e, $this->HREF);
18410 $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; // *TABLES*
18411 } // *TABLES*
18412 else { // *TABLES*
18413 $this->_saveTextBuffer($e, $this->HREF);
18414 } // *TABLES*
18415
18416 $this->selectoption = array();
18417 $this->specialcontent = '';
18418
18419 if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
18420 unset($this->InlineProperties[$tag]);
18421
18422 }
18423/*-- END FORMS --*/
18424
18425
18426 // *********** BLOCKS ********************
18427 // mPDF 5.4.18
18428 if($tag=='P' || $tag=='DIV' || $tag=='H1' || $tag=='H2' || $tag=='H3' || $tag=='H4' || $tag=='H5' || $tag=='H6' || $tag=='PRE'
18429 || $tag=='FORM' || $tag=='ADDRESS' || $tag=='BLOCKQUOTE' || $tag=='CENTER' || $tag=='DT' || $tag=='DD' || $tag=='DL'
18430 || $tag=='CAPTION' || $tag=='FIELDSET'
18431 || $tag=='ARTICLE' || $tag=='ASIDE' || $tag=='FIGURE' || $tag=='FIGCAPTION' || $tag=='FOOTER' || $tag=='HEADER' || $tag=='HGROUP'
18432 || $tag=='NAV' || $tag=='SECTION' || $tag=='DETAILS' || $tag=='SUMMARY'
18433 ) { // mPDF 5.5.09 // mPDF 5.5.22
18434
18435 $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
18436 $this->blockjustfinished=true;
18437
18438 $this->lastblockbottommargin = $this->blk[$this->blklvl]['margin_bottom'];
18439/*-- LISTS --*/
18440 if ($this->listlvl>0) { return; }
18441/*-- END LISTS --*/
18442
18443 // mPDF 5.6.34
18444 if (preg_match('/^H\d/',$tag) && !$this->tableLevel && !$this->writingToC) { // mPDF 5.6.38
18445 if (isset($this->h2toc[$tag]) || isset($this->h2bookmarks[$tag])) {
18446 $content = '';
18447 if (count($this->textbuffer)==1) { $content = $this->textbuffer[0][0]; }
18448 else {
18449 for ($i=0;$i<count($this->textbuffer);$i++) {
18450 if (substr($this->textbuffer[$i][0],0,3) != "\xbb\xa4\xac") { //inline object
18451 $content .= $this->textbuffer[$i][0];
18452 }
18453 }
18454 }
18455/*-- TOC --*/
18456 if (isset($this->h2toc[$tag])) {
18457 $objattr = array();
18458 $objattr['type'] = 'toc';
18459 $objattr['toclevel'] = $this->h2toc[$tag];
18460 $objattr['CONTENT'] = htmlspecialchars($content); // mPDF 5.6.37
18461 $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac";
18462 array_unshift($this->textbuffer,array($e));
18463 }
18464/*-- END TOC --*/
18465/*-- BOOKMARKS --*/
18466 if (isset($this->h2bookmarks[$tag])) {
18467 $objattr = array();
18468 $objattr['type'] = 'bookmark';
18469 $objattr['bklevel'] = $this->h2bookmarks[$tag];
18470 $objattr['CONTENT'] = $content;
18471 $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac";
18472 array_unshift($this->textbuffer,array($e));
18473 }
18474/*-- END BOOKMARKS --*/
18475 }
18476 }
18477
18478/*-- TABLES --*/
18479 if($this->tableLevel) {
18480 if ($this->linebreakjustfinished) { $this->blockjustfinished=false; }
18481 if (isset($this->InlineProperties['BLOCKINTABLE'])) {
18482 if ($this->InlineProperties['BLOCKINTABLE']) { $this->restoreInlineProperties($this->InlineProperties['BLOCKINTABLE']); }
18483 unset($this->InlineProperties['BLOCKINTABLE']);
18484 }
18485 if($tag=='PRE') { $this->ispre=false; }
18486 return;
18487 }
18488/*-- END TABLES --*/
18489 $this->lastoptionaltag = '';
18490 $this->divbegin=false;
18491
18492 $this->linebreakjustfinished=false;
18493
18494 $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
18495
18496/*-- CSS-FLOAT --*/
18497 // If float contained in a float, need to extend bottom to allow for it
18498 $currpos = $this->page*1000 + $this->y;
18499 if (isset($this->blk[$this->blklvl]['float_endpos']) && $this->blk[$this->blklvl]['float_endpos'] > $currpos) {
18500 $old_page = $this->page;
18501 $new_page = intval($this->blk[$this->blklvl]['float_endpos'] /1000);
18502 if ($old_page != $new_page) {
18503 $s = $this->PrintPageBackgrounds();
18504 // Writes after the marker so not overwritten later by page background etc.
18505 $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
18506 $this->pageBackgrounds = array();
18507 $this->page = $new_page;
18508 $this->ResetMargins();
18509 $this->Reset();
18510 $this->pageoutput[$this->page] = array();
18511 }
18512 $this->y = (($this->blk[$this->blklvl]['float_endpos'] *1000) % 1000000)/1000; // mod changes operands to integers before processing
18513 }
18514/*-- END CSS-FLOAT --*/
18515
18516
18517 //Print content
18518 if ($this->lastblocklevelchange == 1) { $blockstate = 3; } // Top & bottom margins/padding
18519 else if ($this->lastblocklevelchange == -1) { $blockstate = 2; } // Bottom margins/padding only
18520 else { $blockstate = 0; }
18521 // called from after e.g. </table> </div> </div> ... Outputs block margin/border and padding
18522 if (count($this->textbuffer) && $this->textbuffer[count($this->textbuffer)-1]) {
18523 if (substr($this->textbuffer[count($this->textbuffer)-1][0],0,3) != "\xbb\xa4\xac") { // not special content
18524 if ($this->usingCoreFont) {
18525 $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/[ ]+$/', '', $this->textbuffer[count($this->textbuffer)-1][0]);
18526 }
18527 else {
18528 $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/[ ]+$/u', '', $this->textbuffer[count($this->textbuffer)-1][0]); }
18529 }
18530 }
18531
18532 if (count($this->textbuffer) == 0 && $this->lastblocklevelchange != 0) {
18533 //$this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,2,true, $this->blk[$this->blklvl]['direction']);
18534 $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,$blockstate,true, $this->blk[$this->blklvl]['direction']);
18535 $this->finishFlowingBlock(true); // true = END of flowing block
18536 $this->PaintDivBB('',$blockstate);
18537 }
18538 else {
18539 $this->printbuffer($this->textbuffer,$blockstate);
18540 }
18541
18542
18543 $this->textbuffer=array();
18544
18545 if ($this->blk[$this->blklvl]['keep_block_together']) {
18546 $this->printdivbuffer();
18547 }
18548
18549 if ($this->kwt) {
18550 $this->kwt_height = $this->y - $this->kwt_y0;
18551 }
18552
18553/*-- CSS-IMAGE-FLOAT --*/
18554 $this->printfloatbuffer();
18555/*-- END CSS-IMAGE-FLOAT --*/
18556
18557 if($tag=='PRE') { $this->ispre=false; }
18558
18559/*-- CSS-FLOAT --*/
18560 if ($this->blk[$this->blklvl]['float'] == 'R') {
18561 // If width not set, here would need to adjust and output buffer
18562 $s = $this->PrintPageBackgrounds();
18563 // Writes after the marker so not overwritten later by page background etc.
18564 $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
18565 $this->pageBackgrounds = array();
18566 $this->Reset();
18567 $this->pageoutput[$this->page] = array();
18568
18569 for($i=($this->blklvl-1); $i >= 0; $i--) {
18570 if (isset($this->blk[$i]['float_endpos'])) { $this->blk[$i]['float_endpos'] = max($this->blk[$i]['float_endpos'], ($this->page*1000 + $this->y)); }
18571 else { $this->blk[$i]['float_endpos'] = $this->page*1000 + $this->y; }
18572 }
18573
18574 $this->floatDivs[] = array(
18575 'side'=>'R',
18576 'startpage'=>$this->blk[$this->blklvl]['startpage'] ,
18577 'y0'=>$this->blk[$this->blklvl]['float_start_y'] ,
18578 'startpos'=> ($this->blk[$this->blklvl]['startpage']*1000 + $this->blk[$this->blklvl]['float_start_y']),
18579 'endpage'=>$this->page ,
18580 'y1'=>$this->y ,
18581 'endpos'=> ($this->page*1000 + $this->y),
18582 'w'=> $this->blk[$this->blklvl]['float_width'],
18583 'blklvl'=>$this->blklvl,
18584 'blockContext' => $this->blk[$this->blklvl-1]['blockContext']
18585 );
18586
18587 $this->y = $this->blk[$this->blklvl]['float_start_y'] ;
18588 $this->page = $this->blk[$this->blklvl]['startpage'] ;
18589 $this->ResetMargins();
18590 $this->pageoutput[$this->page] = array();
18591 }
18592 if ($this->blk[$this->blklvl]['float'] == 'L') {
18593 // If width not set, here would need to adjust and output buffer
18594 $s = $this->PrintPageBackgrounds();
18595 // Writes after the marker so not overwritten later by page background etc.
18596 $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
18597 $this->pageBackgrounds = array();
18598 $this->Reset();
18599 $this->pageoutput[$this->page] = array();
18600
18601 for($i=($this->blklvl-1); $i >= 0; $i--) {
18602 if (isset($this->blk[$i]['float_endpos'])) { $this->blk[$i]['float_endpos'] = max($this->blk[$i]['float_endpos'], ($this->page*1000 + $this->y)); }
18603 else { $this->blk[$i]['float_endpos'] = $this->page*1000 + $this->y; }
18604 }
18605
18606 $this->floatDivs[] = array(
18607 'side'=>'L',
18608 'startpage'=>$this->blk[$this->blklvl]['startpage'] ,
18609 'y0'=>$this->blk[$this->blklvl]['float_start_y'] ,
18610 'startpos'=> ($this->blk[$this->blklvl]['startpage']*1000 + $this->blk[$this->blklvl]['float_start_y']),
18611 'endpage'=>$this->page ,
18612 'y1'=>$this->y ,
18613 'endpos'=> ($this->page*1000 + $this->y),
18614 'w'=> $this->blk[$this->blklvl]['float_width'],
18615 'blklvl'=>$this->blklvl,
18616 'blockContext' => $this->blk[$this->blklvl-1]['blockContext']
18617 );
18618
18619 $this->y = $this->blk[$this->blklvl]['float_start_y'] ;
18620 $this->page = $this->blk[$this->blklvl]['startpage'] ;
18621 $this->ResetMargins();
18622 $this->pageoutput[$this->page] = array();
18623 }
18624/*-- END CSS-FLOAT --*/
18625
18626 if (isset($this->blk[$this->blklvl]['visibility']) && $this->blk[$this->blklvl]['visibility']!='visible') {
18627 $this->SetVisibility('visible');
18628 }
18629
18630 if (isset($this->blk[$this->blklvl]['page_break_after'])) { $page_break_after = $this->blk[$this->blklvl]['page_break_after']; }
18631 else { $page_break_after = ''; }
18632
18633 //Reset values
18634 $this->Reset();
18635
18636 // mPDF 5.6.01 - LAYERS
18637 if (isset($this->blk[$this->blklvl]['z-index']) && $this->blk[$this->blklvl]['z-index'] > 0) {
18638 $this->EndLayer();
18639 }
18640
18641 if ($this->blklvl > 0) { // ==0 SHOULDN'T HAPPEN - NOT XHTML
18642 if ($this->blk[$this->blklvl]['tag'] == $tag) {
18643 unset($this->blk[$this->blklvl]);
18644 $this->blklvl--;
18645 }
18646 //else { echo $tag; exit; } // debug - forces error if incorrectly nested html tags
18647 }
18648
18649 $this->lastblocklevelchange = -1 ;
18650 // Reset Inline-type properties
18651 if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']); }
18652
18653 $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
18654
18655 if ($page_break_after) {
18656 $save_blklvl = $this->blklvl;
18657 $save_blk = $this->blk;
18658 $save_silp = $this->saveInlineProperties();
18659 $save_spanlvl = $this->spanlvl;
18660 $save_ilp = $this->InlineProperties;
18661 if ($this->blklvl>1) {
18662 // Close any open block tags
18663 for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
18664 // Output any text left in buffer
18665 if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); }
18666 }
18667/*-- COLUMNS --*/
18668 $save_cols = false;
18669 if ($this->ColActive) {
18670 $save_cols = true;
18671 $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off
18672 $this->SetColumns(0);
18673 }
18674/*-- END COLUMNS --*/
18675 if ($page_break_after == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
18676 else if ($page_break_after == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
18677 else { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
18678 if (!$this->restoreBlockPagebreaks) {
18679 $this->blklvl = 0;
18680 $this->lastblocklevelchange = 0;
18681 $this->blk = array();
18682 $this->initialiseBlock($this->blk[0]);
18683 $this->blk[0]['width'] =& $this->pgwidth;
18684 $this->blk[0]['inner_width'] =& $this->pgwidth;
18685 $this->blk[0]['blockContext'] = $this->blockContext;
18686 $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
18687 $this->setCSS($properties,'','BODY');
18688 $this->blklvl++;
18689 $currblk =& $this->blk[$this->blklvl];
18690 $prevblk =& $this->blk[$this->blklvl-1];
18691
18692 $this->initialiseBlock($currblk);
18693 $currblk['tag'] = $tag;
18694 $currblk['attr'] = $attr;
18695
18696 $this->Reset();
18697 $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
18698 }
18699/*-- COLUMNS --*/
18700 if ($save_cols) {
18701 // Restore columns
18702 $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
18703 }
18704/*-- END COLUMNS --*/
18705 if ($this->restoreBlockPagebreaks && !$this->tableLevel && !$this->listlvl) {
18706 $this->blk = $save_blk;
18707 // Re-open block tags
18708 $t = $this->blk[0]['tag'];
18709 $a = $this->blk[0]['attr'];
18710 $this->blklvl = 0;
18711 for ($b=0; $b<=$save_blklvl;$b++) {
18712 $tc = $t;
18713 $ac = $a;
18714 $t = $this->blk[$b+1]['tag'];
18715 $a = $this->blk[$b+1]['attr'];
18716 unset($this->blk[$b+1]);
18717 $this->OpenTag($tc,$ac);
18718 }
18719 $this->spanlvl = $save_spanlvl;
18720 $this->InlineProperties = $save_ilp;
18721 $this->restoreInlineProperties($save_silp);
18722 }
18723 }
18724
18725 }
18726
18727
18728/*-- TABLES --*/
18729
18730 if($tag=='TH') $this->SetStyle('B',false);
18731
18732 if(($tag=='TH' or $tag=='TD') && $this->tableLevel) {
18733 $this->lastoptionaltag = 'TR';
18734 unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
18735 $this->cssmgr->tbCSSlvl--;
18736 if (!$this->tdbegin) { return; }
18737 $this->tdbegin = false;
18738 // Added for correct calculation of cell column width - otherwise misses the last line if not end </p> etc.
18739 if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
18740 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;"); }
18741 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
18742 }
18743 elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
18744 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
18745 }
18746
18747 // Remove last <br> if at end of cell
18748 if (isset($this->cell[$this->row][$this->col]['textbuffer'])) { $ntb = count($this->cell[$this->row][$this->col]['textbuffer']); }
18749 else { $ntb = 0; }
18750 if ($ntb>1 && $this->cell[$this->row][$this->col]['textbuffer'][$ntb-1][0] == "\n") {
18751 unset($this->cell[$this->row][$this->col]['textbuffer'][$ntb-1]);
18752 }
18753
18754 if ($this->cacheTables) {
18755 $clen = $this->_cacheCell($this->cell[$this->row][$this->col], $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache']);
18756 $this->cell[$this->row][$this->col] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['ptr'];
18757 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['ptr'] += $clen;
18758 }
18759
18760 if ($this->tablethead) {
18761 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_thead'][$this->row] = true;
18762 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)); }
18763 }
18764 if ($this->tabletfoot) {
18765 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$this->row] = true;
18766 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'] )); }
18767 }
18768 $this->Reset();
18769 }
18770
18771 if($tag=='TR' && $this->tableLevel) {
18772 // If Border set on TR - Update right border
18773 if (isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-left'][$this->row])) {
18774 if ($this->cacheTables) {
18775 $c = $this->_uncacheCell($this->cell[$this->row][$this->col], $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache'], null);
18776 }
18777 else { $c =& $this->cell[$this->row][$this->col]; }
18778 if ($c) {
18779 if ($this->packTableData) {
18780 $cell = $this->_unpackCellBorder($c['borderbin'] );
18781 }
18782 else { $cell = $c; }
18783 $cell['border_details']['R'] = $this->border_details($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-right'][$this->row]);
18784 $this->setBorder($cell['border'], _BORDER_RIGHT, $cell['border_details']['R']['s']);
18785 if ($this->packTableData) {
18786 $c['borderbin'] = $this->_packCellBorder($cell);
18787 unset($c['border']);
18788 unset($c['border_details']);
18789 }
18790 else { $c = $cell; }
18791 }
18792 if ($this->cacheTables) {
18793 $fh = fopen($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache'], "r+b");
18794 $this->_cacheUpdateBorder($c, $fh, $this->cell[$this->row][$this->col]);
18795 fclose($fh);
18796 }
18797 }
18798 $this->lastoptionaltag = '';
18799 unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
18800 $this->cssmgr->tbCSSlvl--;
18801 $this->trow_text_rotate = '';
18802 $this->tabletheadjustfinished = false;
18803 }
18804
18805 if($tag=='TBODY') {
18806 $this->lastoptionaltag = '';
18807 unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
18808 $this->cssmgr->tbCSSlvl--;
18809 }
18810
18811 if($tag=='THEAD') {
18812 $this->lastoptionaltag = '';
18813 unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
18814 $this->cssmgr->tbCSSlvl--;
18815 $this->tablethead = 0;
18816 $this->tabletheadjustfinished = true;
18817 $this->ResetStyles();
18818 $this->thead_font_weight = '';
18819 $this->thead_font_style = '';
18820 $this->thead_font_smCaps = '';
18821
18822 $this->thead_valign_default = '';
18823 $this->thead_textalign_default = '';
18824 }
18825
18826 if($tag=='TFOOT') {
18827 $this->lastoptionaltag = '';
18828 unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
18829 $this->cssmgr->tbCSSlvl--;
18830 $this->tabletfoot = 0;
18831 $this->ResetStyles();
18832 $this->tfoot_font_weight = '';
18833 $this->tfoot_font_style = '';
18834 $this->tfoot_font_smCaps = '';
18835
18836 $this->tfoot_valign_default = '';
18837 $this->tfoot_textalign_default = '';
18838 }
18839
18840 if($tag=='TABLE') { // TABLE-END (
18841 if ($this->progressBar) { $this->UpdateProgressBar(1,'','TABLE'); } // *PROGRESS-BAR*
18842 if ($this->progressBar) { $this->UpdateProgressBar(7,0,''); } // *PROGRESS-BAR*
18843 $this->lastoptionaltag = '';
18844 unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
18845 $this->cssmgr->tbCSSlvl--;
18846 $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
18847 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = $this->cell;
18848 $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));
18849 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['hr'] = array_pad(array(),$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr'],0);
18850
18851 // Move table footer <tfoot> row to end of table
18852 if (isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot']) && count($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'])) {
18853 $tfrows = array();
18854 foreach($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'] AS $r=>$val) {
18855 if ($val) { $tfrows[] = $r; }
18856 }
18857 $temp = array();
18858 $temptf = array();
18859 foreach($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] AS $k=>$row) {
18860 if (in_array($k,$tfrows)) {
18861 $temptf[] = $row;
18862 }
18863 else {
18864 $temp[] = $row;
18865 }
18866 }
18867 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'] = array();
18868 for($i=count($temp) ; $i<(count($temp)+count($temptf)); $i++) {
18869 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$i] = true;
18870 }
18871 // Update nestedpos row references
18872 if (count($this->table[($this->tableLevel+1)])) {
18873 foreach($this->table[($this->tableLevel+1)] AS $nid=>$nested) {
18874 $this->table[($this->tableLevel+1)][$nid]['nestedpos'][0] -= count($temptf);
18875 }
18876 }
18877 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = array_merge($temp, $temptf);
18878
18879 // Update other arays set on row number
18880 // [trbackground-images] [trgradients]
18881 $temptrbgi = array();
18882 $temptrbgg = array();
18883 $temptrbgc = array();
18884 $temptrbgc[-1] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][-1];
18885 for($k=0; $k<$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']; $k++) {
18886 if (!in_array($k,$tfrows)) {
18887 $temptrbgi[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$k];
18888 $temptrbgg[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$k];
18889 $temptrbgc[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$k];
18890 }
18891 }
18892 for($k=0; $k<$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']; $k++) {
18893 if (in_array($k,$tfrows)) {
18894 $temptrbgi[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$k];
18895 $temptrbgg[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$k];
18896 $temptrbgc[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$k];
18897 }
18898 }
18899 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'] = $temptrbgi;
18900 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'] = $temptrbgg;
18901 $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'] = $temptrbgc ;
18902 // Should Update all other arays set on row number, but cell properties have been set so not needed
18903 // [bgcolor] [trborder-left] [trborder-right] [trborder-top] [trborder-bottom]
18904 }
18905
18906 if ($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['direction']=='rtl') {
18907 $this->_reverseTableDir($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]);
18908 }
18909
18910 // Fix Borders *********************************************
18911 $this->_fixTableBorders($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]);
18912
18913 if ($this->progressBar) { $this->UpdateProgressBar(7,10,' '); } // *PROGRESS-BAR*
18914
18915 if ($this->ColActive) { $this->table_rotate = 0; } // *COLUMNS*
18916 if ($this->table_rotate <> 0) {
18917 $this->tablebuffer = '';
18918 // Max width for rotated table
18919 $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 1);
18920 $this->tbrot_maxh = $this->blk[$this->blklvl]['inner_width'] ; // Max width for rotated table
18921 $this->tbrot_align = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['a'] ;
18922 }
18923 $this->shrin_k = 1;
18924
18925 if ($this->shrink_tables_to_fit < 1) { $this->shrink_tables_to_fit = 1; }
18926 if (!$this->shrink_this_table_to_fit) { $this->shrink_this_table_to_fit = $this->shrink_tables_to_fit; }
18927
18928 if ($this->tableLevel>1) {
18929 // deal with nested table
18930
18931 $this->_tableColumnWidth($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]],true);
18932
18933 $tmiw = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['miw'];
18934 $tmaw = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['maw'];
18935 $tl = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['tl'];
18936
18937 // Go down to lower table level
18938 $this->tableLevel--;
18939
18940 // Reset lower level table
18941 $this->base_table_properties = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['baseProperties'];
18942 $this->cell = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'];
18943 // mPDF 5.4.10
18944 if (isset($this->cell['PARENTCELL'])) {
18945 if ($this->cell['PARENTCELL']) { $this->restoreInlineProperties($this->cell['PARENTCELL']); }
18946 unset($this->cell['PARENTCELL']);
18947 }
18948 $this->row = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currrow'];
18949 $this->col = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currcol'];
18950 $objattr = array();
18951 $objattr['type'] = 'nestedtable';
18952 $objattr['nestedcontent'] = $this->tbctr[($this->tableLevel+1)];
18953 $objattr['table'] = $this->tbctr[$this->tableLevel];
18954 $objattr['row'] = $this->row;
18955 $objattr['col'] = $this->col;
18956 $objattr['level'] = $this->tableLevel;
18957 $e = "\xbb\xa4\xactype=nestedtable,objattr=".serialize($objattr)."\xbb\xa4\xac";
18958 $this->_saveCellTextBuffer($e);
18959 $this->cell[$this->row][$this->col]['s'] += $tl ;
18960 if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
18961 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
18962 }
18963 elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
18964 $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
18965 }
18966 $this->cell[$this->row][$this->col]['s'] = 0;// reset
18967 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 ; }
18968 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 ; }
18969 $this->tdbegin = true;
18970 $this->nestedtablejustfinished = true;
18971 $this->ignorefollowingspaces = true;
18972 return;
18973 }
18974 $this->cMarginL = 0;
18975 $this->cMarginR = 0;
18976 $this->cMarginT = 0;
18977 $this->cMarginB = 0;
18978 $this->cellPaddingL = 0;
18979 $this->cellPaddingR = 0;
18980 $this->cellPaddingT = 0;
18981 $this->cellPaddingB = 0;
18982
18983 if (isset($this->table[1][1]['overflow']) && $this->table[1][1]['overflow']=='visible') {
18984 if ($this->kwt || $this->table_rotate || $this->table_keep_together || $this->ColActive) {
18985 $this->kwt = false;
18986 $this->table_rotate = 0;
18987 $this->table_keep_together = false;
18988 //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");
18989 }
18990 $this->_tableColumnWidth($this->table[1][1],true);
18991 $this->_tableWidth($this->table[1][1]);
18992 }
18993 else {
18994 if (!$this->kwt_saved) { $this->kwt_height = 0; }
18995
18996 list($check,$tablemiw) = $this->_tableColumnWidth($this->table[1][1],true);
18997 $save_table = $this->table;
18998 if ($this->cacheTables) { $this->_backupCacheFiles(); }
18999 $reset_to_minimum_width = false;
19000 $added_page = false;
19001
19002 if ($check > 1) {
19003 if ($check > $this->shrink_this_table_to_fit && $this->table_rotate) {
19004 if ($this->y != $this->tMargin) {
19005 $this->AddPage($this->CurOrientation);
19006 $this->kwt_moved = true;
19007 }
19008 $added_page = true;
19009 $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
19010 //$check = $tablemiw/$this->tbrot_maxw; // undo any shrink
19011 $check = 1; // undo any shrink
19012 }
19013 $reset_to_minimum_width = true;
19014 }
19015
19016 if ($reset_to_minimum_width) {
19017
19018 $this->shrin_k = $check;
19019
19020 $this->default_font_size /= $this->shrin_k;
19021 $this->SetFontSize($this->default_font_size, false );
19022
19023 $this->shrinkTable($this->table[1][1],$this->shrin_k);
19024
19025 $this->_tableColumnWidth($this->table[1][1],false); // repeat
19026
19027 // Starting at $this->innermostTableLevel
19028 // Shrink table values - and redo columnWidth
19029 for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
19030 for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
19031 $this->shrinkTable($this->table[$lvl][$nid],$this->shrin_k);
19032 $this->_tableColumnWidth($this->table[$lvl][$nid],false);
19033 }
19034 }
19035 }
19036
19037 // Set table cell widths for top level table
19038 // Use $shrin_k to resize but don't change again
19039 $this->SetLineHeight('',$this->table_lineheight);
19040
19041 // Top level table
19042 $this->_tableWidth($this->table[1][1]);
19043
19044 }
19045
19046
19047 // Now work through any nested tables setting child table[w'] = parent cell['w']
19048 // Now do nested tables _tableWidth
19049 for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
19050 for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
19051 // HERE set child table width = cell width
19052
19053 list($parentrow, $parentcol, $parentnid) = $this->table[$lvl][$nid]['nestedpos'];
19054
19055 if ($this->cacheTables) {
19056 $c = $this->_uncacheCell($this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol], $this->table[($lvl-1)][$parentnid]['cache'], null);
19057 }
19058 else
19059 $c =& $this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol];
19060
19061 if (isset($c['colspan']) && $c['colspan']> 1) {
19062 $parentwidth = 0;
19063 for($cs=0;$cs<$c['colspan'] ; $cs++) {
19064 $parentwidth += $this->table[($lvl-1)][$parentnid]['wc'][$parentcol+$cs];
19065 }
19066 }
19067 else { $parentwidth = $this->table[($lvl-1)][$parentnid]['wc'][$parentcol]; }
19068
19069
19070 //$parentwidth -= ALLOW FOR PADDING ETC.in parent cell
19071 if (!$this->simpleTables){
19072 if ($this->packTableData) {
19073 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
19074 }
19075 else {
19076 $br = $c['border_details']['R']['w'];
19077 $bl = $c['border_details']['L']['w'];
19078 }
19079 if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
19080 $parentwidth -= $br + $bl
19081 + $c['padding']['L']
19082 + $c['padding']['R']
19083 + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
19084 }
19085 else {
19086 $parentwidth -= $br/2 + $bl/2
19087 + $c['padding']['L']
19088 + $c['padding']['R'];
19089 }
19090 }
19091 else if ($this->simpleTables){
19092 if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
19093 $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']
19094 + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']
19095 + $c['padding']['L']
19096 + $c['padding']['R']
19097 + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
19098 }
19099 else {
19100 $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']/2
19101 + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']/2
19102 + $c['padding']['L']
19103 + $c['padding']['R'];
19104 }
19105 }
19106 if (isset($this->table[$lvl][$nid]['wpercent']) && $this->table[$lvl][$nid]['wpercent'] && $lvl>1) {
19107 $this->table[$lvl][$nid]['w'] = $parentwidth;
19108 }
19109 else if ($parentwidth > $this->table[$lvl][$nid]['maw']) {
19110 $this->table[$lvl][$nid]['w'] = $this->table[$lvl][$nid]['maw'];
19111 }
19112 else {
19113 $this->table[$lvl][$nid]['w'] = $parentwidth;
19114 }
19115 unset($c);
19116 $this->_tableWidth($this->table[$lvl][$nid]);
19117 }
19118 }
19119
19120 // Starting at $this->innermostTableLevel
19121 // Cascade back up nested tables: setting heights back up the tree
19122 for($lvl=$this->innermostTableLevel;$lvl>0;$lvl--) {
19123 for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
19124 list($tableheight,$maxrowheight,$fullpage,$remainingpage, $maxfirstrowheight) = $this->_tableHeight($this->table[$lvl][$nid]); }
19125 }
19126 if ($this->progressBar) { $this->UpdateProgressBar(7,20,' '); } // *PROGRESS-BAR*
19127 if ($this->table[1][1]['overflow']=='visible') {
19128 if ($maxrowheight > $fullpage) { die("mPDF Warning: A Table row is greater than available height. You cannot use CSS overflow:visible"); }
19129 if ($maxfirstrowheight > $remainingpage) { $this->AddPage($this->CurOrientation); }
19130 $r = 0; $c = 0; $p = 0; $y = 0;
19131 while (!$finished) {
19132 list($finished,$r,$c,$p,$y,$y0) = $this->_tableWrite($this->table[1][1],true,$r,$c,$p,$y);
19133 if (!$finished) {
19134 $this->AddPage($this->CurOrientation);
19135 // If printed something on first spread, set same y
19136 if ($r==0 && $y0 > -1) { $this->y = $y0; }
19137 }
19138 }
19139 }
19140 else {
19141 $recalculate = 1;
19142 $forcerecalc = false;
19143 // RESIZING ALGORITHM
19144 if ($maxrowheight > $fullpage) {
19145 $recalculate = $this->tbsqrt($maxrowheight / $fullpage, 1);
19146 $forcerecalc = true;
19147 }
19148 else if ($this->table_rotate) { // NB $remainingpage == $fullpage == the width of the page
19149 if ($tableheight > $remainingpage) {
19150 // If can fit on remainder of page whilst respecting autsize value..
19151 if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, 1)) <= $this->shrink_this_table_to_fit) {
19152 $recalculate = $this->tbsqrt($tableheight / $remainingpage, 1);
19153 }
19154 else if (!$added_page) {
19155 if ($this->y != $this->tMargin) {
19156 $this->AddPage($this->CurOrientation);
19157 $this->kwt_moved = true;
19158 }
19159 $added_page = true;
19160 $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
19161 // 0.001 to force it to recalculate
19162 $recalculate = (1 / $this->shrin_k) + 0.001; // undo any shrink
19163 }
19164 }
19165 else { $recalculate = 1; }
19166 }
19167 else if ($this->table_keep_together || ($this->table[1][1]['nr']==1 && !$this->writingHTMLfooter)) {
19168 if ($tableheight > $fullpage) {
19169 if (($this->shrin_k * $this->tbsqrt($tableheight / $fullpage, 1)) <= $this->shrink_this_table_to_fit) {
19170 $recalculate = $this->tbsqrt($tableheight / $fullpage, 1);
19171 }
19172 else if ($this->tableMinSizePriority) {
19173 $this->table_keep_together = false;
19174 $recalculate = 1.001;
19175 }
19176 else {
19177 if ($this->y != $this->tMargin) { // mPDF 5.1
19178 $this->AddPage($this->CurOrientation);
19179 $this->kwt_moved = true;
19180 }
19181 $added_page = true;
19182 $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
19183 $recalculate = $this->tbsqrt($tableheight / $fullpage, 1);
19184 }
19185 }
19186 else if ($tableheight > $remainingpage) {
19187 // If can fit on remainder of page whilst respecting autsize value..
19188 if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, 1)) <= $this->shrink_this_table_to_fit) {
19189 $recalculate = $this->tbsqrt($tableheight / $remainingpage, 1);
19190 }
19191 else {
19192 if ($this->y != $this->tMargin) {
19193 $this->AddPage($this->CurOrientation);
19194 $this->kwt_moved = true;
19195 }
19196 $added_page = true;
19197 $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
19198 $recalculate = 1.001;
19199 }
19200 }
19201 else { $recalculate = 1; }
19202 }
19203 else { $recalculate = 1; }
19204
19205 if ($recalculate > $this->shrink_this_table_to_fit && !$forcerecalc) { $recalculate = $this->shrink_this_table_to_fit; }
19206
19207 $iteration = 1;
19208
19209 // RECALCULATE
19210 while($recalculate <> 1) {
19211 $this->shrin_k1 = $recalculate ;
19212 $this->shrin_k *= $recalculate ;
19213 $this->default_font_size /= ($this->shrin_k1) ;
19214 $this->SetFontSize($this->default_font_size, false );
19215 $this->SetLineHeight('',$this->table_lineheight);
19216 $this->table = $save_table;
19217 if ($this->cacheTables) { $this->_restoreCacheFiles(); }
19218 if ($this->shrin_k <> 1) { $this->shrinkTable($this->table[1][1],$this->shrin_k); }
19219 $this->_tableColumnWidth($this->table[1][1],false); // repeat
19220
19221 // Starting at $this->innermostTableLevel
19222 // Shrink table values - and redo columnWidth
19223 for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
19224 for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
19225 if ($this->shrin_k <> 1) { $this->shrinkTable($this->table[$lvl][$nid],$this->shrin_k); }
19226 $this->_tableColumnWidth($this->table[$lvl][$nid],false);
19227 }
19228 }
19229 // Set table cell widths for top level table
19230
19231 // Top level table
19232 $this->_tableWidth($this->table[1][1]);
19233
19234 // Now work through any nested tables setting child table[w'] = parent cell['w']
19235 // Now do nested tables _tableWidth
19236 for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
19237 for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
19238 // HERE set child table width = cell width
19239
19240 list($parentrow, $parentcol, $parentnid) = $this->table[$lvl][$nid]['nestedpos'];
19241 if ($this->cacheTables) {
19242 $c = $this->_uncacheCell($this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol], $this->table[($lvl-1)][$parentnid]['cache'], null);
19243 }
19244 else
19245 $c =& $this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol];
19246
19247 if (isset($c['colspan']) && $c['colspan']> 1) {
19248 $parentwidth = 0;
19249 for($cs=0;$cs<$c['colspan'] ; $cs++) {
19250 $parentwidth += $this->table[($lvl-1)][$parentnid]['wc'][$parentcol+$cs];
19251 }
19252 }
19253 else { $parentwidth = $this->table[($lvl-1)][$parentnid]['wc'][$parentcol]; }
19254
19255 //$parentwidth -= ALLOW FOR PADDING ETC.in parent cell
19256 if (!$this->simpleTables){
19257 if ($this->packTableData) {
19258 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
19259 }
19260 else {
19261 $br = $c['border_details']['R']['w'];
19262 $bl = $c['border_details']['L']['w'];
19263 }
19264 if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
19265 $parentwidth -= $br + $bl
19266 + $c['padding']['L']
19267 + $c['padding']['R']
19268 + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
19269 }
19270 else {
19271 $parentwidth -= $br/2 + $bl/2
19272 + $c['padding']['L']
19273 + $c['padding']['R'];
19274 }
19275 }
19276 else if ($this->simpleTables){
19277 if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
19278 $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']
19279 + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']
19280 + $c['padding']['L']
19281 + $c['padding']['R']
19282 + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
19283 }
19284 else {
19285 $parentwidth -= ($this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']
19286 + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']) /2
19287 + $c['padding']['L']
19288 + $c['padding']['R'];
19289 }
19290 }
19291 if (isset($this->table[$lvl][$nid]['wpercent']) && $this->table[$lvl][$nid]['wpercent'] && $lvl>1) {
19292 $this->table[$lvl][$nid]['w'] = $parentwidth;
19293 }
19294 else if ($parentwidth > $this->table[$lvl][$nid]['maw']) {
19295 $this->table[$lvl][$nid]['w'] = $this->table[$lvl][$nid]['maw'] ;
19296 }
19297 else {
19298 $this->table[$lvl][$nid]['w'] = $parentwidth;
19299 }
19300 unset($c);
19301 $this->_tableWidth($this->table[$lvl][$nid]);
19302 }
19303 }
19304
19305 // Starting at $this->innermostTableLevel
19306 // Cascade back up nested tables: setting heights back up the tree
19307 for($lvl=$this->innermostTableLevel;$lvl>0;$lvl--) {
19308 for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
19309 list($tableheight,$maxrowheight,$fullpage,$remainingpage, $maxfirstrowheight) = $this->_tableHeight($this->table[$lvl][$nid]); }
19310 }
19311
19312 // RESIZING ALGORITHM
19313
19314 if ($maxrowheight > $fullpage) { $recalculate = $this->tbsqrt($maxrowheight / $fullpage, $iteration); $iteration++; }
19315 else if ($this->table_rotate && $tableheight > $remainingpage && !$added_page) {
19316 // If can fit on remainder of page whilst respecting autosize value..
19317 if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, $iteration)) <= $this->shrink_this_table_to_fit) {
19318 $recalculate = $this->tbsqrt($tableheight / $remainingpage, $iteration); $iteration++;
19319 }
19320 else {
19321 if (!$added_page) {
19322 $this->AddPage($this->CurOrientation);
19323 $added_page = true;
19324 $this->kwt_moved = true;
19325 $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
19326 }
19327 // 0.001 to force it to recalculate
19328 $recalculate = (1 / $this->shrin_k) + 0.001; // undo any shrink
19329 }
19330 }
19331 else if ($this->table_keep_together || ($this->table[1][1]['nr']==1 && !$this->writingHTMLfooter)) {
19332 if ($tableheight > $fullpage) {
19333 if (($this->shrin_k * $this->tbsqrt($tableheight / $fullpage, $iteration)) <= $this->shrink_this_table_to_fit) {
19334 $recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++;
19335 }
19336 else if ($this->tableMinSizePriority) {
19337 $this->table_keep_together = false;
19338 $recalculate = (1 / $this->shrin_k) + 0.001;
19339 }
19340 else {
19341 if (!$added_page && $this->y != $this->tMargin) {
19342 $this->AddPage($this->CurOrientation);
19343 $added_page = true;
19344 $this->kwt_moved = true;
19345 $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
19346 }
19347 $recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++;
19348 }
19349 }
19350 else if ($tableheight > $remainingpage) {
19351 // If can fit on remainder of page whilst respecting autosize value..
19352 if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, $iteration)) <= $this->shrink_this_table_to_fit) {
19353 $recalculate = $this->tbsqrt($tableheight / $remainingpage, $iteration); $iteration++;
19354 }
19355 else {
19356 if (!$added_page) {
19357 $this->AddPage($this->CurOrientation);
19358 $added_page = true;
19359 $this->kwt_moved = true;
19360 $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
19361 }
19362
19363 //$recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++;
19364 $recalculate = (1 / $this->shrin_k) + 0.001; // undo any shrink
19365 }
19366 }
19367 else { $recalculate = 1; }
19368 }
19369 else { $recalculate = 1; }
19370 }
19371
19372
19373 if ($maxfirstrowheight > $remainingpage && !$added_page && !$this->table_rotate && !$this->ColActive && !$this->table_keep_together && !$this->writingHTMLheader && !$this->writingHTMLfooter) {
19374 $this->AddPage($this->CurOrientation);
19375 $this->kwt_moved = true;
19376 }
19377
19378 // keep-with-table: if page has advanced, print out buffer now, else done in fn. _Tablewrite()
19379 if ($this->kwt_saved && $this->kwt_moved) {
19380 $this->printkwtbuffer();
19381 $this->kwt_moved = false;
19382 $this->kwt_saved = false;
19383 }
19384
19385 if ($this->progressBar) { $this->UpdateProgressBar(7,30,' '); } // *PROGRESS-BAR*
19386 // Recursively writes all tables starting at top level
19387 $this->_tableWrite($this->table[1][1]);
19388
19389 if ($this->table_rotate && $this->tablebuffer) {
19390 $this->PageBreakTrigger=$this->h-$this->bMargin;
19391 $save_tr = $this->table_rotate;
19392 $save_y = $this->y;
19393 $this->table_rotate = 0;
19394 $this->y = $this->tbrot_y0;
19395 $h = $this->tbrot_w;
19396 $this->DivLn($h,$this->blklvl,true);
19397
19398 $this->table_rotate = $save_tr;
19399 $this->y = $save_y;
19400
19401 $this->printtablebuffer();
19402 }
19403 $this->table_rotate = 0;
19404 }
19405
19406
19407 $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
19408
19409 $this->maxPosR = max($this->maxPosR , ($this->x + $this->table[1][1]['w']));
19410
19411 $this->blockjustfinished=true;
19412 $this->lastblockbottommargin = $this->table[1][1]['margin']['B'];
19413 //Reset values
19414
19415 if (isset($this->table[1][1]['page_break_after'])) { $page_break_after = $this->table[1][1]['page_break_after']; }
19416 else { $page_break_after = ''; }
19417
19418 // Keep-with-table
19419 $this->kwt = false;
19420 $this->kwt_y0 = 0;
19421 $this->kwt_x0 = 0;
19422 $this->kwt_height = 0;
19423 $this->kwt_buffer = array();
19424 $this->kwt_Links = array();
19425 $this->kwt_Annots = array();
19426 $this->kwt_moved = false;
19427 $this->kwt_saved = false;
19428
19429 $this->kwt_Reference = array();
19430 $this->kwt_BMoutlines = array();
19431 $this->kwt_toc = array();
19432
19433 $this->shrin_k = 1;
19434 $this->shrink_this_table_to_fit = 0;
19435
19436 unset($this->table);
19437 $this->table=array(); //array
19438 $this->tableLevel=0;
19439 $this->tbctr=array();
19440 $this->innermostTableLevel=0;
19441 $this->cssmgr->tbCSSlvl = 0;
19442 $this->cssmgr->tablecascadeCSS = array();
19443
19444 unset($this->cell);
19445 $this->cell=array(); //array
19446
19447 $this->col=-1; //int
19448 $this->row=-1; //int
19449 $this->Reset();
19450
19451 $this->cellPaddingL = 0;
19452 $this->cellPaddingT = 0;
19453 $this->cellPaddingR = 0;
19454 $this->cellPaddingB = 0;
19455 $this->cMarginL = 0;
19456 $this->cMarginT = 0;
19457 $this->cMarginR = 0;
19458 $this->cMarginB = 0;
19459 $this->default_font_size = $this->original_default_font_size;
19460 $this->default_font = $this->original_default_font;
19461 $this->SetFontSize($this->default_font_size, false);
19462 $this->SetFont($this->default_font,'',0,false);
19463 $this->SetLineHeight();
19464 if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']);}
19465 if ($this->progressBar) { $this->UpdateProgressBar(7,100,' '); } // *PROGRESS-BAR*
19466
19467 if ($page_break_after) {
19468 $save_blklvl = $this->blklvl;
19469 $save_blk = $this->blk;
19470 $save_silp = $this->saveInlineProperties();
19471 $save_spanlvl = $this->spanlvl;
19472 $save_ilp = $this->InlineProperties;
19473 if ($this->blklvl>1) {
19474 // Close any open block tags
19475 for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
19476 // Output any text left in buffer
19477 if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); }
19478 }
19479/*-- COLUMNS --*/
19480 $save_cols = false;
19481 if ($this->ColActive) {
19482 $save_cols = true;
19483 $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off
19484 $this->SetColumns(0);
19485 }
19486/*-- END COLUMNS --*/
19487 if ($page_break_after == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
19488 else if ($page_break_after == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
19489 else { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
19490 if (!$this->restoreBlockPagebreaks) {
19491 $this->blklvl = 0;
19492 $this->lastblocklevelchange = 0;
19493 $this->blk = array();
19494 $this->initialiseBlock($this->blk[0]);
19495 $this->blk[0]['width'] =& $this->pgwidth;
19496 $this->blk[0]['inner_width'] =& $this->pgwidth;
19497 $this->blk[0]['blockContext'] = $this->blockContext;
19498 $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
19499 $this->setCSS($properties,'','BODY');
19500 }
19501
19502/*-- COLUMNS --*/
19503 if ($save_cols) {
19504 // Restore columns
19505 $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
19506 }
19507/*-- END COLUMNS --*/
19508 if ($this->restoreBlockPagebreaks) {
19509 $this->blk = $save_blk;
19510 // Re-open block tags
19511 $t = $this->blk[0]['tag'];
19512 $a = $this->blk[0]['attr'];
19513 $this->blklvl = 0;
19514 for ($b=0; $b<=$save_blklvl;$b++) {
19515 $tc = $t;
19516 $ac = $a;
19517 $t = $this->blk[$b+1]['tag'];
19518 $a = $this->blk[$b+1]['attr'];
19519 unset($this->blk[$b+1]);
19520 $this->OpenTag($tc,$ac);
19521 }
19522 $this->spanlvl = $save_spanlvl;
19523 $this->InlineProperties = $save_ilp;
19524 $this->restoreInlineProperties($save_silp);
19525 }
19526 }
19527
19528 }
19529/*-- END TABLES --*/
19530
19531/*-- LISTS --*/
19532 // *********** LISTS ********************
19533
19534 if($tag=='LI') {
19535 $this->lastoptionaltag = '';
19536 unset($this->cssmgr->listcascadeCSS[$this->cssmgr->listCSSlvl]);
19537 $this->cssmgr->listCSSlvl--;
19538 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]]); }
19539 }
19540
19541
19542 if(($tag=='UL') or ($tag=='OL')) {
19543 $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
19544 unset($this->cssmgr->listcascadeCSS[$this->cssmgr->listCSSlvl]);
19545 $this->cssmgr->listCSSlvl--;
19546
19547 $this->lastoptionaltag = '';
19548/*-- TABLES --*/
19549 // A simple list for inside a table
19550 if($this->tableLevel) {
19551 $this->listlist[$this->listlvl]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
19552 unset($this->listlist[$this->listlvl]);
19553 $this->listlvl--;
19554 if (isset($this->listlist[$this->listlvl]['MAXNUM'])) { $this->listnum = $this->listlist[$this->listlvl]['MAXNUM']; } // restore previous levels
19555 if ($this->listlvl == 0) { $this->listjustfinished = true; }
19556 return;
19557 }
19558/*-- END TABLES --*/
19559
19560 if ($this->listlvl > 1) { // returning one level
19561 $this->listjustfinished=true;
19562 if (!empty($this->textbuffer)) {
19563 $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
19564 }
19565 else {
19566 $this->listnum--;
19567 }
19568
19569 $this->textbuffer = array();
19570 $occur = $this->listoccur[$this->listlvl];
19571 $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
19572 $this->listlvl--;
19573 $occur = $this->listoccur[$this->listlvl];
19574 $this->listnum = $this->listlist[$this->listlvl][$occur]['MAXNUM']; // recover previous level's number
19575 $this->listtype = $this->listlist[$this->listlvl][$occur]['TYPE']; // recover previous level's type
19576 if ($this->InlineProperties['LIST'][$this->listlvl][$occur]) { $this->restoreInlineProperties($this->InlineProperties['LIST'][$this->listlvl][$occur]); }
19577
19578 }
19579 else { // We are closing the last OL/UL tag
19580 if (!empty($this->textbuffer)) {
19581 $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
19582 }
19583 else {
19584 $this->listnum--;
19585 }
19586
19587 $occur = $this->listoccur[$this->listlvl];
19588 $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum;
19589 $this->textbuffer = array();
19590 $this->listlvl--;
19591
19592 $this->printlistbuffer();
19593 unset($this->InlineProperties['LIST']);
19594 // SPACING AFTER LIST (Top level only)
19595 $this->Ln(0);
19596 if ($this->list_margin_bottom) {
19597 $this->DivLn($this->list_margin_bottom,$this->blklvl,true,1); // collapsible
19598 }
19599 if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']);}
19600 $this->listjustfinished = true;
19601 $this->cssmgr->listCSSlvl = 0;
19602 $this->cssmgr->listcascadeCSS = array();
19603 $this->blockjustfinished=true;
19604 $this->lastblockbottommargin = $this->list_margin_bottom;
19605 }
19606 }
19607/*-- END LISTS --*/
19608
19609
19610}
19611
19612
19613/*-- TABLES --*/
19614// This function determines the shrink factor when resizing tables
19615// val is the table_height / page_height_available
19616// returns a scaling factor used as $shrin_k to resize the table
19617// Overcompensating will be quicker but may unnecessarily shrink table too much
19618// Undercompensating means it will reiterate more times (taking more processing time)
19619function tbsqrt($val, $iteration=3) {
19620 $k = 4; // Alters number of iterations until it returns $val itself - Must be > 2
19621 // Probably best guess and most accurate
19622 if ($iteration==1) return sqrt($val);
19623 // Faster than using sqrt (because it won't undercompensate), and gives reasonable results
19624 //return 1+(($val-1)/2);
19625 $x = 2-(($iteration-2)/($k-2));
19626 if ($x == 0) { $ret = $val+0.00001; }
19627 else if ($x < 0) { $ret = 1 + ( pow(2, ($iteration-2-$k))/1000 ); }
19628 else { $ret = 1+(($val-1)/$x); }
19629 return $ret;
19630}
19631/*-- END TABLES --*/
19632
19633
19634/*-- LISTS --*/
19635function printlistbuffer() {
19636 //Save x coordinate
19637 $x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
19638 $this->cMarginL = 0;
19639 $this->cMarginR = 0;
19640 $currIndentLvl = -1;
19641 $lastIndent = array();
19642 $bak_page = $this->page;
19643 $indent = 0;
19644 foreach($this->listitem as $item)
19645 {
19646 // COLS
19647 $oldcolumn = $this->CurrCol;
19648
19649 $this->bulletarray = array();
19650 //Get list's buffered data
19651 $this->listlvl = $lvl = $item[0];
19652 $num = $item[1];
19653 $this->textbuffer = $item[2];
19654 $occur = $item[3];
19655 if ($item[4]) { $type = $item[4]; } // listitemtype
19656 else { $type = $this->listlist[$lvl][$occur]['TYPE']; }
19657 $maxnum = $this->listlist[$lvl][$occur]['MAXNUM'];
19658 $this->restoreInlineProperties($this->InlineProperties['LIST'][$lvl][$occur]);
19659 $this->SetFont($this->FontFamily,$this->FontStyle,$this->FontSizePt,true,true); // force to write
19660 $clh = $this->FontSize;
19661
19662 $this->SetLineHeight($this->FontSizePt,$this->list_lineheight[$lvl][$occur]);
19663 $this->listOcc = $occur;
19664 $this->listnum = $num;
19665
19666 if (isset($this->list_align[$this->listlvl][$occur])) { $this->divalign = $this->list_align[$this->listlvl][$occur]; }
19667 else {
19668 if (isset($this->blk[$this->blklvl]['direction']) && $this->blk[$this->blklvl]['direction']=='rtl') { $this->divalign = 'R'; }
19669 else { $this->divalign = 'L'; }
19670 }
19671
19672 // Set the bullet fontsize
19673 $bullfs = $this->InlineProperties['LISTITEM'][$lvl][$occur][$num]['size'];
19674
19675 $space_width = $this->GetCharWidth(' ',false) * 1.5;
19676
19677 //Set default width & height values
19678 $this->divwidth = $this->blk[$this->blklvl]['inner_width'];
19679 $this->divheight = $this->lineheight;
19680 $typefont = $this->FontFamily;
19681 if (preg_match('/U\+([a-fA-F0-9]+)/i',$type,$m)) {
19682 if ($this->_charDefined($this->CurrentFont['cw'],hexdec($m[1]))) { $list_item_marker = codeHex2utf($m[1]); }
19683 else { $list_item_marker = '-'; }
19684 $blt_width = $this->GetStringWidth($list_item_marker);
19685 $typefont = '';
19686 if (preg_match('/rgb\(.*?\)/',$type,$m)) {
19687 $list_item_color = $this->ConvertColor($m[0]);
19688 }
19689 }
19690 else {
19691 $list_item_color = false;
19692
19693 switch($type) //Format type
19694 {
19695 case '1':
19696 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $num; }
19697 else { $list_item_marker = $num . $this->list_number_suffix; }
19698 $blt_width = $this->GetStringWidth(str_repeat('5',strlen($maxnum)).$this->list_number_suffix);
19699 break;
19700 case 'none':
19701 $list_item_marker = '';
19702 $blt_width = 0;
19703 break;
19704 case 'A':
19705 $anum = $this->dec2alpha($num,true);
19706 $maxnum = $this->dec2alpha($maxnum,true);
19707 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
19708 else { $list_item_marker = $anum . $this->list_number_suffix; }
19709 $blt_width = $this->GetStringWidth(str_repeat('W',strlen($maxnum)).$this->list_number_suffix);
19710 break;
19711 case 'a':
19712 $anum = $this->dec2alpha($num,false);
19713 $maxnum = $this->dec2alpha($maxnum,false);
19714 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
19715 else { $list_item_marker = $anum . $this->list_number_suffix; }
19716 $blt_width = $this->GetStringWidth(str_repeat('m',strlen($maxnum)).$this->list_number_suffix);
19717 break;
19718 case 'I':
19719 $anum = $this->dec2roman($num,true);
19720 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
19721 else { $list_item_marker = $anum . $this->list_number_suffix; }
19722
19723 if ($maxnum>87) { $bbit = 87; }
19724 else if ($maxnum>86) { $bbit = 86; }
19725 else if ($maxnum>37) { $bbit = 38; }
19726 else if ($maxnum>36) { $bbit = 37; }
19727 else if ($maxnum>27) { $bbit = 28; }
19728 else if ($maxnum>26) { $bbit = 27; }
19729 else if ($maxnum>17) { $bbit = 18; }
19730 else if ($maxnum>16) { $bbit = 17; }
19731 else if ($maxnum>7) { $bbit = 8; }
19732 else if ($maxnum>6) { $bbit = 7; }
19733 else if ($maxnum>3) { $bbit = 4; }
19734 else { $bbit = $maxnum; }
19735 $maxlnum = $this->dec2roman($bbit,true);
19736 $blt_width = $this->GetStringWidth($maxlnum.$this->list_number_suffix);
19737 break;
19738 case 'i':
19739 $anum = $this->dec2roman($num,false);
19740 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
19741 else { $list_item_marker = $anum . $this->list_number_suffix; }
19742
19743 if ($maxnum>87) { $bbit = 87; }
19744 else if ($maxnum>86) { $bbit = 86; }
19745 else if ($maxnum>37) { $bbit = 38; }
19746 else if ($maxnum>36) { $bbit = 37; }
19747 else if ($maxnum>27) { $bbit = 28; }
19748 else if ($maxnum>26) { $bbit = 27; }
19749 else if ($maxnum>17) { $bbit = 18; }
19750 else if ($maxnum>16) { $bbit = 17; }
19751 else if ($maxnum>7) { $bbit = 8; }
19752 else if ($maxnum>6) { $bbit = 7; }
19753 else if ($maxnum>3) { $bbit = 4; }
19754 else { $bbit = $maxnum; }
19755 $maxlnum = $this->dec2roman($bbit,false);
19756
19757 $blt_width = $this->GetStringWidth($maxlnum.$this->list_number_suffix);
19758 break;
19759 case 'disc':
19760 if ($this->PDFA || $this->PDFX) {
19761 if ($this->_charDefined($this->CurrentFont['cw'],8226)) { $list_item_marker = "\xe2\x80\xa2"; } // &#8226;
19762 else { $list_item_marker = '-'; }
19763 $blt_width = $this->GetCharWidth($list_item_marker);
19764 break;
19765 }
19766 $list_item_marker = chr(108); // bullet disc in Zapfdingbats 'l'
19767 $typefont = 'czapfdingbats';
19768 $blt_width = (0.791 * $this->FontSize/2.5);
19769 break;
19770 case 'circle':
19771 if ($this->PDFA || $this->PDFX) {
19772 if ($this->_charDefined($this->CurrentFont['cw'],9900)) { $list_item_marker = "\xe2\x9a\xac"; } // &#9900;
19773 else { $list_item_marker = '-'; }
19774 $blt_width = $this->GetCharWidth($list_item_marker);
19775 break;
19776 }
19777 $list_item_marker = chr(109); // circle in Zapfdingbats 'm'
19778 $typefont = 'czapfdingbats';
19779 $blt_width = (0.873 * $this->FontSize/2.5);
19780 break;
19781 case 'square':
19782 if ($this->PDFA || $this->PDFX) {
19783 if ($this->_charDefined($this->CurrentFont['cw'],9642)) { $list_item_marker = "\xe2\x96\xaa"; } // &#9642;
19784 else { $list_item_marker = '-'; }
19785 $blt_width = $this->GetCharWidth($list_item_marker);
19786 break;
19787 }
19788 $list_item_marker = chr(110); //black square in Zapfdingbats font 'n'
19789 $typefont = 'czapfdingbats';
19790 $blt_width = (0.761 * $this->FontSize/2.5);
19791 break;
19792
19793/* CSS3 list-styles numeric + I added tamil
19794arabic-indic | bengali | cambodian | devanagari | gujarati | gurmukhi | kannada | khmer | lao | malayalam | mongolian | myanmar | oriya | persian | telugu | tibetan | thai | urdu
19795*/
19796 case 'arabic-indic':
19797 $cp = 0x0660;
19798 $rnum = $this->dec2other($num, $cp);
19799 $list_item_marker = $this->list_number_suffix . $rnum; // RTL
19800 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
19801 break;
19802 case 'persian':
19803 case 'urdu':
19804 $cp = 0x06F0;
19805 $rnum = $this->dec2other($num, $cp);
19806 $list_item_marker = $this->list_number_suffix . $rnum; // RTL
19807 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
19808 break;
19809 case 'bengali':
19810 $cp = 0x09E6;
19811 $rnum = $this->dec2other($num, $cp);
19812 $list_item_marker = $rnum . $this->list_number_suffix;
19813 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
19814 break;
19815 case 'devanagari':
19816 $cp = 0x0966;
19817 $rnum = $this->dec2other($num, $cp);
19818 $list_item_marker = $rnum . $this->list_number_suffix;
19819 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
19820 break;
19821 case 'gujarati':
19822 $cp = 0x0AE6;
19823 $rnum = $this->dec2other($num, $cp);
19824 $list_item_marker = $rnum . $this->list_number_suffix;
19825 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
19826 break;
19827 case 'gurmukhi':
19828 $cp = 0x0A66;
19829 $rnum = $this->dec2other($num, $cp);
19830 $list_item_marker = $rnum . $this->list_number_suffix;
19831 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
19832 break;
19833 case 'kannada':
19834 $cp = 0x0CE6;
19835 $rnum = $this->dec2other($num, $cp);
19836 $list_item_marker = $rnum . $this->list_number_suffix;
19837 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
19838 break;
19839 case 'malayalam':
19840 $cp = 0x0D66;
19841 $rnum = $this->dec2other($num, $cp);
19842 $list_item_marker = $rnum . $this->list_number_suffix;
19843 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(6, $cp),strlen($maxnum)).$this->list_number_suffix);
19844 break;
19845 case 'oriya':
19846 $cp = 0x0B66;
19847 $rnum = $this->dec2other($num, $cp);
19848 $list_item_marker = $rnum . $this->list_number_suffix;
19849 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
19850 break;
19851 case 'telugu':
19852 $cp = 0x0C66;
19853 $rnum = $this->dec2other($num, $cp);
19854 $list_item_marker = $rnum . $this->list_number_suffix;
19855 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
19856 break;
19857 case 'tamil':
19858 $cp = 0x0BE6;
19859 $rnum = $this->dec2other($num, $cp);
19860 $list_item_marker = $rnum . $this->list_number_suffix;
19861 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(9, $cp),strlen($maxnum)).$this->list_number_suffix);
19862 break;
19863 case 'thai':
19864 $cp = 0x0E50;
19865 $rnum = $this->dec2other($num, $cp);
19866 $list_item_marker = $rnum . $this->list_number_suffix;
19867 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(5, $cp),strlen($maxnum)).$this->list_number_suffix);
19868 break;
19869 case 'khmer':
19870 case 'cambodian':
19871 $cp = 0x17E0;
19872 $rnum = $this->dec2other($num, $cp);
19873 $list_item_marker = $rnum . $this->list_number_suffix;
19874 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
19875 break;
19876 case 'lao':
19877 $cp = 0x0ED0;
19878 $rnum = $this->dec2other($num, $cp);
19879 $list_item_marker = $rnum . $this->list_number_suffix;
19880 $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(6, $cp),strlen($maxnum)).$this->list_number_suffix);
19881 break;
19882 default:
19883 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $num; }
19884 else { $list_item_marker = $num . $this->list_number_suffix; }
19885 $blt_width = $this->GetStringWidth(str_repeat('5',strlen($maxnum)).$this->list_number_suffix);
19886 break;
19887 }
19888 }
19889
19890 if (isset($item[5]) && $item[5]) { $list_item_marker = ''; }
19891
19892 if ($currIndentLvl < $lvl) {
19893 if ($lvl > 1 || $this->list_indent_first_level) {
19894 $indent += $this->list_indent[$lvl][$occur];
19895 $lastIndent[$lvl] = $this->list_indent[$lvl][$occur];
19896 }
19897 }
19898 else if ($currIndentLvl > $lvl) {
19899 while ($currIndentLvl > $lvl) {
19900 $indent -= $lastIndent[$currIndentLvl];
19901 $currIndentLvl--;
19902 }
19903 }
19904 $currIndentLvl = $lvl;
19905
19906
19907/*-- RTL --*/
19908
19909 if ($this->listDir == 'rtl') {
19910 // list_align_style Determines alignment of numbers in numbered lists
19911 if ($this->list_align_style == 'L') { $lalign = 'R'; }
19912 else { $lalign = 'L'; }
19913 $this->divwidth = $this->blk[$this->blklvl]['width'] - ($indent + $blt_width + $space_width) ;
19914 $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)
19915 //Output bullet
19916 $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 );
19917 $this->x = $x;
19918 }
19919 else {
19920/*-- END RTL --*/
19921
19922 if ($this->list_align_style == 'L') { $lalign = 'L'; }
19923 else { $lalign = 'R'; }
19924 $this->divwidth = $this->blk[$this->blklvl]['width'] - ($indent + $blt_width + $space_width) ;
19925 $xb = $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'] - $blt_width - $space_width;
19926 //Output bullet
19927 $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 );
19928 $this->x = $x + $indent + $blt_width + $space_width;
19929 } // *RTL*
19930
19931 //Print content
19932 $this->printbuffer($this->textbuffer,'',false,true);
19933 $this->textbuffer=array();
19934
19935 // Added to correct for OddEven Margins
19936 if ($this->page != $bak_page) {
19937 if (($this->page-$bak_page) % 2 == 1) {
19938 $x += $this->MarginCorrection;
19939 }
19940 $bak_page = $this->page;
19941 }
19942/*-- COLUMNS --*/
19943 // OR COLUMN CHANGE
19944 if ($this->CurrCol != $oldcolumn) {
19945 if ($this->directionality == 'rtl') { // *RTL*
19946 $x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); // *RTL*
19947 } // *RTL*
19948 else { // *RTL*
19949 $x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
19950 } // *RTL*
19951 $oldcolumn = $this->CurrCol;
19952 }
19953/*-- END COLUMNS --*/
19954
19955 }
19956
19957 //Reset all used values
19958 $this->listoccur = array();
19959 $this->listitem = array();
19960 $this->listlist = array();
19961 $this->listlvl = 0;
19962 $this->listnum = 0;
19963 $this->listtype = '';
19964 $this->textbuffer = array();
19965 $this->divwidth = 0;
19966 $this->divheight = 0;
19967 $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
19968}
19969/*-- END LISTS --*/
19970
19971function _saveTextBuffer($t, $link = '', $intlink = '') {
19972// $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);
19973 // mPDF 5.6.14
19974 $arr = array();
19975 $arr[0] = $t;
19976 if (isset($link) && $link) $arr[1] = $link;
19977 $arr[2] = $this->currentfontstyle;
19978 if (isset($this->colorarray) && $this->colorarray) $arr[3] = $this->colorarray;
19979 $arr[4] = $this->currentfontfamily;
19980 if (isset($this->SUP) && $this->SUP) $arr[5] = $this->SUP;
19981 if (isset($this->SUB) && $this->SUB) $arr[6] = $this->SUB;
19982 if (isset($intlink) && $intlink) $arr[7] = $intlink;
19983 if (isset($this->strike) && $this->strike) $arr[8] = $this->strike;
19984 if (isset($this->textparam) && $this->textparam) $arr[9] = $this->textparam;
19985 if (isset($this->spanbgcolorarray) && $this->spanbgcolorarray) $arr[10] = $this->spanbgcolorarray;
19986 $arr[11] = $this->currentfontsize;
19987 if (isset($this->ReqFontStyle) && $this->ReqFontStyle) $arr[12] = $this->ReqFontStyle;
19988 if (isset($this->kerning) && $this->kerning) $arr[13] = $this->kerning;
19989 if (isset($this->lSpacingCSS) && $this->lSpacingCSS) $arr[14] = $this->lSpacingCSS;
19990 if (isset($this->wSpacingCSS) && $this->wSpacingCSS) $arr[15] = $this->wSpacingCSS;
19991 if (isset($this->spanborddet) && $this->spanborddet) $arr[16] = $this->spanborddet;
19992 if (isset($this->textshadow) && $this->textshadow) $arr[17] = $this->textshadow;
19993 $this->textbuffer[] = $arr;
19994}
19995
19996function _saveCellTextBuffer($t, $link = '', $intlink = '') {
19997// $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);
19998 // mPDF 5.6.14
19999 $arr = array();
20000 $arr[0] = $t;
20001 if (isset($link) && $link) $arr[1] = $link;
20002 $arr[2] = $this->currentfontstyle;
20003 if (isset($this->colorarray) && $this->colorarray) $arr[3] = $this->colorarray;
20004 $arr[4] = $this->currentfontfamily;
20005 if (isset($this->SUP) && $this->SUP) $arr[5] = $this->SUP;
20006 if (isset($this->SUB) && $this->SUB) $arr[6] = $this->SUB;
20007 if (isset($intlink) && $intlink) $arr[7] = $intlink;
20008 if (isset($this->strike) && $this->strike) $arr[8] = $this->strike;
20009 if (isset($this->textparam) && $this->textparam) $arr[9] = $this->textparam;
20010 if (isset($this->spanbgcolorarray) && $this->spanbgcolorarray) $arr[10] = $this->spanbgcolorarray;
20011 $arr[11] = $this->currentfontsize;
20012 if (isset($this->ReqFontStyle) && $this->ReqFontStyle) $arr[12] = $this->ReqFontStyle;
20013 if (isset($this->kerning) && $this->kerning) $arr[13] = $this->kerning;
20014 if (isset($this->lSpacingCSS) && $this->lSpacingCSS) $arr[14] = $this->lSpacingCSS;
20015 if (isset($this->wSpacingCSS) && $this->wSpacingCSS) $arr[15] = $this->wSpacingCSS;
20016 if (isset($this->spanborddet) && $this->spanborddet) $arr[16] = $this->spanborddet;
20017 if (isset($this->textshadow) && $this->textshadow) $arr[17] = $this->textshadow;
20018 $this->cell[$this->row][$this->col]['textbuffer'][] = $arr;
20019}
20020
20021
20022function printbuffer($arrayaux,$blockstate=0,$is_table=false,$is_list=false)
20023{
20024// $blockstate = 0; // NO margins/padding
20025// $blockstate = 1; // Top margins/padding only
20026// $blockstate = 2; // Bottom margins/padding only
20027// $blockstate = 3; // Top & bottom margins/padding
20028 $this->spanbgcolorarray = '';
20029 $this->spanbgcolor = false;
20030 $this->spanborder = false;
20031 $this->spanborddet = array();
20032 $paint_ht_corr = 0;
20033
20034/*-- CSS-FLOAT --*/
20035 if (count($this->floatDivs)) {
20036 list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
20037 if (($this->blk[$this->blklvl]['inner_width']-$l_width-$r_width) < (2*$this->GetCharWidth('W',false))) {
20038 // Too narrow to fit - try to move down past L or R float
20039 if ($l_max < $r_max && ($this->blk[$this->blklvl]['inner_width']-$r_width) > (2*$this->GetCharWidth('W',false))) {
20040 $this->ClearFloats('LEFT', $this->blklvl);
20041 }
20042 else if ($r_max < $l_max && ($this->blk[$this->blklvl]['inner_width']-$l_width) > (2*$this->GetCharWidth('W',false))) {
20043 $this->ClearFloats('RIGHT', $this->blklvl);
20044 }
20045 else { $this->ClearFloats('BOTH', $this->blklvl); }
20046 }
20047 }
20048/*-- END CSS-FLOAT --*/
20049 $bak_y = $this->y;
20050 $bak_x = $this->x;
20051 $align = '';
20052 if (!$is_table && !$is_list) {
20053 if (isset($this->blk[$this->blklvl]['align']) && $this->blk[$this->blklvl]['align']) { $align = $this->blk[$this->blklvl]['align']; }
20054 // Block-align is set by e.g. <.. align="center"> Takes priority for this block but not inherited
20055 if (isset($this->blk[$this->blklvl]['block-align']) && $this->blk[$this->blklvl]['block-align']) { $align = $this->blk[$this->blklvl]['block-align']; }
20056 if (isset($this->blk[$this->blklvl]['direction'])) $blockdir = $this->blk[$this->blklvl]['direction'];
20057 else $blockdir = "";
20058 $this->divwidth = $this->blk[$this->blklvl]['width'];
20059 }
20060 else {
20061 $align = $this->divalign;
20062 if ($is_table) { $blockdir = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['direction']; }
20063 else { $blockdir = $this->listDir; }
20064 }
20065 $oldpage = $this->page;
20066
20067 // ADDED for Out of Block now done as Flowing Block
20068 if ($this->divwidth == 0) {
20069 $this->divwidth = $this->pgwidth;
20070 }
20071
20072 if (!$is_table && !$is_list) { $this->SetLineHeight($this->FontSizePt,$this->blk[$this->blklvl]['line_height']); }
20073 $this->divheight = $this->lineheight;
20074 $old_height = $this->divheight;
20075
20076 // As a failsafe - if font has been set but not output to page
20077 $this->SetFont($this->default_font,'',$this->default_font_size,true,true); // force output to page
20078
20079 $array_size = count($arrayaux);
20080 $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,true,$blockdir);
20081
20082 // Added - Otherwise <div><div><p> did not output top margins/padding for 1st/2nd div
20083 if ($array_size == 0) { $this->finishFlowingBlock(true); } // true = END of flowing block
20084
20085 for($i=0;$i < $array_size; $i++)
20086 {
20087 // COLS
20088 $oldcolumn = $this->CurrCol;
20089
20090 $vetor = $arrayaux[$i];
20091 if ($i == 0 and $vetor[0] != "\n" and !$this->ispre) {
20092 $vetor[0] = ltrim($vetor[0]);
20093 }
20094
20095 // FIXED TO ALLOW IT TO SHOW '0'
20096 if (empty($vetor[0]) && !($vetor[0]==='0') && empty($vetor[7])) { //Ignore empty text and not carrying an internal link
20097 //Check if it is the last element. If so then finish printing the block
20098 if ($i == ($array_size-1)) { $this->finishFlowingBlock(true); } // true = END of flowing block
20099 continue;
20100 }
20101
20102
20103 //Activating buffer properties
20104 if(isset($vetor[11]) and $vetor[11] != '') { // Font Size
20105 if ($is_table && $this->shrin_k) {
20106 $this->SetFontSize($vetor[11]/$this->shrin_k,false);
20107 }
20108 else {
20109 $this->SetFontSize($vetor[11],false);
20110 }
20111 }
20112
20113 if(isset($vetor[17]) && !empty($vetor[17])) { //TextShadow
20114 $this->textshadow = $vetor[17];
20115 }
20116 if(isset($vetor[16]) && !empty($vetor[16])) { //Border
20117 $this->spanborddet = $vetor[16];
20118 $this->spanborder = true;
20119 }
20120
20121 if(isset($vetor[15])) { // Word spacing
20122 $this->wSpacingCSS = $vetor[15];
20123 if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') {
20124 $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
20125 }
20126 }
20127 if(isset($vetor[14])) { // Letter spacing
20128 $this->lSpacingCSS = $vetor[14];
20129 if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
20130 $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
20131 }
20132 }
20133 if(isset($vetor[13])) { // Font Kerning
20134 $this->kerning = $vetor[13];
20135 }
20136
20137
20138 if(isset($vetor[10]) and !empty($vetor[10])) //Background color
20139 {
20140 $this->spanbgcolorarray = $vetor[10];
20141 $this->spanbgcolor = true;
20142 }
20143 if(isset($vetor[9]) and !empty($vetor[9])) // Text parameters - Outline + hyphens
20144 {
20145 $this->textparam = $vetor[9] ; // mPDF 5.6.14
20146 $this->SetTextOutline($this->textparam); // mPDF 5.6.07
20147 }
20148 if(isset($vetor[8]) and $vetor[8] === true) // strike-through the text
20149 {
20150 $this->strike = true;
20151 }
20152 if(isset($vetor[7]) and $vetor[7] != '') // internal target: <a name="anyvalue">
20153 {
20154 $ily = $this->y;
20155 if ($this->keep_block_together) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "kt"=>true ); }
20156 else if ($this->table_rotate) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "tbrot"=>true ); }
20157 else if ($this->kwt) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "kwt"=>true ); }
20158 else if ($this->ColActive) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "col"=>$this->CurrCol ); }
20159 else
20160 $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page );
20161 if (empty($vetor[0])) { //Ignore empty text
20162 //Check if it is the last element. If so then finish printing the block
20163 if ($i == ($array_size-1)) { $this->finishFlowingBlock(true); } // true = END of flowing block
20164 continue;
20165 }
20166 }
20167 if(isset($vetor[6]) and $vetor[6] === true) // Subscript
20168 {
20169 $this->SUB = true;
20170 }
20171 if(isset($vetor[5]) and $vetor[5] === true) // Superscript
20172 {
20173 $this->SUP = true;
20174 }
20175 if(isset($vetor[4]) and $vetor[4] != '') { // Font Family
20176 $font = $this->SetFont($vetor[4],$this->FontStyle,0,false);
20177 }
20178 if (!empty($vetor[3])) //Font Color
20179 {
20180 $cor = $vetor[3];
20181 $this->SetTColor($cor);
20182 }
20183 if(isset($vetor[2]) and $vetor[2] != '') //Bold,Italic,Underline styles
20184 {
20185 $this->SetStyles($vetor[2]);
20186 }
20187
20188 if(isset($vetor[12]) and $vetor[12] != '') { //Requested Bold,Italic,Underline
20189 $this->ReqFontStyle = $vetor[12];
20190 }
20191 if(isset($vetor[1]) and $vetor[1] != '') //LINK
20192 {
20193 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.)
20194 {
20195 //Repeated reference to same anchor?
20196 while(array_key_exists($vetor[1],$this->internallink)) $vetor[1]="#".$vetor[1];
20197 $this->internallink[$vetor[1]] = $this->AddLink();
20198 $vetor[1] = $this->internallink[$vetor[1]];
20199 }
20200 $this->HREF = $vetor[1]; // HREF link style set here ******
20201 }
20202
20203 // SPECIAL CONTENT - IMAGES & FORM OBJECTS
20204 //Print-out special content
20205
20206 if (substr($vetor[0],0,3) == "\xbb\xa4\xac") { //identifier has been identified!
20207
20208 $objattr = $this->_getObjAttr($vetor[0]);
20209
20210/*-- TABLES --*/
20211 if ($objattr['type'] == 'nestedtable') {
20212 if ($objattr['nestedcontent']) {
20213 $level = $objattr['level'];
20214 $table = &$this->table[$level][$objattr['table']];
20215 if ($this->cacheTables) {
20216 $fh = fopen($table['cache'], "r+b");
20217 $cell = $this->_uncacheCell($table['cells'][$objattr['row']][$objattr['col']], '', $fh);
20218 }
20219 else {
20220 $fh = null;
20221 $cell = &$table['cells'][$objattr['row']][$objattr['col']];
20222 }
20223 $this->finishFlowingBlock(false,'nestedtable');
20224 $save_dw = $this->divwidth ;
20225 $save_buffer = $this->cellBorderBuffer;
20226 $this->cellBorderBuffer = array();
20227 $ncx = $this->x;
20228 list($dummyx,$w) = $this->_tableGetWidth($table, $objattr['row'], $objattr['col'], $fh);
20229 $ntw = $this->table[($level+1)][$objattr['nestedcontent']]['w']; // nested table width
20230 if (!$this->simpleTables){
20231 if ($this->packTableData) {
20232 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cell['borderbin']);
20233 }
20234 else {
20235 $br = $cell['border_details']['R']['w'];
20236 $bl = $cell['border_details']['L']['w'];
20237 }
20238 if ($table['borders_separate']) {
20239 $innerw = $w - $bl - $br - $cell['padding']['L'] - $cell['padding']['R'] - $table['border_spacing_H'];
20240 }
20241 else {
20242 $innerw = $w - $bl/2 - $br/2 - $cell['padding']['L'] - $cell['padding']['R'];
20243 }
20244 }
20245 else if ($this->simpleTables){
20246 if ($table['borders_separate']) {
20247 $innerw = $w - $table['simple']['border_details']['L']['w'] - $table['simple']['border_details']['R']['w'] - $cell['padding']['L'] - $cell['padding']['R'] - $table['border_spacing_H'];
20248 }
20249 else {
20250 $innerw = $w - $table['simple']['border_details']['L']['w']/2 - $table['simple']['border_details']['R']['w']/2 - $cell['padding']['L'] - $cell['padding']['R'];
20251 }
20252 }
20253 if ($cell['a']=='C' || $this->table[($level+1)][$objattr['nestedcontent']]['a']=='C') {
20254 $ncx += ($innerw-$ntw)/2;
20255 }
20256 elseif ($cell['a']=='R' || $this->table[($level+1)][$objattr['nestedcontent']]['a']=='R') {
20257 $ncx += $innerw- $ntw;
20258 }
20259 $this->x = $ncx ;
20260 if ($this->cacheTables) { fclose($fh); }
20261
20262 $this->_tableWrite($this->table[($level+1)][$objattr['nestedcontent']]);
20263 $this->cellBorderBuffer = $save_buffer;
20264 $this->x = $bak_x ;
20265 $this->divwidth = $save_dw;
20266 $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir);
20267 }
20268 }
20269 else {
20270/*-- END TABLES --*/
20271 if ($is_table) { // *TABLES*
20272 $maxWidth = $this->divwidth; // *TABLES*
20273 } // *TABLES*
20274 else { // *TABLES*
20275 $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']);
20276 } // *TABLES*
20277
20278/*-- CSS-IMAGE-FLOAT --*/
20279 // If float (already) exists at this level
20280 if (isset($this->floatmargins['R']) && $this->y <= $this->floatmargins['R']['y1'] && $this->y >= $this->floatmargins['R']['y0']) { $maxWidth -= $this->floatmargins['R']['w']; }
20281 if (isset($this->floatmargins['L']) && $this->y <= $this->floatmargins['L']['y1'] && $this->y >= $this->floatmargins['L']['y0']) { $maxWidth -= $this->floatmargins['L']['w']; }
20282/*-- END CSS-IMAGE-FLOAT --*/
20283
20284 list($skipln) = $this->inlineObject($objattr['type'], '', $this->y, $objattr,$this->lMargin, ($this->flowingBlockAttr['contentWidth']/_MPDFK), $maxWidth, $this->flowingBlockAttr['height'], false, $is_table);
20285 // 1 -> New line needed because of width
20286 // -1 -> Will fit width on line but NEW PAGE REQUIRED because of height
20287 // -2 -> Will not fit on line therefore needs new line but thus NEW PAGE REQUIRED
20288 $iby = $this->y;
20289 $oldpage = $this->page;
20290 $oldcol = $this->CurrCol;
20291 if (($skipln == 1 || $skipln == -2) && !isset($objattr['float'])) {
20292 $this->finishFlowingBlock(false,$objattr['type']);
20293 $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir);
20294 }
20295 $thispage = $this->page;
20296 if ($this->CurrCol!=$oldcol) { $changedcol = true; }
20297 else { $changedcol=false; }
20298
20299 // the previous lines can already have triggered page break or column change
20300 if (!$changedcol && $skipln <0 && $this->AcceptPageBreak() && $thispage==$oldpage) {
20301
20302 $this->AddPage($this->CurOrientation);
20303
20304 // Added to correct Images already set on line before page advanced
20305 // i.e. if second inline image on line is higher than first and forces new page
20306 if (count($this->objectbuffer)) {
20307 $yadj = $iby - $this->y;
20308 foreach($this->objectbuffer AS $ib=>$val) {
20309 if ($this->objectbuffer[$ib]['OUTER-Y'] ) $this->objectbuffer[$ib]['OUTER-Y'] -= $yadj;
20310 if ($this->objectbuffer[$ib]['BORDER-Y']) $this->objectbuffer[$ib]['BORDER-Y'] -= $yadj;
20311 if ($this->objectbuffer[$ib]['INNER-Y']) $this->objectbuffer[$ib]['INNER-Y'] -= $yadj;
20312 }
20313 }
20314 }
20315
20316 // Added to correct for OddEven Margins
20317 if ($this->page != $oldpage) {
20318 if (($this->page-$oldpage) % 2 == 1) {
20319 $bak_x += $this->MarginCorrection;
20320 }
20321 $oldpage = $this->page;
20322 $y = $this->tMargin - $paint_ht_corr ;
20323 $this->oldy = $this->tMargin - $paint_ht_corr ;
20324 $old_height = 0;
20325 }
20326 $this->x = $bak_x;
20327/*-- COLUMNS --*/
20328 // COLS
20329 // OR COLUMN CHANGE
20330 if ($this->CurrCol != $oldcolumn) {
20331 if ($this->directionality == 'rtl') { // *RTL*
20332 $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); // *RTL*
20333 } // *RTL*
20334 else { // *RTL*
20335 $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
20336 } // *RTL*
20337 $this->x = $bak_x;
20338 $oldcolumn = $this->CurrCol;
20339 $y = $this->y0 - $paint_ht_corr ;
20340 $this->oldy = $this->y0 - $paint_ht_corr ;
20341 $old_height = 0;
20342 }
20343/*-- END COLUMNS --*/
20344
20345/*-- CSS-IMAGE-FLOAT --*/
20346 if ($objattr['type'] == 'image' && isset($objattr['float'])) {
20347 $fy = $this->y;
20348
20349 // DIV TOP MARGIN/BORDER/PADDING
20350 if ($this->flowingBlockAttr['newblock'] && ($this->flowingBlockAttr['blockstate']==1 || $this->flowingBlockAttr['blockstate']==3) && $this->flowingBlockAttr['lineCount']== 0) {
20351 $fy += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
20352 }
20353
20354 if ($objattr['float']=='R') {
20355 $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']);
20356
20357
20358 }
20359 else if ($objattr['float']=='L') {
20360 $fx = $this->lMargin + ($this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left']);
20361 }
20362 $w = $objattr['width'];
20363 $h = abs($objattr['height']);
20364
20365 $widthLeft = $maxWidth - ($this->flowingBlockAttr['contentWidth']/_MPDFK);
20366 $maxHeight = $this->h - ($this->tMargin + $this->margin_header + $this->bMargin + 10) ;
20367 // For Images
20368 $extraWidth = ($objattr['border_left']['w'] + $objattr['border_right']['w'] + $objattr['margin_left']+ $objattr['margin_right']);
20369 $extraHeight = ($objattr['border_top']['w'] + $objattr['border_bottom']['w'] + $objattr['margin_top']+ $objattr['margin_bottom']);
20370
20371 if ($objattr['itype'] == 'wmf' || $objattr['itype'] == 'svg') {
20372 $file = $objattr['file'];
20373 $info=$this->formobjects[$file];
20374 }
20375 else {
20376 $file = $objattr['file'];
20377 $info=$this->images[$file];
20378 }
20379 $img_w = $w - $extraWidth ;
20380 $img_h = $h - $extraHeight ;
20381 if ($objattr['border_left']['w']) {
20382 $objattr['BORDER-WIDTH'] = $img_w + (($objattr['border_left']['w'] + $objattr['border_right']['w'])/2) ;
20383 $objattr['BORDER-HEIGHT'] = $img_h + (($objattr['border_top']['w'] + $objattr['border_bottom']['w'])/2) ;
20384 $objattr['BORDER-X'] = $fx + $objattr['margin_left'] + (($objattr['border_left']['w'])/2) ;
20385 $objattr['BORDER-Y'] = $fy + $objattr['margin_top'] + (($objattr['border_top']['w'])/2) ;
20386 }
20387 $objattr['INNER-WIDTH'] = $img_w;
20388 $objattr['INNER-HEIGHT'] = $img_h;
20389 $objattr['INNER-X'] = $fx + $objattr['margin_left'] + ($objattr['border_left']['w']);
20390 $objattr['INNER-Y'] = $fy + $objattr['margin_top'] + ($objattr['border_top']['w']) ;
20391 $objattr['ID'] = $info['i'];
20392 $objattr['OUTER-WIDTH'] = $w;
20393 $objattr['OUTER-HEIGHT'] = $h;
20394 $objattr['OUTER-X'] = $fx;
20395 $objattr['OUTER-Y'] = $fy;
20396 if ($objattr['float']=='R') {
20397 // If R float already exists at this level
20398 $this->floatmargins['R']['skipline'] = false;
20399 if (isset($this->floatmargins['R']['y1']) && $this->floatmargins['R']['y1'] > 0 && $fy < $this->floatmargins['R']['y1']) {
20400 $this->WriteFlowingBlock($vetor[0]);
20401 }
20402 // If L float already exists at this level
20403 else if (isset($this->floatmargins['L']['y1']) && $this->floatmargins['L']['y1'] > 0 && $fy < $this->floatmargins['L']['y1']) {
20404 // Final check distance between floats is not now too narrow to fit text
20405 $mw = 2*$this->GetCharWidth('W',false);
20406 if (($this->blk[$this->blklvl]['inner_width'] - $w - $this->floatmargins['L']['w']) < $mw) {
20407 $this->WriteFlowingBlock($vetor[0]);
20408 }
20409 else {
20410 $this->floatmargins['R']['x'] = $fx;
20411 $this->floatmargins['R']['w'] = $w;
20412 $this->floatmargins['R']['y0'] = $fy;
20413 $this->floatmargins['R']['y1'] = $fy + $h;
20414 if ($skipln == 1) {
20415 $this->floatmargins['R']['skipline'] = true;
20416 $this->floatmargins['R']['id'] = count($this->floatbuffer)+0;
20417 $objattr['skipline'] = true;
20418 }
20419 $this->floatbuffer[] = $objattr;
20420 }
20421 }
20422 else {
20423 $this->floatmargins['R']['x'] = $fx;
20424 $this->floatmargins['R']['w'] = $w;
20425 $this->floatmargins['R']['y0'] = $fy;
20426 $this->floatmargins['R']['y1'] = $fy + $h;
20427 if ($skipln == 1) {
20428 $this->floatmargins['R']['skipline'] = true;
20429 $this->floatmargins['R']['id'] = count($this->floatbuffer)+0;
20430 $objattr['skipline'] = true;
20431 }
20432 $this->floatbuffer[] = $objattr;
20433 }
20434 }
20435 else if ($objattr['float']=='L') {
20436 // If L float already exists at this level
20437 $this->floatmargins['L']['skipline'] = false;
20438 if (isset($this->floatmargins['L']['y1']) && $this->floatmargins['L']['y1'] > 0 && $fy < $this->floatmargins['L']['y1']) {
20439 $this->floatmargins['L']['skipline'] = false;
20440 $this->WriteFlowingBlock($vetor[0]);
20441 }
20442 // If R float already exists at this level
20443 else if (isset($this->floatmargins['R']['y1']) && $this->floatmargins['R']['y1'] > 0 && $fy < $this->floatmargins['R']['y1']) {
20444 // Final check distance between floats is not now too narrow to fit text
20445 $mw = 2*$this->GetCharWidth('W',false);
20446 if (($this->blk[$this->blklvl]['inner_width'] - $w - $this->floatmargins['R']['w']) < $mw) {
20447 $this->WriteFlowingBlock($vetor[0]);
20448 }
20449 else {
20450 $this->floatmargins['L']['x'] = $fx + $w;
20451 $this->floatmargins['L']['w'] = $w;
20452 $this->floatmargins['L']['y0'] = $fy;
20453 $this->floatmargins['L']['y1'] = $fy + $h;
20454 if ($skipln == 1) {
20455 $this->floatmargins['L']['skipline'] = true;
20456 $this->floatmargins['L']['id'] = count($this->floatbuffer)+0;
20457 $objattr['skipline'] = true;
20458 }
20459 $this->floatbuffer[] = $objattr;
20460 }
20461 }
20462 else {
20463 $this->floatmargins['L']['x'] = $fx + $w;
20464 $this->floatmargins['L']['w'] = $w;
20465 $this->floatmargins['L']['y0'] = $fy;
20466 $this->floatmargins['L']['y1'] = $fy + $h;
20467 if ($skipln == 1) {
20468 $this->floatmargins['L']['skipline'] = true;
20469 $this->floatmargins['L']['id'] = count($this->floatbuffer)+0;
20470 $objattr['skipline'] = true;
20471 }
20472 $this->floatbuffer[] = $objattr;
20473 }
20474 }
20475 }
20476 else {
20477/*-- END CSS-IMAGE-FLOAT --*/
20478 $this->WriteFlowingBlock($vetor[0]);
20479/*-- CSS-IMAGE-FLOAT --*/
20480 }
20481/*-- END CSS-IMAGE-FLOAT --*/
20482 } // *TABLES*
20483
20484 } // END If special content
20485 else { //THE text
20486 if ($this->tableLevel) { $paint_ht_corr = 0; } // To move the y up when new column/page started if div border needed
20487 else { $paint_ht_corr = $this->blk[$this->blklvl]['border_top']['w']; }
20488
20489 if ($vetor[0] == "\n") { //We are reading a <BR> now turned into newline ("\n")
20490 if ($this->flowingBlockAttr['content']) {
20491 $this->finishFlowingBlock(false,'br');
20492 }
20493 else if ($is_table) {
20494 $this->y+= $this->_computeLineheight($this->table_lineheight);
20495 }
20496 else if (!$is_table) {
20497 $this->DivLn($this->lineheight);
20498 if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
20499 }
20500 // Added to correct for OddEven Margins
20501 if ($this->page != $oldpage) {
20502 if (($this->page-$oldpage) % 2 == 1) {
20503 $bak_x += $this->MarginCorrection;
20504 }
20505 $oldpage = $this->page;
20506 $y = $this->tMargin - $paint_ht_corr ;
20507 $this->oldy = $this->tMargin - $paint_ht_corr ;
20508 $old_height = 0;
20509 }
20510 $this->x = $bak_x;
20511/*-- COLUMNS --*/
20512 // COLS
20513 // OR COLUMN CHANGE
20514 if ($this->CurrCol != $oldcolumn) {
20515 if ($this->directionality == 'rtl') { // *RTL*
20516 $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); // *RTL*
20517 } // *RTL*
20518 else { // *RTL*
20519 $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
20520 } // *RTL*
20521 $this->x = $bak_x;
20522 $oldcolumn = $this->CurrCol;
20523 $y = $this->y0 - $paint_ht_corr ;
20524 $this->oldy = $this->y0 - $paint_ht_corr ;
20525 $old_height = 0;
20526 }
20527/*-- END COLUMNS --*/
20528 $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir);
20529 }
20530 else {
20531 $this->WriteFlowingBlock( $vetor[0]);
20532
20533 // Added to correct for OddEven Margins
20534 if ($this->page != $oldpage) {
20535 if (($this->page-$oldpage) % 2 == 1) {
20536 $bak_x += $this->MarginCorrection;
20537 $this->x = $bak_x;
20538 }
20539 $oldpage = $this->page;
20540 $y = $this->tMargin - $paint_ht_corr ;
20541 $this->oldy = $this->tMargin - $paint_ht_corr ;
20542 $old_height = 0;
20543 }
20544/*-- COLUMNS --*/
20545 // COLS
20546 // OR COLUMN CHANGE
20547 if ($this->CurrCol != $oldcolumn) {
20548 if ($this->directionality == 'rtl') { // *RTL*
20549 $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); // *RTL*
20550 } // *RTL*
20551 else { // *RTL*
20552 $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
20553 } // *RTL*
20554 $this->x = $bak_x;
20555 $oldcolumn = $this->CurrCol;
20556 $y = $this->y0 - $paint_ht_corr ;
20557 $this->oldy = $this->y0 - $paint_ht_corr ;
20558 $old_height = 0;
20559 }
20560/*-- END COLUMNS --*/
20561 }
20562
20563
20564 }
20565
20566 //Check if it is the last element. If so then finish printing the block
20567 if ($i == ($array_size-1)) {
20568 $this->finishFlowingBlock(true); // true = END of flowing block
20569 // Added to correct for OddEven Margins
20570 if ($this->page != $oldpage) {
20571 if (($this->page-$oldpage) % 2 == 1) {
20572 $bak_x += $this->MarginCorrection;
20573 $this->x = $bak_x;
20574 }
20575 $oldpage = $this->page;
20576 $y = $this->tMargin - $paint_ht_corr ;
20577 $this->oldy = $this->tMargin - $paint_ht_corr ;
20578 $old_height = 0;
20579 }
20580
20581/*-- COLUMNS --*/
20582 // COLS
20583 // OR COLUMN CHANGE
20584 if ($this->CurrCol != $oldcolumn) {
20585 if ($this->directionality == 'rtl') { // *RTL*
20586 $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); // *RTL*
20587 } // *RTL*
20588 else { // *RTL*
20589 $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
20590 } // *RTL*
20591 $this->x = $bak_x;
20592 $oldcolumn = $this->CurrCol;
20593 $y = $this->y0 - $paint_ht_corr ;
20594 $this->oldy = $this->y0 - $paint_ht_corr ;
20595 $old_height = 0;
20596 }
20597/*-- END COLUMNS --*/
20598
20599 }
20600
20601 // RESETTING VALUES
20602 $this->SetTColor($this->ConvertColor(0));
20603 $this->SetDColor($this->ConvertColor(0));
20604 $this->SetFColor($this->ConvertColor(255));
20605 $this->colorarray = '';
20606 $this->spanbgcolorarray = '';
20607 $this->spanbgcolor = false;
20608 $this->spanborder = false;
20609 $this->spanborddet = array();
20610 $this->HREF = '';
20611 $this->textparam = array();
20612 $this->SetTextOutline();
20613 $this->SUP = false;
20614 $this->SUB = false;
20615
20616 $this->strike = false;
20617 $this->textshadow = '';
20618
20619 $this->currentfontfamily = '';
20620 $this->currentfontsize = '';
20621 $this->currentfontstyle = '';
20622/*-- TABLES --*/
20623 if ($this->tableLevel) {
20624 $this->SetLineHeight('',$this->table_lineheight); // *TABLES*
20625 }
20626 else
20627/*-- END TABLES --*/
20628/*-- LISTS --*/
20629 if ($is_list && $this->list_lineheight[$this->listlvl][$this->listOcc]) {
20630 $this->SetLineHeight('',$this->list_lineheight[$this->listlvl][$this->listOcc]); // sets default line height
20631 }
20632 else
20633/*-- END LISTS --*/
20634 if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
20635 $this->SetLineHeight('',$this->blk[$this->blklvl]['line_height']); // sets default line height
20636 }
20637 $this->ResetStyles();
20638 $this->toupper = false;
20639 $this->tolower = false;
20640 $this->capitalize = false;
20641 $this->kerning = false;
20642 $this->lSpacingCSS = '';
20643 $this->wSpacingCSS = '';
20644 $this->fixedlSpacing = false;
20645 $this->minwSpacing = 0;
20646 $this->SetDash();
20647 $this->dash_on = false;
20648 $this->dotted_on = false;
20649
20650 }//end of for(i=0;i<arraysize;i++)
20651
20652
20653 // PAINT DIV BORDER // DISABLED IN COLUMNS AS DOESN'T WORK WHEN BROKEN ACROSS COLS??
20654 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)) {
20655 $bottom_y = $this->y; // Does not include Bottom Margin
20656 if (isset($this->blk[$this->blklvl]['startpage']) && $this->blk[$this->blklvl]['startpage'] != $this->page && $blockstate != 1) {
20657 $this->PaintDivBB('pagetop',$blockstate);
20658 }
20659
20660 else if ($blockstate != 1) {
20661 $this->PaintDivBB('',$blockstate);
20662 }
20663 $this->y = $bottom_y;
20664 $this->x = $bak_x;
20665 }
20666
20667 // Reset Font
20668 $this->SetFontSize($this->default_font_size,false);
20669
20670
20671}
20672
20673function _setDashBorder($style, $div, $cp, $side) {
20674 if ($style == 'dashed' && (($side=='L' || $side=='R') || ($side=='T' && $div != 'pagetop' && !$cp) || ($side=='B' && $div!='pagebottom') )) {
20675 $dashsize = 2; // final dash will be this + 1*linewidth
20676 $dashsizek = 1.5; // ratio of Dash/Blank
20677 $this->SetDash($dashsize,($dashsize/$dashsizek)+($this->LineWidth*2));
20678 }
20679 else if ($style == 'dotted' || ($side=='T' && ($div == 'pagetop' || $cp)) || ($side=='B' && $div == 'pagebottom')) {
20680 //Round join and cap
20681 $this->SetLineJoin(1);
20682 $this->SetLineCap(1);
20683 $this->SetDash(0.001,($this->LineWidth*3));
20684 }
20685}
20686
20687function _setBorderLine($b, $k=1) {
20688 $this->SetLineWidth($b['w']/$k);
20689 $this->SetDColor($b['c']);
20690 if ($b['c'][0]==5) { // RGBa
20691 $this->SetAlpha(ord($b['c'][4])/100, 'Normal', false, 'S')."\n"; // mPDF 5.7.2
20692 }
20693 else if ($b['c'][0]==6) { // CMYKa
20694 $this->SetAlpha(ord($b['c'][5])/100, 'Normal', false, 'S')."\n"; // mPDF 5.7.2
20695 }
20696}
20697
20698// mPDF 5.6.52
20699function PaintDivBB($divider='',$blockstate=0,$blvl=0) {
20700 // Borders & backgrounds are done elsewhere for columns - messes up the repositioning in printcolumnbuffer
20701 if ($this->ColActive) { return ; } // *COLUMNS*
20702 $save_y = $this->y;
20703 if (!$blvl) { $blvl = $this->blklvl; }
20704 $x0 = $x1 = $y0 = $y1 = 0;
20705
20706 // Added mPDF 3.0 Float DIV
20707 if (isset($this->blk[$blvl]['bb_painted'][$this->page]) && $this->blk[$blvl]['bb_painted'][$this->page]) { return; } // *CSS-FLOAT*
20708
20709 if (isset($this->blk[$blvl]['x0'])) { $x0 = $this->blk[$blvl]['x0']; } // left
20710 if (isset($this->blk[$blvl]['y1'])) { $y1 = $this->blk[$blvl]['y1']; } // bottom
20711
20712 // Added mPDF 3.0 Float DIV - ensures backgrounds/borders are drawn to bottom of page
20713 if ($y1==0) {
20714 if ($divider=='pagebottom') { $y1 = $this->h-$this->bMargin; }
20715 else { $y1 = $this->y; }
20716 }
20717
20718 if (isset($this->blk[$blvl]['startpage']) && $this->blk[$blvl]['startpage'] != $this->page) { $continuingpage = true; } else { $continuingpage = false; }
20719
20720 if (isset($this->blk[$blvl]['y0'])) { $y0 = $this->blk[$blvl]['y0']; }
20721 $h = $y1 - $y0;
20722 $w = $this->blk[$blvl]['width'];
20723 $x1 = $x0 + $w;
20724
20725 // Set border-widths as used here
20726 $border_top = $this->blk[$blvl]['border_top']['w'];
20727 $border_bottom = $this->blk[$blvl]['border_bottom']['w'];
20728 $border_left = $this->blk[$blvl]['border_left']['w'];
20729 $border_right = $this->blk[$blvl]['border_right']['w'];
20730 if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage) {
20731 $border_top = 0;
20732 }
20733 if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom') {
20734 $border_bottom = 0;
20735 }
20736
20737 $brTL_H = 0;
20738 $brTL_V = 0;
20739 $brTR_H = 0;
20740 $brTR_V = 0;
20741 $brBL_H = 0;
20742 $brBL_V = 0;
20743 $brBR_H = 0;
20744 $brBR_V = 0;
20745
20746 $brset = false;
20747/*-- BORDER-RADIUS --*/
20748 if (isset($this->blk[$blvl]['border_radius_TL_H'])) { $brTL_H = $this->blk[$blvl]['border_radius_TL_H']; $brset = true; }
20749 if (isset($this->blk[$blvl]['border_radius_TL_V'])) { $brTL_V = $this->blk[$blvl]['border_radius_TL_V']; $brset = true; }
20750 if (isset($this->blk[$blvl]['border_radius_TR_H'])) { $brTR_H = $this->blk[$blvl]['border_radius_TR_H']; $brset = true; }
20751 if (isset($this->blk[$blvl]['border_radius_TR_V'])) { $brTR_V = $this->blk[$blvl]['border_radius_TR_V']; $brset = true; }
20752 if (isset($this->blk[$blvl]['border_radius_BR_H'])) { $brBR_H = $this->blk[$blvl]['border_radius_BR_H']; $brset = true; }
20753 if (isset($this->blk[$blvl]['border_radius_BR_V'])) { $brBR_V = $this->blk[$blvl]['border_radius_BR_V']; $brset = true; }
20754 if (isset($this->blk[$blvl]['border_radius_BL_H'])) { $brBL_H = $this->blk[$blvl]['border_radius_BL_H']; $brset = true; }
20755 if (isset($this->blk[$blvl]['border_radius_BL_V'])) { $brBL_V = $this->blk[$blvl]['border_radius_BL_V']; $brset = true; }
20756
20757 // mPDF 5.4.17
20758 //if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage || $this->keep_block_together) {
20759 if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage) {
20760 $brTL_H = 0;
20761 $brTL_V = 0;
20762 $brTR_H = 0;
20763 $brTR_V = 0;
20764 }
20765 // mPDF 5.4.17
20766 //if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom' || $this->keep_block_together) {
20767 if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom') {
20768 $brBL_H = 0;
20769 $brBL_V = 0;
20770 $brBR_H = 0;
20771 $brBR_V = 0;
20772 }
20773
20774 // Disallow border-radius if it is smaller than the border width.
20775 if ($brTL_H < min($border_left, $border_top)) { $brTL_H = $brTL_V = 0; }
20776 if ($brTL_V < min($border_left, $border_top)) { $brTL_V = $brTL_H = 0; }
20777 if ($brTR_H < min($border_right, $border_top)) { $brTR_H = $brTR_V = 0; }
20778 if ($brTR_V < min($border_right, $border_top)) { $brTR_V = $brTR_H = 0; }
20779 if ($brBL_H < min($border_left, $border_bottom)) { $brBL_H = $brBL_V = 0; }
20780 if ($brBL_V < min($border_left, $border_bottom)) { $brBL_V = $brBL_H = 0; }
20781 if ($brBR_H < min($border_right, $border_bottom)) { $brBR_H = $brBR_V = 0; }
20782 if ($brBR_V < min($border_right, $border_bottom)) { $brBR_V = $brBR_H = 0; }
20783
20784 // CHECK FOR radii that sum to > width or height of div ********
20785 $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));
20786 if ($f < 1) {
20787 $brTL_H *= $f;
20788 $brTL_V *= $f;
20789 $brTR_H *= $f;
20790 $brTR_V *= $f;
20791 $brBL_H *= $f;
20792 $brBL_V *= $f;
20793 $brBR_H *= $f;
20794 $brBR_V *= $f;
20795 }
20796/*-- END BORDER-RADIUS --*/
20797
20798 $tbcol = $this->ConvertColor(255);
20799 for($l=0; $l <= $blvl; $l++) {
20800 if ($this->blk[$l]['bgcolor']) {
20801 $tbcol = $this->blk[$l]['bgcolorarray'];
20802 }
20803 }
20804
20805 // BORDERS
20806 if (isset($this->blk[$blvl]['y0']) && $this->blk[$blvl]['y0']) { $y0 = $this->blk[$blvl]['y0']; }
20807 $h = $y1 - $y0;
20808 $w = $this->blk[$blvl]['width'];
20809
20810 //if ($this->blk[$blvl]['border_top']) {
20811 // Reinstate line above for dotted line divider when block border crosses a page
20812 if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
20813 $tbd = $this->blk[$blvl]['border_top'];
20814
20815 // mPDF 5.4.18
20816 $legend = '';
20817 if (isset($this->blk[$blvl]['border_legend']) && $this->blk[$blvl]['border_legend']) {
20818 $legend = $this->blk[$blvl]['border_legend']; // Same structure array as textbuffer
20819 $txt = ltrim($legend[0]);
20820
20821 //Set font, size, style, color
20822 $this->SetFont($legend[4],$legend[2],$legend[11]);
20823 if ($legend[3]) {
20824 $cor = $legend[3];
20825 $this->SetTColor($cor);
20826 }
20827 $stringWidth = $this->GetStringWidth($txt );
20828 $save_x = $this->x;
20829 $save_y = $this->y;
20830 $save_currentfontfamily = $this->FontFamily;
20831 $save_currentfontsize = $this->FontSizePt;
20832 $save_currentfontstyle = $this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
20833 $this->y = $y0 - $this->FontSize/2 + $this->blk[$blvl]['border_top']['w']/2;
20834 $this->x = $x0 + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_left']['w'];
20835
20836 // Set the distance from the border line to the text ? make configurable variable
20837 $gap = 0.2 * $this->FontSize;
20838
20839 $legbreakL = $this->x - $gap;
20840 $legbreakR = $this->x + $stringWidth + $gap;
20841
20842 $this->Cell( $stringWidth, $this->FontSize, $txt , '', 0, 'C', $fill, '', 0, 0,0,'M', $fill);
20843 // Reset
20844 $this->x = $save_x;
20845 $this->y = $save_y;
20846 $this->SetFont($save_currentfontfamily,$save_currentfontstyle,$save_currentfontsize);
20847 $this->SetTColor($this->ConvertColor(0));
20848 }
20849
20850 if (isset($tbd['s']) && $tbd['s']) {
20851 if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') {
20852 $this->_out('q');
20853 $this->SetLineWidth(0);
20854 $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0))*_MPDFK));
20855 $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $border_top))*_MPDFK));
20856 $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $border_top))*_MPDFK));
20857 $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0))*_MPDFK));
20858 $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
20859 }
20860
20861 $this->_setBorderLine($tbd);
20862 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
20863 $legbreakL -= $border_top/2; // because line cap different
20864 $legbreakR += $border_top/2;
20865 $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'T');
20866 }
20867/*-- BORDER-RADIUS --*/
20868 else if (($brTL_V && $brTL_H) || ($brTR_V && $brTR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) { // mPDF 5.6.58
20869 $this->SetLineJoin(0);
20870 $this->SetLineCap(0);
20871 }
20872 $s = '';
20873 if ($brTR_H && $brTR_V) {
20874 $s .= ($this->_EllipseArc($x0 + $w - $brTR_H, $y0 + $brTR_V, $brTR_H - $border_top/2 , $brTR_V - $border_top/2 , 1, 2, true))."\n";
20875 }
20876 else
20877/*-- END BORDER-RADIUS --*/
20878 if ($tbd['style']=='solid' || $tbd['style']=='double') {
20879 $s .= (sprintf('%.3F %.3F m ',($x0 + $w)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20880 }
20881 else {
20882 $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20883 }
20884/*-- BORDER-RADIUS --*/
20885 if ($brTL_H && $brTL_V ) {
20886 // mPDF 5.4.18
20887 if ($legend) {
20888 if ($legbreakR < ($x0 + $w - $brTR_H)) {
20889 $s .= (sprintf('%.3F %.3F l ', $legbreakR*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20890 }
20891 if ($legbreakL > ($x0 + $brTL_H )) {
20892 $s .= (sprintf('%.3F %.3F m ',$legbreakL*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20893 $s .= (sprintf('%.3F %.3F l ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK)."\n");
20894 }
20895 else {
20896 $s .= (sprintf('%.3F %.3F m ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20897 }
20898 }
20899 else {
20900 $s .= (sprintf('%.3F %.3F l ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20901 }
20902 $s .= ($this->_EllipseArc($x0 + $brTL_H, $y0 + $brTL_V, $brTL_H - $border_top/2 , $brTL_V - $border_top/2 , 2, 1))."\n";
20903 }
20904 else {
20905/*-- END BORDER-RADIUS --*/
20906 // mPDF 5.4.18
20907 if ($legend) {
20908 if ($legbreakR < ($x0 + $w)) {
20909 $s .= (sprintf('%.3F %.3F l ',$legbreakR*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20910 }
20911 if ($legbreakL > ($x0)) {
20912 $s .= (sprintf('%.3F %.3F m ',$legbreakL*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20913 if ($tbd['style']=='solid' || $tbd['style']=='double') {
20914 $s .= (sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20915 }
20916 else {
20917 $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20918 }
20919 }
20920 else if ($tbd['style']=='solid' || $tbd['style']=='double') {
20921 $s .= (sprintf('%.3F %.3F m ', ($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20922 }
20923 else {
20924 $s .= (sprintf('%.3F %.3F m ', ($x0 + $border_top/2)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20925 }
20926 }
20927 else if ($tbd['style']=='solid' || $tbd['style']=='double') {
20928 $s .= (sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20929 }
20930 else {
20931 $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
20932 }
20933/*-- BORDER-RADIUS --*/
20934 }
20935/*-- END BORDER-RADIUS --*/
20936 $s .= 'S'."\n";
20937 $this->_out($s);
20938
20939 if ($tbd['style']=='double') {
20940 $this->SetLineWidth($tbd['w']/3);
20941 $this->SetDColor($tbcol);
20942 $this->_out($s);
20943 }
20944 if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
20945
20946 // Reset Corners and Dash off
20947 $this->SetLineWidth(0.1); // mPDF 5.6.57
20948 $this->SetDColor($this->ConvertColor(0));
20949 $this->SetLineJoin(2);
20950 $this->SetLineCap(2);
20951 $this->SetDash();
20952 }
20953 }
20954 //if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1) {
20955 // Reinstate line above for dotted line divider when block border crosses a page
20956 if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') {
20957 $tbd = $this->blk[$blvl]['border_bottom'];
20958 if (isset($tbd['s']) && $tbd['s']) {
20959 if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') {
20960 $this->_out('q');
20961 $this->SetLineWidth(0);
20962 $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
20963 $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
20964 $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
20965 $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
20966 $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
20967 }
20968
20969 $this->_setBorderLine($tbd);
20970 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'B'); }
20971/*-- BORDER-RADIUS --*/
20972 else if (($brBL_V && $brBL_H) || ($brBR_V && $brBR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) { // mPDF 5.6.58
20973 $this->SetLineJoin(0);
20974 $this->SetLineCap(0);
20975 }
20976 $s = '';
20977 if ($brBL_H && $brBL_V) {
20978 $s .= ($this->_EllipseArc($x0 + $brBL_H, $y0 + $h - $brBL_V, $brBL_H - $border_bottom/2 , $brBL_V - $border_bottom/2 , 3, 2, true))."\n";
20979 }
20980 else
20981/*-- END BORDER-RADIUS --*/
20982 if ($tbd['style']=='solid' || $tbd['style']=='double') {
20983 $s .= (sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
20984 }
20985 else {
20986 $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_bottom/2))*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
20987 }
20988/*-- BORDER-RADIUS --*/
20989 if ($brBR_H && $brBR_V ) {
20990 $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_bottom/2) - $brBR_H )*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
20991 $s .= ($this->_EllipseArc($x0 + $w - $brBR_H, $y0 + $h - $brBR_V, $brBR_H - $border_bottom/2 , $brBR_V - $border_bottom/2 , 4, 1))."\n";
20992 }
20993 else
20994/*-- END BORDER-RADIUS --*/
20995 if ($tbd['style']=='solid' || $tbd['style']=='double') {
20996 $s .= (sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
20997 }
20998 else {
20999 $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_bottom/2))*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
21000 }
21001 $s .= 'S'."\n";
21002 $this->_out($s);
21003
21004 if ($tbd['style']=='double') {
21005 $this->SetLineWidth($tbd['w']/3);
21006 $this->SetDColor($tbcol);
21007 $this->_out($s);
21008 }
21009 if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
21010
21011
21012 // Reset Corners and Dash off
21013 $this->SetLineWidth(0.1); // mPDF 5.6.57
21014 $this->SetDColor($this->ConvertColor(0));
21015 $this->SetLineJoin(2);
21016 $this->SetLineCap(2);
21017 $this->SetDash();
21018 }
21019 }
21020 if ($this->blk[$blvl]['border_left']) {
21021 $tbd = $this->blk[$blvl]['border_left'];
21022 if (isset($tbd['s']) && $tbd['s']) {
21023 if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') {
21024 $this->_out('q');
21025 $this->SetLineWidth(0);
21026 $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0))*_MPDFK));
21027 $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0+$border_top))*_MPDFK));
21028 $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
21029 $this->_out(sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
21030 $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
21031 }
21032
21033 $this->_setBorderLine($tbd);
21034 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'L'); }
21035/*-- BORDER-RADIUS --*/
21036 else if (($brTL_V && $brTL_H) || ($brBL_V && $brBL_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) { // mPDF 5.6.58
21037 $this->SetLineJoin(0);
21038 $this->SetLineCap(0);
21039 }
21040 $s = '';
21041 if ($brTL_V && $brTL_H) {
21042 $s .= ($this->_EllipseArc($x0 + $brTL_H, $y0 + $brTL_V, $brTL_H - $border_left/2 , $brTL_V - $border_left/2, 2, 2, true))."\n";
21043 }
21044 else
21045/*-- END BORDER-RADIUS --*/
21046 if ($tbd['style']=='solid' || $tbd['style']=='double') {
21047 $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0))*_MPDFK))."\n";
21048 }
21049 else {
21050 $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + ($border_left/2)))*_MPDFK))."\n";
21051 }
21052/*-- BORDER-RADIUS --*/
21053 if ($brBL_V && $brBL_H ) {
21054 $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h - ($border_left/2)- $brBL_V) )*_MPDFK))."\n";
21055 $s .= ($this->_EllipseArc($x0 + $brBL_H, $y0 + $h - $brBL_V, $brBL_H - $border_left/2 , $brBL_V - $border_left/2, 3, 1))."\n";
21056 }
21057 else
21058/*-- END BORDER-RADIUS --*/
21059 if ($tbd['style']=='solid' || $tbd['style']=='double') {
21060 $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h) )*_MPDFK))."\n";
21061 }
21062 else {
21063 $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h - ($border_left/2)) )*_MPDFK))."\n";
21064 }
21065 $s .= 'S'."\n";
21066 $this->_out($s);
21067
21068 if ($tbd['style']=='double') {
21069 $this->SetLineWidth($tbd['w']/3);
21070 $this->SetDColor($tbcol);
21071 $this->_out($s);
21072 }
21073 if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
21074
21075 // Reset Corners and Dash off
21076 $this->SetLineWidth(0.1); // mPDF 5.6.57
21077 $this->SetDColor($this->ConvertColor(0));
21078 $this->SetLineJoin(2);
21079 $this->SetLineCap(2);
21080 $this->SetDash();
21081 }
21082 }
21083 if ($this->blk[$blvl]['border_right']) {
21084 $tbd = $this->blk[$blvl]['border_right'];
21085 if (isset($tbd['s']) && $tbd['s']) {
21086 if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') {
21087 $this->_out('q');
21088 $this->SetLineWidth(0);
21089 $this->_out(sprintf('%.3F %.3F m ',($x0 + $w)*_MPDFK, ($this->h-($y0))*_MPDFK));
21090 $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0+$border_top))*_MPDFK));
21091 $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
21092 $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
21093 $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
21094 }
21095
21096 $this->_setBorderLine($tbd);
21097 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'R'); }
21098/*-- BORDER-RADIUS --*/
21099 else if (($brTR_V && $brTR_H) || ($brBR_V && $brBR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) { // mPDF 5.6.58
21100 $this->SetLineJoin(0);
21101 $this->SetLineCap(0);
21102 }
21103 $s = '';
21104 if ($brBR_V && $brBR_H) {
21105 $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";
21106 }
21107 else
21108/*-- END BORDER-RADIUS --*/
21109 if ($tbd['style']=='solid' || $tbd['style']=='double') {
21110 $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + $h))*_MPDFK))."\n";
21111 }
21112 else {
21113 $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + $h - ($border_right/2)))*_MPDFK))."\n";
21114 }
21115/*-- BORDER-RADIUS --*/
21116 if ($brTR_V && $brTR_H ) {
21117 $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + ($border_right/2) + $brTR_V) )*_MPDFK))."\n";
21118 $s .= ($this->_EllipseArc($x0 + $w - $brTR_H, $y0 + $brTR_V, $brTR_H - $border_right/2 , $brTR_V - $border_right/2, 1, 1))."\n";
21119 }
21120 else
21121/*-- END BORDER-RADIUS --*/
21122 if ($tbd['style']=='solid' || $tbd['style']=='double') {
21123 $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0) )*_MPDFK))."\n";
21124 }
21125 else {
21126 $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + ($border_right/2)) )*_MPDFK))."\n";
21127 }
21128 $s .= 'S'."\n";
21129 $this->_out($s);
21130
21131 if ($tbd['style']=='double') {
21132 $this->SetLineWidth($tbd['w']/3);
21133 $this->SetDColor($tbcol);
21134 $this->_out($s);
21135 }
21136 if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
21137
21138 // Reset Corners and Dash off
21139 $this->SetLineWidth(0.1); // mPDF 5.6.57
21140 $this->SetDColor($this->ConvertColor(0));
21141 $this->SetLineJoin(2);
21142 $this->SetLineCap(2);
21143 $this->SetDash();
21144 }
21145 }
21146
21147
21148 $this->SetDash();
21149 $this->y = $save_y;
21150
21151
21152 // BACKGROUNDS are disabled in columns/kbt/headers - messes up the repositioning in printcolumnbuffer
21153 if ($this->ColActive || $this->kwt || $this->keep_block_together) { return ; }
21154
21155
21156 $bgx0 = $x0;
21157 $bgx1 = $x1;
21158 $bgy0 = $y0;
21159 $bgy1 = $y1;
21160
21161 // Defined br values represent the radius of the outer curve - need to take border-width/2 from each radius for drawing the borders
21162 if (isset($this->blk[$blvl]['background_clip']) && $this->blk[$blvl]['background_clip'] == 'padding-box') {
21163 $brbgTL_H = max(0, $brTL_H - $this->blk[$blvl]['border_left']['w']);
21164 $brbgTL_V = max(0, $brTL_V - $this->blk[$blvl]['border_top']['w']);
21165 $brbgTR_H = max(0, $brTR_H - $this->blk[$blvl]['border_right']['w']);
21166 $brbgTR_V = max(0, $brTR_V - $this->blk[$blvl]['border_top']['w']);
21167 $brbgBL_H = max(0, $brBL_H - $this->blk[$blvl]['border_left']['w']);
21168 $brbgBL_V = max(0, $brBL_V - $this->blk[$blvl]['border_bottom']['w']);
21169 $brbgBR_H = max(0, $brBR_H - $this->blk[$blvl]['border_right']['w']);
21170 $brbgBR_V = max(0, $brBR_V - $this->blk[$blvl]['border_bottom']['w']);
21171 $bgx0 += $this->blk[$blvl]['border_left']['w'];
21172 $bgx1 -= $this->blk[$blvl]['border_right']['w'];
21173 if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
21174 $bgy0 += $this->blk[$blvl]['border_top']['w'];
21175 }
21176 if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') {
21177 $bgy1 -= $this->blk[$blvl]['border_bottom']['w'];
21178 }
21179 }
21180 // mPDF 5.6.09
21181 else if (isset($this->blk[$blvl]['background_clip']) && $this->blk[$blvl]['background_clip'] == 'content-box') {
21182 $brbgTL_H = max(0, $brTL_H - $this->blk[$blvl]['border_left']['w'] - $this->blk[$blvl]['padding_left']);
21183 $brbgTL_V = max(0, $brTL_V - $this->blk[$blvl]['border_top']['w'] - $this->blk[$blvl]['padding_top']);
21184 $brbgTR_H = max(0, $brTR_H - $this->blk[$blvl]['border_right']['w'] - $this->blk[$blvl]['padding_right']);
21185 $brbgTR_V = max(0, $brTR_V - $this->blk[$blvl]['border_top']['w'] - $this->blk[$blvl]['padding_top']);
21186 $brbgBL_H = max(0, $brBL_H - $this->blk[$blvl]['border_left']['w'] - $this->blk[$blvl]['padding_left']);
21187 $brbgBL_V = max(0, $brBL_V - $this->blk[$blvl]['border_bottom']['w'] - $this->blk[$blvl]['padding_bottom']);
21188 $brbgBR_H = max(0, $brBR_H - $this->blk[$blvl]['border_right']['w'] - $this->blk[$blvl]['padding_right']);
21189 $brbgBR_V = max(0, $brBR_V - $this->blk[$blvl]['border_bottom']['w'] - $this->blk[$blvl]['padding_bottom']);
21190 $bgx0 += $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'];
21191 $bgx1 -= $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right'];
21192 if (($this->blk[$blvl]['border_top']['w'] || $this->blk[$blvl]['padding_top']) && $divider != 'pagetop' && !$continuingpage) {
21193 $bgy0 += $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top'];
21194 }
21195 if (($this->blk[$blvl]['border_bottom']['w'] || $this->blk[$blvl]['padding_bottom']) && $blockstate != 1 && $divider != 'pagebottom') {
21196 $bgy1 -= $this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom'];
21197 }
21198 }
21199 else {
21200 $brbgTL_H = $brTL_H;
21201 $brbgTL_V = $brTL_V;
21202 $brbgTR_H = $brTR_H;
21203 $brbgTR_V = $brTR_V;
21204 $brbgBL_H = $brBL_H;
21205 $brbgBL_V = $brBL_V;
21206 $brbgBR_H = $brBR_H;
21207 $brbgBR_V = $brBR_V;
21208 }
21209
21210 // Set clipping path
21211 $s = ' q 0 w '; // Line width=0
21212 $s .= sprintf('%.3F %.3F m ', ($bgx0+$brbgTL_H )*_MPDFK, ($this->h-$bgy0)*_MPDFK); // start point TL before the arc
21213/*-- BORDER-RADIUS --*/
21214 if ($brbgTL_H || $brbgTL_V) {
21215 $s .= $this->_EllipseArc($bgx0+$brbgTL_H, $bgy0+$brbgTL_V, $brbgTL_H , $brbgTL_V , 2); // segment 2 TL
21216 }
21217/*-- END BORDER-RADIUS --*/
21218 $s .= sprintf('%.3F %.3F l ', ($bgx0)*_MPDFK, ($this->h-($bgy1-$brbgBL_V ))*_MPDFK); // line to BL
21219/*-- BORDER-RADIUS --*/
21220 if ($brbgBL_H || $brbgBL_V) {
21221 $s .= $this->_EllipseArc($bgx0+$brbgBL_H, $bgy1-$brbgBL_V, $brbgBL_H , $brbgBL_V , 3); // segment 3 BL
21222 }
21223/*-- END BORDER-RADIUS --*/
21224 $s .= sprintf('%.3F %.3F l ', ($bgx1-$brbgBR_H )*_MPDFK, ($this->h-($bgy1))*_MPDFK); // line to BR
21225/*-- BORDER-RADIUS --*/
21226 if ($brbgBR_H || $brbgBR_V) {
21227 $s .= $this->_EllipseArc($bgx1-$brbgBR_H, $bgy1-$brbgBR_V, $brbgBR_H , $brbgBR_V , 4); // segment 4 BR
21228 }
21229/*-- END BORDER-RADIUS --*/
21230 $s .= sprintf('%.3F %.3F l ', ($bgx1)*_MPDFK, ($this->h-($bgy0+$brbgTR_V))*_MPDFK); // line to TR
21231/*-- BORDER-RADIUS --*/
21232 if ($brbgTR_H || $brbgTR_V) {
21233 $s .= $this->_EllipseArc($bgx1-$brbgTR_H, $bgy0+$brbgTR_V, $brbgTR_H , $brbgTR_V , 1); // segment 1 TR
21234 }
21235/*-- END BORDER-RADIUS --*/
21236 $s .= sprintf('%.3F %.3F l ', ($bgx0+$brbgTL_H )*_MPDFK, ($this->h-$bgy0)*_MPDFK); // line to TL
21237
21238
21239 // Box Shadow
21240 $shadow = '';
21241 if (isset($this->blk[$blvl]['box_shadow']) && $this->blk[$blvl]['box_shadow'] && $h > 0) {
21242 foreach($this->blk[$blvl]['box_shadow'] AS $sh) {
21243 // Colors
21244 if ($sh['col']{0}==1) {
21245 $colspace = 'Gray';
21246 if ($sh['col']{2}==1) { $col1 = '1'.$sh['col'][1].'1'.$sh['col'][3]; }
21247 else { $col1 = '1'.$sh['col'][1].'1'.chr(100); }
21248 $col2 = '1'.$sh['col'][1].'1'.chr(0);
21249 }
21250 else if ($sh['col']{0}==4) { // CMYK
21251 $colspace = 'CMYK';
21252 $col1 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(100);
21253 $col2 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(0);
21254 }
21255 else if ($sh['col']{0}==5) { // RGBa
21256 $colspace = 'RGB';
21257 $col1 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4];
21258 $col2 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(0);
21259 }
21260 else if ($sh['col']{0}==6) { // CMYKa
21261 $colspace = 'CMYK';
21262 $col1 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].$sh['col'][5];
21263 $col2 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(0);
21264 }
21265 else {
21266 $colspace = 'RGB';
21267 $col1 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(100);
21268 $col2 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(0);
21269 }
21270
21271 // Use clipping path as set above (and rectangle around page) to clip area outside box
21272 $shadow .= $s; // Use the clipping path with W*
21273 $shadow .= sprintf('0 %.3F m %.3F %.3F l ', $this->h*_MPDFK, $this->w*_MPDFK, $this->h*_MPDFK);
21274 $shadow .= sprintf('%.3F 0 l 0 0 l 0 %.3F l ', $this->w*_MPDFK, $this->h*_MPDFK);
21275 $shadow .= 'W n'."\n";
21276
21277 $sh['blur'] = abs($sh['blur']); // cannot have negative blur value
21278 // Ensure spread/blur do not make effective shadow width/height < 0
21279 // Could do more complex things but this just adjusts spread value
21280 if (-$sh['spread'] + $sh['blur']/2 > min($w/2, $h/2)) {
21281 $sh['spread'] = $sh['blur']/2 - min($w/2, $h/2) + 0.01;
21282 }
21283 // Shadow Offset
21284 if ($sh['x'] || $sh['y']) $shadow .= sprintf(' q 1 0 0 1 %.4F %.4F cm', $sh['x']*_MPDFK, -$sh['y']*_MPDFK)."\n";
21285
21286 // Set path for INNER shadow
21287 $shadow .= ' q 0 w ';
21288 $shadow .= $this->SetFColor($col1, true)."\n";
21289 if ($col1{0}==5 && ord($col1{4})<100) { // RGBa
21290 $shadow .= $this->SetAlpha(ord($col1{4})/100, 'Normal', true, 'F')."\n";
21291 }
21292 else if ($col1{0}==6 && ord($col1{5})<100) { // CMYKa
21293 $shadow .= $this->SetAlpha(ord($col1{5})/100, 'Normal', true, 'F')."\n";
21294 }
21295 else if ($col1{0}==1 && $col1{2}==1 && ord($col1{3})<100) { // Gray
21296 $shadow .= $this->SetAlpha(ord($col1{3})/100, 'Normal', true, 'F')."\n";
21297 }
21298
21299 // Blur edges
21300 $mag = 0.551784; // Bezier Control magic number for 4-part spline for circle/ellipse
21301 $mag2 = 0.551784; // Bezier Control magic number to fill in edge of blurred rectangle
21302 $d1 = $sh['spread']+$sh['blur']/2;
21303 $d2 = $sh['spread']-$sh['blur']/2;
21304 $bl = $sh['blur'];
21305 $x00 = $x0 - $d1;
21306 $y00 = $y0 - $d1;
21307 $w00 = $w + $d1*2;
21308 $h00 = $h + $d1*2;
21309
21310 // If any border-radius is greater width-negative spread(inner edge), ignore radii for shadow or screws up
21311 $flatten = false;
21312 if (max($brbgTR_H, $brbgTL_H, $brbgBR_H, $brbgBL_H) >= $w+$d2) { $flatten = true; }
21313 if (max($brbgTR_V, $brbgTL_V, $brbgBR_V, $brbgBL_V) >= $h+$d2) { $flatten = true; }
21314
21315
21316 // TOP RIGHT corner
21317 $p1x = $x00+$w00-$d1-$brbgTR_H; $p1c2x = $p1x +($d2+$brbgTR_H)*$mag;
21318 $p1y = $y00+$bl;
21319 $p2x = $x00+$w00-$d1-$brbgTR_H; $p2c2x = $p2x + ($d1+$brbgTR_H)*$mag;
21320 $p2y = $y00; $p2c1y = $p2y + $bl/2;
21321 $p3x = $x00+$w00; $p3c2x = $p3x - $bl/2;
21322 $p3y = $y00+$d1+$brbgTR_V; $p3c1y = $p3y - ($d1+$brbgTR_V)*$mag;
21323 $p4x = $x00+$w00-$bl;
21324 $p4y = $y00+$d1+$brbgTR_V; $p4c2y = $p4y - ($d2+$brbgTR_V)*$mag;
21325 if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) {
21326 $p1x = $x00+$w00-$bl; $p1c2x = $p1x;
21327 $p2x = $x00+$w00-$bl; $p2c2x = $p2x + $bl*$mag2;
21328 $p3y = $y00+$bl; $p3c1y = $p3y - $bl*$mag2;
21329 $p4y = $y00+$bl; $p4c2y = $p4y ;
21330 }
21331
21332 $shadow .= sprintf('%.3F %.3F m ', ($p1x )*_MPDFK, ($this->h-($p1y ))*_MPDFK);
21333 $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);
21334 $patch_array[0]['f']=0;
21335 $patch_array[0]['points']=array($p1x,$p1y, $p1x,$p1y,
21336 $p2x,$p2c1y, $p2x,$p2y, $p2c2x,$p2y,
21337 $p3x,$p3c1y, $p3x,$p3y, $p3c2x,$p3y,
21338 $p4x,$p4y, $p4x,$p4y, $p4x,$p4c2y,
21339 $p1c2x,$p1y);
21340 $patch_array[0]['colors'] = array($col1,$col2,$col2,$col1);
21341
21342
21343 // RIGHT
21344 $p1x = $x00+$w00; // control point only matches p3 preceding
21345 $p1y = $y00+$d1+$brbgTR_V;
21346 $p2x = $x00+$w00-$bl; // control point only matches p4 preceding
21347 $p2y = $y00+$d1+$brbgTR_V;
21348 $p3x = $x00+$w00-$bl;
21349 $p3y = $y00+$h00-$d1-$brbgBR_V;
21350 $p4x = $x00+$w00; $p4c1x = $p4x-$bl/2;
21351 $p4y = $y00+$h00-$d1-$brbgBR_V;
21352 if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) {
21353 $p1y = $y00+$bl;
21354 $p2y = $y00+$bl;
21355 }
21356 if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) {
21357 $p3y = $y00+$h00-$bl;
21358 $p4y = $y00+$h00-$bl;
21359 }
21360
21361 $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
21362 $patch_array[1]['f']=2;
21363 $patch_array[1]['points']=array($p2x,$p2y,
21364 $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
21365 $p4c1x,$p4y, $p4x,$p4y, $p4x,$p4y,
21366 $p1x,$p1y);
21367 $patch_array[1]['colors'] = array($col1,$col2);
21368
21369
21370 // BOTTOM RIGHT corner
21371 $p1x = $x00+$w00-$bl; // control points only matches p3 preceding
21372 $p1y = $y00+$h00-$d1-$brbgBR_V; $p1c2y = $p1y + ($d2+$brbgBR_V)*$mag;
21373 $p2x = $x00+$w00; // control point only matches p4 preceding
21374 $p2y = $y00+$h00-$d1-$brbgBR_V; $p2c2y = $p2y + ($d1+$brbgBR_V)*$mag;
21375 $p3x = $x00+$w00-$d1-$brbgBR_H; $p3c1x = $p3x + ($d1+$brbgBR_H)*$mag;
21376 $p3y = $y00+$h00; $p3c2y = $p3y - $bl/2;
21377 $p4x = $x00+$w00-$d1-$brbgBR_H; $p4c2x = $p4x + ($d2+$brbgBR_H)*$mag;
21378 $p4y = $y00+$h00-$bl;
21379
21380 if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) {
21381 $p1y = $y00+$h00-$bl; $p1c2y = $p1y;
21382 $p2y = $y00+$h00-$bl; $p2c2y = $p2y + $bl*$mag2;
21383 $p3x = $x00+$w00-$bl; $p3c1x = $p3x + $bl*$mag2;
21384 $p4x = $x00+$w00-$bl; $p4c2x = $p4x;
21385 }
21386
21387 $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);
21388 $patch_array[2]['f']=2;
21389 $patch_array[2]['points']=array($p2x,$p2c2y,
21390 $p3c1x,$p3y, $p3x,$p3y, $p3x,$p3c2y,
21391 $p4x,$p4y, $p4x,$p4y, $p4c2x,$p4y,
21392 $p1x,$p1c2y);
21393 $patch_array[2]['colors'] = array($col2,$col1);
21394
21395
21396
21397 // BOTTOM
21398 $p1x = $x00+$w00-$d1-$brbgBR_H; // control point only matches p3 preceding
21399 $p1y = $y00+$h00;
21400 $p2x = $x00+$w00-$d1-$brbgBR_H; // control point only matches p4 preceding
21401 $p2y = $y00+$h00-$bl;
21402 $p3x = $x00+$d1+$brbgBL_H;
21403 $p3y = $y00+$h00-$bl;
21404 $p4x = $x00+$d1+$brbgBL_H;
21405 $p4y = $y00+$h00; $p4c1y = $p4y - $bl/2;
21406
21407 if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) {
21408 $p1x = $x00+$w00-$bl;
21409 $p2x = $x00+$w00-$bl;
21410 }
21411 if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) {
21412 $p3x = $x00+$bl;
21413 $p4x = $x00+$bl;
21414 }
21415
21416 $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
21417 $patch_array[3]['f']=2;
21418 $patch_array[3]['points']=array($p2x,$p2y,
21419 $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
21420 $p4x,$p4c1y, $p4x,$p4y, $p4x,$p4y,
21421 $p1x,$p1y);
21422 $patch_array[3]['colors'] = array($col1,$col2);
21423
21424 // BOTTOM LEFT corner
21425 $p1x = $x00+$d1+$brbgBL_H; $p1c2x = $p1x - ($d2+$brbgBL_H)*$mag; // control points only matches p3 preceding
21426 $p1y = $y00+$h00-$bl;
21427 $p2x = $x00+$d1+$brbgBL_H; $p2c2x = $p2x - ($d1+$brbgBL_H)*$mag; // control point only matches p4 preceding
21428 $p2y = $y00+$h00;
21429 $p3x = $x00; $p3c2x = $p3x + $bl/2;
21430 $p3y = $y00+$h00-$d1-$brbgBL_V; $p3c1y = $p3y + ($d1+$brbgBL_V)*$mag;
21431 $p4x = $x00+$bl;
21432 $p4y = $y00+$h00-$d1-$brbgBL_V; $p4c2y = $p4y + ($d2+$brbgBL_V)*$mag;
21433 if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) {
21434 $p1x = $x00+$bl; $p1c2x = $p1x;
21435 $p2x = $x00+$bl; $p2c2x = $p2x - $bl*$mag2;
21436 $p3y = $y00+$h00-$bl; $p3c1y = $p3y + $bl*$mag2;
21437 $p4y = $y00+$h00-$bl; $p4c2y = $p4y;
21438 }
21439
21440 $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);
21441 $patch_array[4]['f']=2;
21442 $patch_array[4]['points']=array($p2c2x,$p2y,
21443 $p3x,$p3c1y, $p3x,$p3y, $p3c2x,$p3y,
21444 $p4x,$p4y, $p4x,$p4y, $p4x,$p4c2y,
21445 $p1c2x,$p1y);
21446 $patch_array[4]['colors'] = array($col2,$col1);
21447
21448
21449 // LEFT - joins on the right (C3-C4 of previous): f = 2
21450 $p1x = $x00; // control point only matches p3 preceding
21451 $p1y = $y00+$h00-$d1-$brbgBL_V;
21452 $p2x = $x00+$bl; // control point only matches p4 preceding
21453 $p2y = $y00+$h00-$d1-$brbgBL_V;
21454 $p3x = $x00+$bl;
21455 $p3y = $y00+$d1+$brbgTL_V;
21456 $p4x = $x00; $p4c1x = $p4x + $bl/2;
21457 $p4y = $y00+$d1+$brbgTL_V;
21458 if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) {
21459 $p1y = $y00+$h00-$bl;
21460 $p2y = $y00+$h00-$bl;
21461 }
21462 if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) {
21463 $p3y = $y00+$bl;
21464 $p4y = $y00+$bl;
21465 }
21466
21467 $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
21468 $patch_array[5]['f']=2;
21469 $patch_array[5]['points']=array($p2x,$p2y,
21470 $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
21471 $p4c1x,$p4y, $p4x,$p4y, $p4x,$p4y,
21472 $p1x,$p1y);
21473 $patch_array[5]['colors'] = array($col1,$col2);
21474
21475 // TOP LEFT corner
21476 $p1x = $x00+$bl; // control points only matches p3 preceding
21477 $p1y = $y00+$d1+$brbgTL_V; $p1c2y = $p1y - ($d2+$brbgTL_V)*$mag;
21478 $p2x = $x00; // control point only matches p4 preceding
21479 $p2y = $y00+$d1+$brbgTL_V; $p2c2y = $p2y - ($d1+$brbgTL_V)*$mag;
21480 $p3x = $x00+$d1+$brbgTL_H; $p3c1x = $p3x - ($d1+$brbgTL_H)*$mag;
21481 $p3y = $y00; $p3c2y = $p3y + $bl/2;
21482 $p4x = $x00+$d1+$brbgTL_H; $p4c2x = $p4x - ($d2+$brbgTL_H)*$mag;
21483 $p4y = $y00+$bl;
21484
21485 if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) {
21486 $p1y = $y00+$bl; $p1c2y = $p1y;
21487 $p2y = $y00+$bl; $p2c2y = $p2y - $bl*$mag2;
21488 $p3x = $x00+$bl; $p3c1x = $p3x - $bl*$mag2;
21489 $p4x = $x00+$bl; $p4c2x = $p4x ;
21490 }
21491
21492 $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);
21493 $patch_array[6]['f']=2;
21494 $patch_array[6]['points']=array($p2x,$p2c2y,
21495 $p3c1x,$p3y, $p3x,$p3y, $p3x,$p3c2y,
21496 $p4x,$p4y, $p4x,$p4y, $p4c2x,$p4y,
21497 $p1x,$p1c2y);
21498 $patch_array[6]['colors'] = array($col2,$col1);
21499
21500
21501 // TOP - joins on the right (C3-C4 of previous): f = 2
21502 $p1x = $x00+$d1+$brbgTL_H; // control point only matches p3 preceding
21503 $p1y = $y00;
21504 $p2x = $x00+$d1+$brbgTL_H; // control point only matches p4 preceding
21505 $p2y = $y00+$bl;
21506 $p3x = $x00+$w00-$d1-$brbgTR_H;
21507 $p3y = $y00+$bl;
21508 $p4x = $x00+$w00-$d1-$brbgTR_H;
21509 $p4y = $y00; $p4c1y = $p4y + $bl/2;
21510 if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) {
21511 $p1x = $x00+$bl;
21512 $p2x = $x00+$bl;
21513 }
21514 if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) {
21515 $p3x = $x00+$w00-$bl;
21516 $p4x = $x00+$w00-$bl;
21517 }
21518
21519 $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
21520 $patch_array[7]['f']=2;
21521 $patch_array[7]['points']=array($p2x,$p2y,
21522 $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
21523 $p4x,$p4c1y, $p4x,$p4y, $p4x,$p4y,
21524 $p1x,$p1y);
21525 $patch_array[7]['colors'] = array($col1,$col2);
21526
21527 $shadow .= ' h f Q '."\n"; // Close path and Fill the inner solid shadow
21528
21529 if ($bl) $shadow .= $this->grad->CoonsPatchMesh($x00,$y00,$w00,$h00,$patch_array,$x00,$x00+$w00,$y00,$y00+$h00, $colspace, true);
21530
21531 if ($sh['x'] || $sh['y']) $shadow .= ' Q'."\n"; // Shadow Offset
21532 $shadow .= ' Q'."\n"; // Ends path no-op & Sets the clipping path
21533
21534 }
21535 }
21536
21537 $s .= ' W n '; // Ends path no-op & Sets the clipping path
21538
21539 if ($this->blk[$blvl]['bgcolor']) {
21540 $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
21541 }
21542 else if ($shadow) {
21543 $this->pageBackgrounds[$blvl][] = array('shadowonly'=>true, 'col'=>'', 'clippath'=>'', 'visibility'=>$this->visibility, 'shadow'=>$shadow, 'z-index'=>$this->current_layer); // mPDF 5.6.01
21544 }
21545
21546/*-- BACKGROUNDS --*/
21547 if (isset($this->blk[$blvl]['gradient'])) {
21548 $g = $this->grad->parseBackgroundGradient($this->blk[$blvl]['gradient']);
21549 if ($g) {
21550 $gx = $x0;
21551 $gy = $y0;
21552 $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
21553 }
21554 }
21555 if (isset($this->blk[$blvl]['background-image'])) {
21556 if ($this->blk[$blvl]['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $this->blk[$blvl]['background-image']['gradient'] )) {
21557 $g = $this->grad->parseMozGradient( $this->blk[$blvl]['background-image']['gradient'] );
21558 if ($g) {
21559 $gx = $x0;
21560 $gy = $y0;
21561 // mPDF 5.6.11
21562 // origin specifies the background-positioning-area (bpa)
21563 if ($this->blk[$blvl]['background-image']['origin'] == 'padding-box') {
21564 $gx += $this->blk[$blvl]['border_left']['w'];
21565 $w -= ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['border_right']['w']);
21566 if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
21567 $gy += $this->blk[$blvl]['border_top']['w'];
21568 }
21569 if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') {
21570 $gy1 = $y1 - $this->blk[$blvl]['border_bottom']['w'];
21571 }
21572 else { $gy1 = $y1; }
21573 $h = $gy1 - $gy;
21574 }
21575 else if ($this->blk[$blvl]['background-image']['origin'] == 'content-box') {
21576 $gx += $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'];
21577 $w -= ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right']);
21578 if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
21579 $gy += $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top'];
21580 }
21581 if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') {
21582 $gy1 = $y1 - ($this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']);
21583 }
21584 else { $gy1 = $y1 - $this->blk[$blvl]['padding_bottom']; }
21585 $h = $gy1 - $gy;
21586 }
21587
21588 if (isset($this->blk[$blvl]['background-image']['size']['w']) && $this->blk[$blvl]['background-image']['size']['w']) {
21589 $size = $this->blk[$blvl]['background-image']['size'];
21590 if ($size['w']!='contain' && $size['w']!='cover') {
21591 if (stristr($size['w'] ,'%')) {
21592 $size['w'] += 0;
21593 $size['w'] /= 100;
21594 $w *= $size['w'];
21595 }
21596 else if ($size['w']!='auto') {
21597 $w = $size['w'];
21598 }
21599 if (stristr($size['h'] ,'%')) {
21600 $size['h'] += 0;
21601 $size['h'] /= 100;
21602 $h *= $size['h'];
21603 }
21604 else if ($size['h']!='auto') {
21605 $h = $size['h'];
21606 }
21607 }
21608 }
21609 $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
21610 }
21611 }
21612 else {
21613 $image_id = $this->blk[$blvl]['background-image']['image_id'];
21614 $orig_w = $this->blk[$blvl]['background-image']['orig_w'];
21615 $orig_h = $this->blk[$blvl]['background-image']['orig_h'];
21616 $x_pos = $this->blk[$blvl]['background-image']['x_pos'];
21617 $y_pos = $this->blk[$blvl]['background-image']['y_pos'];
21618 $x_repeat = $this->blk[$blvl]['background-image']['x_repeat'];
21619 $y_repeat = $this->blk[$blvl]['background-image']['y_repeat'];
21620 $resize = $this->blk[$blvl]['background-image']['resize'];
21621 $opacity = $this->blk[$blvl]['background-image']['opacity'];
21622 $itype = $this->blk[$blvl]['background-image']['itype'];
21623 $size = $this->blk[$blvl]['background-image']['size']; // mPDF 5.6.10
21624 // mPDF 5.6.10
21625 // origin specifies the background-positioning-area (bpa)
21626 $bpa = array('x'=>$x0, 'y'=>$y0, 'w'=>$w, 'h'=>$h);
21627 if ($this->blk[$blvl]['background-image']['origin'] == 'padding-box') {
21628 $bpa['x'] = $x0 + $this->blk[$blvl]['border_left']['w'];
21629 $bpa['w'] = $w - ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['border_right']['w']);
21630 if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
21631 $bpa['y'] = $y0 + $this->blk[$blvl]['border_top']['w'];
21632 }
21633 else { $bpa['y'] = $y0; }
21634 if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') {
21635 $bpay = $y1 - $this->blk[$blvl]['border_bottom']['w'];
21636 }
21637 else { $bpay = $y1; }
21638 $bpa['h'] = $bpay - $bpa['y'];
21639 }
21640 // mPDF 5.6.09
21641 else if ($this->blk[$blvl]['background-image']['origin'] == 'content-box') {
21642 $bpa['x'] = $x0 + $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'];
21643 $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']);
21644 if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
21645 $bpa['y'] = $y0 + $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top'];
21646 }
21647 else { $bpa['y'] = $y0 + $this->blk[$blvl]['padding_top']; }
21648 if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') {
21649 $bpay = $y1 - ($this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']);
21650 }
21651 else { $bpay = $y1 - $this->blk[$blvl]['padding_bottom']; }
21652 $bpa['h'] = $bpay - $bpa['y'];
21653 }
21654 $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
21655 }
21656 }
21657/*-- END BACKGROUNDS --*/
21658
21659 // Float DIV
21660 $this->blk[$blvl]['bb_painted'][$this->page] = true;
21661
21662}
21663
21664/*-- BORDER-RADIUS --*/
21665
21666function _EllipseArc($x0, $y0, $rx, $ry, $seg = 1, $part=false, $start=false) { // Anticlockwise segment 1-4 TR-TL-BL-BR (part=1 or 2)
21667 $s = '';
21668 if ($rx<0) { $rx = 0; }
21669 if ($ry<0) { $ry = 0; }
21670 $rx *= _MPDFK;
21671 $ry *= _MPDFK;
21672 $astart = 0;
21673 if ($seg == 1) { // Top Right
21674 $afinish = 90;
21675 $nSeg = 4;
21676 }
21677 else if ($seg == 2) { // Top Left
21678 $afinish = 180;
21679 $nSeg = 8;
21680 }
21681 else if ($seg == 3) { // Bottom Left
21682 $afinish = 270;
21683 $nSeg = 12;
21684 }
21685 else { // Bottom Right
21686 $afinish = 360;
21687 $nSeg = 16;
21688 }
21689 $astart = deg2rad((float) $astart);
21690 $afinish = deg2rad((float) $afinish);
21691 $totalAngle = $afinish - $astart;
21692 $dt = $totalAngle / $nSeg; // segment angle
21693 $dtm = $dt/3;
21694 $x0 *= _MPDFK;
21695 $y0 = ($this->h - $y0) * _MPDFK;
21696 $t1 = $astart;
21697 $a0 = $x0 + ($rx * cos($t1));
21698 $b0 = $y0 + ($ry * sin($t1));
21699 $c0 = -$rx * sin($t1);
21700 $d0 = $ry * cos($t1);
21701 $op = false;
21702 for ($i = 1; $i <= $nSeg; $i++) {
21703 // Draw this bit of the total curve
21704 $t1 = ($i * $dt) + $astart;
21705 $a1 = $x0 + ($rx * cos($t1));
21706 $b1 = $y0 + ($ry * sin($t1));
21707 $c1 = -$rx * sin($t1);
21708 $d1 = $ry * cos($t1);
21709 if ($i>($nSeg-4) && (!$part || ($part == 1 && $i<=$nSeg-2) || ($part == 2 && $i>$nSeg-2))) {
21710 if ($start && !$op) {
21711 $s .= sprintf('%.3F %.3F m ', $a0, $b0);
21712 }
21713 $s .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($a0 + ($c0 * $dtm)), ($b0 + ($d0 * $dtm)), ($a1 - ($c1 * $dtm)) , ($b1 - ($d1 * $dtm)), $a1 , $b1 );
21714 $op = true;
21715 }
21716 $a0 = $a1;
21717 $b0 = $b1;
21718 $c0 = $c1;
21719 $d0 = $d1;
21720 }
21721 return $s;
21722}
21723/*-- END BORDER-RADIUS --*/
21724
21725
21726
21727function PaintDivLnBorder($state=0,$blvl=0,$h) {
21728 // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
21729 $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y + $h;
21730
21731 $save_y = $this->y;
21732
21733 $w = $this->blk[$blvl]['width'];
21734 $x0 = $this->x; // left
21735 $y0 = $this->y; // top
21736 $x1 = $this->x + $w; // bottom
21737 $y1 = $this->y + $h; // bottom
21738
21739 if ($this->blk[$blvl]['border_top'] && ($state==1 || $state==3)) {
21740 $tbd = $this->blk[$blvl]['border_top'];
21741 if (isset($tbd['s']) && $tbd['s']) {
21742 $this->_setBorderLine($tbd);
21743 $this->y = $y0 + ($tbd['w']/2);
21744 // mPDF 5.6.56
21745 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
21746 $this->_setDashBorder($tbd['style'],'',$continuingpage,'T');
21747 $this->Line($x0 + ($tbd['w']/2) , $this->y , $x0 + $w - ($tbd['w']/2), $this->y);
21748 }
21749 else {
21750 $this->SetLineJoin(0);
21751 $this->SetLineCap(0);
21752 $this->Line($x0, $this->y , $x0 + $w, $this->y);
21753 }
21754 $this->y += $tbd['w'];
21755 // Reset Corners and Dash off
21756 $this->SetLineJoin(2);
21757 $this->SetLineCap(2);
21758 $this->SetDash();
21759 }
21760 }
21761 if ($this->blk[$blvl]['border_left']) {
21762 $tbd = $this->blk[$blvl]['border_left'];
21763 if (isset($tbd['s']) && $tbd['s']) {
21764 $this->_setBorderLine($tbd);
21765 // mPDF 5.6.56
21766 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
21767 $this->y = $y0 + ($tbd['w']/2);
21768 $this->_setDashBorder($tbd['style'],'',$continuingpage,'L');
21769 $this->Line($x0 + ($tbd['w']/2), $this->y, $x0 + ($tbd['w']/2), $y0 + $h -($tbd['w']/2));
21770 }
21771 else {
21772 $this->y = $y0;
21773 $this->SetLineJoin(0);
21774 $this->SetLineCap(0);
21775 $this->Line($x0 + ($tbd['w']/2), $this->y, $x0 + ($tbd['w']/2), $y0 + $h);
21776 }
21777 $this->y += $tbd['w'];
21778 // Reset Corners and Dash off
21779 $this->SetLineJoin(2);
21780 $this->SetLineCap(2);
21781 $this->SetDash();
21782 }
21783 }
21784 if ($this->blk[$blvl]['border_right']) {
21785 $tbd = $this->blk[$blvl]['border_right'];
21786 if (isset($tbd['s']) && $tbd['s']) {
21787 $this->_setBorderLine($tbd);
21788 // mPDF 5.6.56
21789 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
21790 $this->y = $y0 + ($tbd['w']/2);
21791 $this->_setDashBorder($tbd['style'],'',$continuingpage,'R');
21792 $this->Line($x0 + $w - ($tbd['w']/2), $this->y, $x0 + $w - ($tbd['w']/2), $y0 + $h - ($tbd['w']/2));
21793 }
21794 else {
21795 $this->y = $y0;
21796 $this->SetLineJoin(0);
21797 $this->SetLineCap(0);
21798 $this->Line($x0 + $w - ($tbd['w']/2), $this->y, $x0 + $w - ($tbd['w']/2), $y0 + $h);
21799 }
21800 $this->y += $tbd['w'];
21801 // Reset Corners and Dash off
21802 $this->SetLineJoin(2);
21803 $this->SetLineCap(2);
21804 $this->SetDash();
21805 }
21806 }
21807 if ($this->blk[$blvl]['border_bottom'] && $state > 1) {
21808 $tbd = $this->blk[$blvl]['border_bottom'];
21809 if (isset($tbd['s']) && $tbd['s']) {
21810 $this->_setBorderLine($tbd);
21811 $this->y = $y0 + $h - ($tbd['w']/2);
21812 // mPDF 5.6.56
21813 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
21814 $this->_setDashBorder($tbd['style'],'',$continuingpage,'B');
21815 $this->Line($x0 + ($tbd['w']/2) , $this->y, $x0 + $w - ($tbd['w']/2), $this->y);
21816 }
21817 else {
21818 $this->SetLineJoin(0);
21819 $this->SetLineCap(0);
21820 $this->Line($x0, $this->y, $x0 + $w, $this->y);
21821 }
21822 $this->y += $tbd['w'];
21823 // Reset Corners and Dash off
21824 $this->SetLineJoin(2);
21825 $this->SetLineCap(2);
21826 $this->SetDash();
21827 }
21828 }
21829 $this->SetDash();
21830 $this->y = $save_y;
21831}
21832
21833
21834function PaintImgBorder($objattr,$is_table) {
21835 // Borders are disabled in columns - messes up the repositioning in printcolumnbuffer
21836 if ($this->ColActive) { return ; } // *COLUMNS*
21837 if ($is_table) { $k = $this->shrin_k; } else { $k = 1; }
21838 $h = (isset($objattr['BORDER-HEIGHT']) ? $objattr['BORDER-HEIGHT'] : 0);
21839 $w = (isset($objattr['BORDER-WIDTH']) ? $objattr['BORDER-WIDTH'] : 0);
21840 $x0 = (isset($objattr['BORDER-X']) ? $objattr['BORDER-X'] : 0);
21841 $y0 = (isset($objattr['BORDER-Y']) ? $objattr['BORDER-Y'] : 0);
21842
21843 // BORDERS
21844 if ($objattr['border_top']) {
21845 $tbd = $objattr['border_top'];
21846 if (!empty($tbd['s'])) {
21847 $this->_setBorderLine($tbd,$k);
21848 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','T'); }
21849 $this->Line($x0, $y0, $x0 + $w, $y0);
21850 // Reset Corners and Dash off
21851 $this->SetLineJoin(2);
21852 $this->SetLineCap(2);
21853 $this->SetDash();
21854 }
21855 }
21856 if ($objattr['border_left']) {
21857 $tbd = $objattr['border_left'];
21858 if (!empty($tbd['s'])) {
21859 $this->_setBorderLine($tbd,$k);
21860 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','L'); }
21861 $this->Line($x0, $y0, $x0, $y0 + $h);
21862 // Reset Corners and Dash off
21863 $this->SetLineJoin(2);
21864 $this->SetLineCap(2);
21865 $this->SetDash();
21866 }
21867 }
21868 if ($objattr['border_right']) {
21869 $tbd = $objattr['border_right'];
21870 if (!empty($tbd['s'])) {
21871 $this->_setBorderLine($tbd,$k);
21872 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','R'); }
21873 $this->Line($x0 + $w, $y0, $x0 + $w, $y0 + $h);
21874 // Reset Corners and Dash off
21875 $this->SetLineJoin(2);
21876 $this->SetLineCap(2);
21877 $this->SetDash();
21878 }
21879 }
21880 if ($objattr['border_bottom']) {
21881 $tbd = $objattr['border_bottom'];
21882 if (!empty($tbd['s'])) {
21883 $this->_setBorderLine($tbd,$k);
21884 if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','B'); }
21885 $this->Line($x0, $y0 + $h, $x0 + $w, $y0 + $h);
21886 // Reset Corners and Dash off
21887 $this->SetLineJoin(2);
21888 $this->SetLineCap(2);
21889 $this->SetDash();
21890 }
21891 }
21892 $this->SetDash();
21893 $this->SetAlpha(1);
21894}
21895
21896/*-- END HTML-CSS --*/
21897
21898
21899
21900
21901function Reset() {
21902 $this->SetTColor($this->ConvertColor(0));
21903 $this->SetDColor($this->ConvertColor(0));
21904 $this->SetFColor($this->ConvertColor(255));
21905 $this->SetAlpha(1);
21906 $this->colorarray = '';
21907
21908 $this->spanbgcolorarray = '';
21909 $this->spanbgcolor = false;
21910 $this->spanborder = false;
21911 $this->spanborddet = array();
21912
21913 $this->ResetStyles();
21914
21915 $this->HREF = '';
21916 $this->textparam = array();
21917 $this->SetTextOutline();
21918
21919 $this->SUP = false;
21920 $this->SUB = false;
21921 $this->strike = false;
21922 $this->textshadow = '';
21923
21924 $this->SetFont($this->default_font,'',0,false);
21925 $this->SetFontSize($this->default_font_size,false);
21926
21927 $this->currentfontfamily = '';
21928 $this->currentfontsize = '';
21929
21930/*-- TABLES --*/
21931 if ($this->tableLevel) {
21932 $this->SetLineHeight('',$this->table_lineheight); // *TABLES*
21933 }
21934 else
21935/*-- END TABLES --*/
21936/*-- LISTS --*/
21937
21938 if ($this->listlvl && $this->list_lineheight[$this->listlvl][$this->bulletarray['occur']]) {
21939 $this->SetLineHeight('',$this->list_lineheight[$this->listlvl][$this->bulletarray['occur']]); // sets default line height
21940 }
21941 else
21942/*-- END LISTS --*/
21943 if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
21944 $this->SetLineHeight('',$this->blk[$this->blklvl]['line_height']); // sets default line height
21945 }
21946
21947 $this->toupper = false;
21948 $this->tolower = false;
21949 $this->kerning = false;
21950 $this->lSpacingCSS = '';
21951 $this->wSpacingCSS = '';
21952 $this->fixedlSpacing = false;
21953 $this->minwSpacing = 0;
21954 $this->capitalize = false;
21955 $this->SetDash(); //restore to no dash
21956 $this->dash_on = false;
21957 $this->dotted_on = false;
21958 $this->divwidth = 0;
21959 $this->divheight = 0;
21960 $this->divalign = '';
21961 $this->divrevert = false;
21962 $this->oldy = -1;
21963
21964 $bodystyle = array();
21965 if (isset($this->cssmgr->CSS['BODY']['FONT-STYLE'])) { $bodystyle['FONT-STYLE'] = $this->cssmgr->CSS['BODY']['FONT-STYLE']; }
21966 if (isset($this->cssmgr->CSS['BODY']['FONT-WEIGHT'])) { $bodystyle['FONT-WEIGHT'] = $this->cssmgr->CSS['BODY']['FONT-WEIGHT']; }
21967 if (isset($this->cssmgr->CSS['BODY']['COLOR'])) { $bodystyle['COLOR'] = $this->cssmgr->CSS['BODY']['COLOR']; }
21968 if (isset($bodystyle)) { $this->setCSS($bodystyle,'BLOCK','BODY'); }
21969
21970}
21971
21972/*-- HTML-CSS --*/
21973function ReadMetaTags($html) {
21974 // changes anykey=anyvalue to anykey="anyvalue" (only do this when this happens inside tags)
21975 $regexp = '/ (\\w+?)=([^\\s>"]+)/si';
21976 $html = preg_replace($regexp," \$1=\"\$2\"",$html);
21977 if (preg_match('/<title>(.*?)<\/title>/si',$html,$m)) {
21978 $this->SetTitle($m[1]);
21979 }
21980 preg_match_all('/<meta [^>]*?(name|content)="([^>]*?)" [^>]*?(name|content)="([^>]*?)".*?>/si',$html,$aux);
21981 $firstattr = $aux[1];
21982 $secondattr = $aux[3];
21983 for( $i = 0 ; $i < count($aux[0]) ; $i++) {
21984
21985 $name = ( strtoupper($firstattr[$i]) == "NAME" )? strtoupper($aux[2][$i]) : strtoupper($aux[4][$i]);
21986 $content = ( strtoupper($firstattr[$i]) == "CONTENT" )? $aux[2][$i] : $aux[4][$i];
21987 switch($name) {
21988 case "KEYWORDS": $this->SetKeywords($content); break;
21989 case "AUTHOR": $this->SetAuthor($content); break;
21990 case "DESCRIPTION": $this->SetSubject($content); break;
21991 }
21992 }
21993}
21994
21995
21996function ReadCharset($html) {
21997 // Charset conversion
21998 if ($this->allow_charset_conversion) {
21999 if (preg_match('/<head.*charset=([^\'\"\s]*).*<\/head>/si',$html,$m)) {
22000 if (strtoupper($m[1]) != 'UTF-8') {
22001 $this->charset_in = strtoupper($m[1]);
22002 }
22003 }
22004 }
22005}
22006
22007function setCSS($arrayaux,$type='',$tag='') { // type= INLINE | BLOCK | LIST // tag= BODY
22008 if (!is_array($arrayaux)) return; //Removes PHP Warning
22009 // Set font size first so that e.g. MARGIN 0.83em works on font size for this element
22010 if (isset($arrayaux['FONT-SIZE'])) {
22011 $v = $arrayaux['FONT-SIZE'];
22012 if(is_numeric($v[0])) {
22013 if ($type == 'BLOCK' && $this->blklvl>0 && isset($this->blk[$this->blklvl-1]['InlineProperties']) && isset($this->blk[$this->blklvl-1]['InlineProperties']['size'])) {
22014 $mmsize = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['InlineProperties']['size']);
22015 }
22016 else {
22017 $mmsize = $this->ConvertSize($v,$this->FontSize);
22018 }
22019 $this->SetFontSize( $mmsize*(_MPDFK),false ); //Get size in points (pt)
22020 }
22021 else{
22022 $v = strtoupper($v);
22023 if (isset($this->fontsizes[$v])) {
22024 $this->SetFontSize( $this->fontsizes[$v]* $this->default_font_size,false);
22025 }
22026 }
22027 if ($tag == 'BODY') { $this->SetDefaultFontSize($this->FontSizePt); }
22028 }
22029
22030
22031 if ($this->useLang && !$this->usingCoreFont) {
22032 if (isset($arrayaux['LANG']) && $arrayaux['LANG'] && $arrayaux['LANG'] != $this->default_lang && ((strlen($arrayaux['LANG']) == 5 && $arrayaux['LANG'] != 'UTF-8') || strlen($arrayaux['LANG']) == 2)) {
22033 list ($coreSuitable,$mpdf_pdf_unifonts) = GetLangOpts($arrayaux['LANG'], $this->useAdobeCJK);
22034 if ($mpdf_pdf_unifonts) { $this->RestrictUnicodeFonts($mpdf_pdf_unifonts); }
22035 else { $this->RestrictUnicodeFonts($this->default_available_fonts ); }
22036 if ($tag == 'BODY') {
22037 $this->currentLang = $arrayaux['LANG'];
22038 $this->default_lang = $arrayaux['LANG'];
22039 if ($mpdf_pdf_unifonts) { $this->default_available_fonts = $mpdf_pdf_unifonts; }
22040 }
22041 }
22042 else {
22043 $this->RestrictUnicodeFonts($this->default_available_fonts );
22044 }
22045 }
22046
22047 // FOR INLINE and BLOCK OR 'BODY'
22048 if (isset($arrayaux['FONT-FAMILY'])) {
22049 $v = $arrayaux['FONT-FAMILY'];
22050 //If it is a font list, get all font types
22051 $aux_fontlist = explode(",",$v);
22052 $found = 0;
22053 foreach($aux_fontlist AS $f) {
22054 $fonttype = trim($f);
22055 $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
22056 $fonttype = preg_replace('/ /','',$fonttype);
22057 $v = strtolower(trim($fonttype));
22058 if (isset($this->fonttrans[$v]) && $this->fonttrans[$v]) { $v = $this->fonttrans[$v]; }
22059 if ((!$this->onlyCoreFonts && in_array($v,$this->available_unifonts)) ||
22060 in_array($v,array('ccourier','ctimes','chelvetica')) ||
22061 ($this->onlyCoreFonts && in_array($v,array('courier','times','helvetica','arial'))) ||
22062 in_array($v, array('sjis','uhc','big5','gb'))) {
22063 $fonttype = $v;
22064 $found = 1;
22065 break;
22066 }
22067 }
22068 if (!$found) {
22069 foreach($aux_fontlist AS $f) {
22070 $fonttype = trim($f);
22071 $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
22072 $fonttype = preg_replace('/ /','',$fonttype);
22073 $v = strtolower(trim($fonttype));
22074 if (isset($this->fonttrans[$v]) && $this->fonttrans[$v]) { $v = $this->fonttrans[$v]; }
22075 if (in_array($v,$this->sans_fonts) || in_array($v,$this->serif_fonts) || in_array($v,$this->mono_fonts) ) {
22076 $fonttype = $v;
22077 break;
22078 }
22079 }
22080 }
22081
22082 if ($tag == 'BODY') {
22083 $this->SetDefaultFont($fonttype);
22084 }
22085 $this->SetFont($fonttype,$this->currentfontstyle,0,false);
22086 }
22087 else {
22088 $this->SetFont($this->currentfontfamily,$this->currentfontstyle,0,false);
22089 }
22090
22091 foreach($arrayaux as $k => $v) {
22092 if ($type != 'INLINE' && $tag != 'BODY' && $type != 'LIST') {
22093 switch($k){
22094 // BORDERS
22095 case 'BORDER-TOP':
22096 $this->blk[$this->blklvl]['border_top'] = $this->border_details($v);
22097 if ($this->blk[$this->blklvl]['border_top']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
22098 break;
22099 case 'BORDER-BOTTOM':
22100 $this->blk[$this->blklvl]['border_bottom'] = $this->border_details($v);
22101 if ($this->blk[$this->blklvl]['border_bottom']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
22102 break;
22103 case 'BORDER-LEFT':
22104 $this->blk[$this->blklvl]['border_left'] = $this->border_details($v);
22105 if ($this->blk[$this->blklvl]['border_left']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
22106 break;
22107 case 'BORDER-RIGHT':
22108 $this->blk[$this->blklvl]['border_right'] = $this->border_details($v);
22109 if ($this->blk[$this->blklvl]['border_right']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
22110 break;
22111
22112 // PADDING
22113 case 'PADDING-TOP':
22114 $this->blk[$this->blklvl]['padding_top'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22115 break;
22116 case 'PADDING-BOTTOM':
22117 $this->blk[$this->blklvl]['padding_bottom'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22118 break;
22119 case 'PADDING-LEFT':
22120 $this->blk[$this->blklvl]['padding_left'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22121 break;
22122 case 'PADDING-RIGHT':
22123 $this->blk[$this->blklvl]['padding_right'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22124 break;
22125
22126 // MARGINS
22127 case 'MARGIN-TOP':
22128 $tmp = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22129 if (isset($this->blk[$this->blklvl]['lastbottommargin'])) {
22130 if ($tmp > $this->blk[$this->blklvl]['lastbottommargin']) {
22131 $tmp -= $this->blk[$this->blklvl]['lastbottommargin'];
22132 }
22133 else {
22134 $tmp = 0;
22135 }
22136 }
22137 $this->blk[$this->blklvl]['margin_top'] = $tmp;
22138 break;
22139 case 'MARGIN-BOTTOM':
22140 $this->blk[$this->blklvl]['margin_bottom'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22141 break;
22142 case 'MARGIN-LEFT':
22143 $this->blk[$this->blklvl]['margin_left'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22144 break;
22145 case 'MARGIN-RIGHT':
22146 $this->blk[$this->blklvl]['margin_right'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22147 break;
22148
22149/*-- BORDER-RADIUS --*/
22150 case 'BORDER-TOP-LEFT-RADIUS-H':
22151 $this->blk[$this->blklvl]['border_radius_TL_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22152 break;
22153 case 'BORDER-TOP-LEFT-RADIUS-V':
22154 $this->blk[$this->blklvl]['border_radius_TL_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22155 break;
22156 case 'BORDER-TOP-RIGHT-RADIUS-H':
22157 $this->blk[$this->blklvl]['border_radius_TR_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22158 break;
22159 case 'BORDER-TOP-RIGHT-RADIUS-V':
22160 $this->blk[$this->blklvl]['border_radius_TR_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22161 break;
22162 case 'BORDER-BOTTOM-LEFT-RADIUS-H':
22163 $this->blk[$this->blklvl]['border_radius_BL_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22164 break;
22165 case 'BORDER-BOTTOM-LEFT-RADIUS-V':
22166 $this->blk[$this->blklvl]['border_radius_BL_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22167 break;
22168 case 'BORDER-BOTTOM-RIGHT-RADIUS-H':
22169 $this->blk[$this->blklvl]['border_radius_BR_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22170 break;
22171 case 'BORDER-BOTTOM-RIGHT-RADIUS-V':
22172 $this->blk[$this->blklvl]['border_radius_BR_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22173 break;
22174/*-- END BORDER-RADIUS --*/
22175
22176 case 'BOX-SHADOW':
22177 $bs = $this->cssmgr->setCSSboxshadow($v);
22178 if ($bs) { $this->blk[$this->blklvl]['box_shadow'] = $bs; }
22179 break;
22180
22181 case 'BACKGROUND-CLIP':
22182 if (strtoupper($v) == 'PADDING-BOX') { $this->blk[$this->blklvl]['background_clip'] = 'padding-box'; }
22183 else if (strtoupper($v) == 'CONTENT-BOX') { $this->blk[$this->blklvl]['background_clip'] = 'content-box'; } // mPDF 5.6.09
22184 break;
22185
22186 case 'PAGE-BREAK-AFTER':
22187 if (strtoupper($v) == 'AVOID') { $this->blk[$this->blklvl]['page_break_after_avoid'] = true; }
22188 else if (strtoupper($v) == 'ALWAYS' || strtoupper($v) == 'LEFT' || strtoupper($v) == 'RIGHT') { $this->blk[$this->blklvl]['page_break_after'] = strtoupper($v) ; }
22189 break;
22190
22191 case 'WIDTH':
22192 if (strtoupper($v) != 'AUTO') {
22193 $this->blk[$this->blklvl]['css_set_width'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
22194 }
22195 break;
22196
22197 case 'TEXT-INDENT':
22198 // Left as raw value (may include 1% or 2em)
22199 $this->blk[$this->blklvl]['text_indent'] = $v;
22200 break;
22201
22202 }//end of switch($k)
22203 }
22204
22205
22206 if ($type != 'INLINE' && $type != 'LIST') { // includes BODY tag
22207 switch($k){
22208
22209 case 'MARGIN-COLLAPSE': // Custom tag to collapse margins at top and bottom of page
22210 if (strtoupper($v) == 'COLLAPSE') { $this->blk[$this->blklvl]['margin_collapse'] = true; }
22211 break;
22212
22213 case 'LINE-HEIGHT':
22214 $this->blk[$this->blklvl]['line_height'] = $this->fixLineheight($v);
22215 if (!$this->blk[$this->blklvl]['line_height'] ) { $this->blk[$this->blklvl]['line_height'] = $this->normalLineheight; }
22216 break;
22217
22218 case 'TEXT-ALIGN': //left right center justify
22219 switch (strtoupper($v)) {
22220 case 'LEFT':
22221 $this->blk[$this->blklvl]['align']="L";
22222 break;
22223 case 'CENTER':
22224 $this->blk[$this->blklvl]['align']="C";
22225 break;
22226 case 'RIGHT':
22227 $this->blk[$this->blklvl]['align']="R";
22228 break;
22229 case 'JUSTIFY':
22230 $this->blk[$this->blklvl]['align']="J";
22231 break;
22232 }
22233 break;
22234
22235/*-- BACKGROUNDS --*/
22236 case 'BACKGROUND-GRADIENT':
22237 if ($type == 'BLOCK') {
22238 $this->blk[$this->blklvl]['gradient'] = $v;
22239 }
22240 break;
22241/*-- END BACKGROUNDS --*/
22242
22243 case 'DIRECTION':
22244 if ($v) { $this->blk[$this->blklvl]['direction'] = strtolower($v); }
22245 break;
22246
22247 }//end of switch($k)
22248 }
22249
22250 // FOR INLINE ONLY
22251 if ($type == 'INLINE' || $type == 'LIST') {
22252 switch($k){
22253 case 'DISPLAY': // Custom tag to collapse margins at top and bottom of page
22254 if (strtoupper($v) == 'NONE') { $this->inlineDisplayOff = true; }
22255 break;
22256 case 'DIRECTION':
22257 break;
22258 }//end of switch($k)
22259 }
22260 // FOR INLINE ONLY
22261 if ($type == 'INLINE') {
22262 switch($k){
22263 // BORDERS
22264 case 'BORDER-TOP':
22265 $this->spanborddet['T'] = $this->border_details($v);
22266 $this->spanborder = true;
22267 break;
22268 case 'BORDER-BOTTOM':
22269 $this->spanborddet['B'] = $this->border_details($v);
22270 $this->spanborder = true;
22271 break;
22272 case 'BORDER-LEFT':
22273 $this->spanborddet['L'] = $this->border_details($v);
22274 $this->spanborder = true;
22275 break;
22276 case 'BORDER-RIGHT':
22277 $this->spanborddet['R'] = $this->border_details($v);
22278 $this->spanborder = true;
22279 break;
22280 // mPDF 5.6.26
22281 case 'VISIBILITY': // block is set in OpenTag
22282 $v = strtolower($v);
22283 if ($v == 'visible' || $v == 'hidden' || $v == 'printonly' || $v == 'screenonly') {
22284 $this->textparam['visibility'] = $v;
22285 }
22286 break;
22287 }//end of switch($k)
22288 }
22289
22290
22291 // FOR INLINE and BLOCK
22292 switch($k){
22293 case 'TEXT-ALIGN': //left right center justify
22294 if (strtoupper($v) == 'NOJUSTIFY' && $this->blk[$this->blklvl]['align']=="J") {
22295 $this->blk[$this->blklvl]['align']="";
22296 }
22297 break;
22298 // bgcolor only - to stay consistent with original html2fpdf
22299 case 'BACKGROUND':
22300 case 'BACKGROUND-COLOR':
22301 $cor = $this->ConvertColor($v);
22302 if ($cor) {
22303 if ($tag == 'BODY') {
22304 $this->bodyBackgroundColor = $cor;
22305 }
22306 else if ($type == 'INLINE' || $type == 'LIST') {
22307 $this->spanbgcolorarray = $cor;
22308 $this->spanbgcolor = true;
22309 }
22310 else {
22311 $this->blk[$this->blklvl]['bgcolorarray'] = $cor;
22312 $this->blk[$this->blklvl]['bgcolor'] = true;
22313 }
22314 }
22315 else if ($type != 'INLINE' && $type != 'LIST') {
22316 if ($this->ColActive || $this->keep_block_together) {
22317 $this->blk[$this->blklvl]['bgcolorarray'] = $this->blk[$this->blklvl-1]['bgcolorarray'] ;
22318 $this->blk[$this->blklvl]['bgcolor'] = $this->blk[$this->blklvl-1]['bgcolor'] ;
22319 }
22320 }
22321 break;
22322
22323 // auto | normal | none
22324 case 'FONT-KERNING':
22325 if ((strtoupper($v) == 'NORMAL' || strtoupper($v) == 'AUTO') && $this->useKerning) { $this->kerning = true; }
22326 else if (strtoupper($v) == 'NONE') { $this->kerning = false; }
22327 break;
22328
22329
22330 // normal | <length>
22331 case 'LETTER-SPACING':
22332 $this->lSpacingCSS = $v;
22333 if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
22334 $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
22335 }
22336 break;
22337
22338 // normal | <length>
22339 case 'WORD-SPACING':
22340 $this->wSpacingCSS = $v;
22341 if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') {
22342 $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
22343 }
22344 break;
22345
22346 case 'FONT-STYLE': // italic normal oblique
22347 switch (strtoupper($v)) {
22348 case 'ITALIC':
22349 case 'OBLIQUE':
22350 $this->SetStyle('I',true);
22351 break;
22352 case 'NORMAL':
22353 $this->SetStyle('I',false);
22354 break;
22355 }
22356 break;
22357
22358 case 'FONT-WEIGHT': // normal bold //Does not support: bolder, lighter, 100..900(step value=100)
22359 switch (strtoupper($v)) {
22360 case 'BOLD':
22361 $this->SetStyle('B',true);
22362 break;
22363 case 'NORMAL':
22364 $this->SetStyle('B',false);
22365 break;
22366 }
22367 break;
22368
22369 case 'VERTICAL-ALIGN': //super and sub only dealt with here e.g. <SUB> and <SUP>
22370 switch (strtoupper($v)) {
22371 case 'SUPER':
22372 $this->SUP=true;
22373 $this->SUB=false; // mPDF 5.6.07
22374 break;
22375 case 'SUB':
22376 $this->SUB=true;
22377 $this->SUP=false; // mPDF 5.6.07
22378 break;
22379 case 'BASELINE': // mPDF 5.6.07
22380 $this->SUB=false;
22381 $this->SUP=false;
22382 break;
22383 }
22384 break;
22385
22386 case 'TEXT-DECORATION': // none underline line-through (strikeout) //Does not support: overline, blink
22387 if (stristr($v,'LINE-THROUGH')) {
22388 $this->strike = true;
22389 }
22390 else if (stristr($v,'UNDERLINE')) {
22391 $this->SetStyle('U',true);
22392 }
22393 else if (stristr($v,'NONE')) {
22394 $this->SetStyle('U',false);
22395 $this->strike = false; // mPDF 5.6.07
22396 }
22397 break;
22398
22399 case 'FONT-VARIANT':
22400 switch (strtoupper($v)) {
22401 case 'SMALL-CAPS':
22402 $this->SetStyle('S',true);
22403 break;
22404 case 'NORMAL':
22405 $this->SetStyle('S',false);
22406 break;
22407 }
22408 break;
22409
22410 case 'TEXT-TRANSFORM': // none uppercase lowercase //Does support: capitalize
22411 switch (strtoupper($v)) { //Not working 100%
22412 case 'CAPITALIZE':
22413 $this->capitalize=true;
22414 break;
22415 case 'UPPERCASE':
22416 $this->toupper=true;
22417 break;
22418 case 'LOWERCASE':
22419 $this->tolower=true;
22420 break;
22421 case 'NONE': break;
22422 }
22423 break;
22424
22425 case 'TEXT-SHADOW':
22426 $ts = $this->cssmgr->setCSStextshadow($v);
22427 if ($ts) { $this->textshadow = $ts; }
22428 break;
22429
22430 case 'HYPHENS': // mPDF 5.6.08
22431 if (strtoupper($v)=='NONE') {
22432 $this->textparam['hyphens'] = 2;
22433 }
22434 else if (strtoupper($v)=='AUTO') {
22435 $this->textparam['hyphens'] = 1;
22436 }
22437 else if (strtoupper($v)=='MANUAL') {
22438 $this->textparam['hyphens'] = 0;
22439 }
22440 break;
22441
22442 case 'TEXT-OUTLINE': // mPDF 5.6.07
22443 if (strtoupper($v)=='NONE') {
22444 $this->textparam['outline-s'] = false;
22445 }
22446 break;
22447
22448 case 'TEXT-OUTLINE-WIDTH': // mPDF 5.6.07
22449 case 'OUTLINE-WIDTH':
22450 switch(strtoupper($v)) {
22451 case 'THIN': $v = '0.03em'; break;
22452 case 'MEDIUM': $v = '0.05em'; break;
22453 case 'THICK': $v = '0.07em'; break;
22454 }
22455 $w = $this->ConvertSize($v,$this->blk[$this->blklvl]['inner_width'],$this->FontSize);
22456 if ($w) {
22457 $this->textparam['outline-WIDTH'] = $w;
22458 $this->textparam['outline-s'] = true;
22459 }
22460 else { $this->textparam['outline-s'] = false; }
22461 break;
22462
22463 case 'TEXT-OUTLINE-COLOR': // mPDF 5.6.07
22464 case 'OUTLINE-COLOR':
22465 if (strtoupper($v) == 'INVERT') {
22466 if ($this->colorarray) {
22467 $cor = $this->colorarray;
22468 $this->textparam['outline-COLOR'] = $this->_invertColor($cor);
22469 }
22470 else {
22471 $this->textparam['outline-COLOR'] = $this->ConvertColor(255);
22472 }
22473 }
22474 else {
22475 $cor = $this->ConvertColor($v);
22476 if ($cor) { $this->textparam['outline-COLOR'] = $cor ; }
22477 }
22478 break;
22479
22480 case 'COLOR': // font color
22481 $cor = $this->ConvertColor($v);
22482 if ($cor) {
22483 $this->colorarray = $cor;
22484 $this->SetTColor($cor);
22485 }
22486 break;
22487
22488
22489 }//end of switch($k)
22490
22491
22492 }//end of foreach
22493}
22494
22495/*-- END HTML-CSS --*/
22496
22497
22498function SetStyle($tag,$enable) {
22499 $this->$tag=$enable;
22500 $style='';
22501 foreach(array('B','I','U','S') as $s) {
22502 if($this->$s) {
22503 $style.=$s;
22504 }
22505 }
22506 if ($this->S && empty($this->upperCase)) { @include(_MPDF_PATH.'includes/upperCase.php'); }
22507 $this->currentfontstyle=$style;
22508 $this->SetFont('',$style,0,false);
22509}
22510
22511// Set multiple styles at one $str e.g. "BIS"
22512function SetStylesArray($arr) {
22513 $style='';
22514 foreach(array('B','I','U','S') as $s) {
22515 if (isset($arr[$s])) {
22516 if ($arr[$s]) {
22517 $this->$s = true;
22518 $style.=$s;
22519 }
22520 else { $this->$s = false; }
22521 }
22522 else if ($this->$s) { $style.=$s; }
22523 }
22524 $this->currentfontstyle=$style;
22525 $this->SetFont('',$style,0,false);
22526}
22527
22528// Set multiple styles at one $str e.g. "BIS"
22529function SetStyles($str) {
22530 $style='';
22531 foreach(array('B','I','U','S') as $s) {
22532 if (strpos($str,$s) !== false) {
22533 $this->$s = true;
22534 $style.=$s;
22535 }
22536 else { $this->$s = false; }
22537 }
22538 $this->currentfontstyle=$style;
22539 $this->SetFont('',$style,0,false);
22540}
22541
22542function ResetStyles() {
22543 foreach(array('B','I','U','S') as $s) {
22544 $this->$s = false;
22545 }
22546 $this->currentfontstyle='';
22547 $this->SetFont('','',0,false);
22548}
22549
22550
22551function DisableTags($str='')
22552{
22553 if ($str == '') //enable all tags
22554 {
22555 //Insert new supported tags in the long string below.
22556 $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
22557 }
22558 else
22559 {
22560 $str = explode(",",$str);
22561 foreach($str as $v) $this->enabledtags = str_replace(trim($v),'',$this->enabledtags);
22562 }
22563}
22564
22565
22566/*-- TABLES --*/
22567
22568function finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight) {
22569 $af = 0; // Above font
22570 $bf = 0; // Below font
22571 $mta = 0; // Maximum top-aligned
22572 $mba = 0; // Maximum bottom-aligned
22573 if ($lhxt['BS']) {
22574 $af = max($af, ($lhxt['BS'] - ($maxfontsize * (0.5 + $this->baselineC))));
22575 }
22576 if ($lhxt['M']) {
22577 $af = max($af, ($lhxt['M'] - $maxfontsize)/2);
22578 $bf = max($bf, ($lhxt['M'] - $maxfontsize)/2);
22579 }
22580 if ($lhxt['TT']) {
22581 $bf = max($bf, ($lhxt['TT'] - $maxfontsize));
22582 }
22583 if ($lhxt['TB']) {
22584 $af = max($af, ($lhxt['TB'] - $maxfontsize));
22585 }
22586 if ($lhxt['T']) {
22587 $mta = max($mta, $lhxt['T']);
22588 }
22589 if ($lhxt['B']) {
22590 $mba = max($mba, $lhxt['B']);
22591 }
22592 if ((!$lhfixed || !$forceExactLineheight) && ($af > (($maxlineHeight - $maxfontsize)/2) || $bf > (($maxlineHeight - $maxfontsize)/2))) {
22593 $maxlineHeight = $maxfontsize + $af + $bf;
22594 }
22595 else if (!$lhfixed) { $af = $bf = ($maxlineHeight - $maxfontsize)/2; }
22596 if ($mta > $maxlineHeight) {
22597 $bf += ($mta - $maxlineHeight);
22598 $maxlineHeight = $mta;
22599 }
22600 if ($mba > $maxlineHeight) {
22601 $af += ($mba - $maxlineHeight);
22602 $maxlineHeight = $mba;
22603 }
22604 return $maxlineHeight;
22605}
22606
22607function TableWordWrap($maxwidth, $forcewrap = 0, $textbuffer = '', $def_fontsize, $returnarray=false) { // NB ** returnarray used in flowchart
22608 $biggestword=0;
22609 $toonarrow=false;
22610
22611 $textbuffer[0][0] = preg_replace('/^[ ]*/','',$textbuffer[0][0]);
22612 if ((count($textbuffer) == 0) or ((count($textbuffer) == 1) && ($textbuffer[0][0] == ''))) { return 0; }
22613
22614 $text = '';
22615 $lhfixed = false;
22616 if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight)) { $lhfixed = true; }
22617 if ($lhfixed) { $def_lineheight = $this->_computeLineheight($this->table_lineheight, $def_fontsize);}
22618 else { $def_lineheight = 0; }
22619 // START OF NEW LINE
22620 // Initialise lineheight variables
22621 $maxfontsize = 0;
22622 $forceExactLineheight = true;
22623 $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
22624 $maxlineHeight = $def_lineheight ;
22625 $ch = 0;
22626 $width = 0;
22627 $ln = 1; // Counts line number
22628 $mxw = $this->GetCharWidth('W',false);
22629 for($cctr=0;$cctr<count($textbuffer);$cctr++) { // mPDF 5.6.22
22630 $chunk = $textbuffer[$cctr]; // mPDF 5.6.22
22631 $line = $chunk[0];
22632 //IMAGE
22633 if (substr($line,0,3) == "\xbb\xa4\xac") { //identifier has been identified!
22634 $objattr = $this->_getObjAttr($line);
22635 if ($objattr['type'] == 'nestedtable') {
22636 // END OF LINE
22637 // Finalise & add lineheight
22638 $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
22639 $level = $objattr['level'];
22640 $ih = $this->table[($level+1)][$objattr['nestedcontent']]['h']; // nested table width
22641 $ch += $ih;
22642 // START OF NEW LINE
22643 // Initialise lineheight variables
22644 $ln++;
22645 $maxfontsize = 0;
22646 $forceExactLineheight = true;
22647 $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
22648 $maxlineHeight = $def_lineheight ;
22649 $width = 0;
22650 $text = "";
22651 continue;
22652 }
22653
22654 list($skipln,$iw,$ih) = $this->inlineObject((isset($specialcontent['type']) ? $specialcontent['type'] : null),0,0, $objattr, $this->lMargin,$width,$maxwidth,$maxlineHeight,false,true);
22655 if ($objattr['type'] == 'hr') {
22656 // END OF LINE
22657 // Finalise & add lineheight
22658 $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
22659 // Add HR height
22660 $ch += $ih;
22661 // START OF NEW LINE
22662 // Initialise lineheight variables
22663 $ln++;
22664 $maxfontsize = 0;
22665 $forceExactLineheight = true;
22666 $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
22667 $maxlineHeight = $def_lineheight ;
22668 $width = 0;
22669 $text = "";
22670 continue;
22671 }
22672
22673 if ($skipln==1 || $skipln==-2) {
22674 // Finish last line
22675 // END OF LINE
22676 // Finalise & add lineheight
22677 $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
22678 // START OF NEW LINE
22679 // Initialise lineheight variables
22680 $maxfontsize = 0;
22681 $forceExactLineheight = true;
22682 $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
22683 $maxlineHeight = $def_lineheight ;
22684 $ln++;
22685 $width = 0;
22686 $text = "";
22687 }
22688 $va = (isset($objattr['vertical-align']) ? $objattr['vertical-align'] : null);
22689 if ($va) {
22690 $lhxt[$va] = max($lhxt[$va], $ih);
22691 }
22692 if ($lhfixed && $ih > $def_fontsize) { $forceExactLineheight = false; }
22693 $maxlineHeight = max($maxlineHeight ,$ih);
22694 $width += $iw;
22695 continue;
22696 }
22697
22698 // SET FONT SIZE/STYLE from $chunk[n]
22699 // FONTSIZE
22700 if(isset($chunk[11]) and $chunk[11] != '') {
22701 if ($this->shrin_k) {
22702 $this->SetFontSize($chunk[11]/$this->shrin_k,false);
22703 }
22704 else {
22705 $this->SetFontSize($chunk[11],false);
22706 }
22707 }
22708 if ($line == "\n") {
22709 // END OF LINE
22710 $maxfontsize = max($maxfontsize,$this->FontSize);
22711 $fh = $this->_computeLineheight($this->table_lineheight);
22712 if ($lhfixed && $this->FontSize > $def_fontsize) {
22713 $fh = $this->FontSize;
22714 $forceExactLineheight = false;
22715 }
22716 $maxlineHeight = max($maxlineHeight,$fh);
22717
22718 // Finalise & add lineheight
22719 $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
22720 // START OF NEW LINE
22721 // Initialise lineheight variables
22722 $maxfontsize = 0;
22723 $forceExactLineheight = true;
22724 $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
22725 $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
22726 $ln++;
22727 $text = "";
22728 $width = 0;
22729 if(isset($chunk[11]) and $chunk[11] != '') {
22730 $this->SetFontSize($this->default_font_size,false);
22731 }
22732 continue;
22733 }
22734
22735 $lbw = $rbw = 0; // Border widths
22736 if(isset($chunk[16]) && !empty($chunk[16])) { //Border
22737 $this->spanborddet = $chunk[16];
22738 if (isset($this->spanborddet['L'])) $lbw = $this->spanborddet['L']['w'];
22739 if (isset($this->spanborddet['R'])) $rbw = $this->spanborddet['R']['w'];
22740 }
22741 if(isset($chunk[15])) { // Word spacing
22742 $this->wSpacingCSS = $chunk[15];
22743 if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') {
22744 $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
22745 }
22746 }
22747 if(isset($chunk[14])) { // Letter spacing
22748 $this->lSpacingCSS = $chunk[14];
22749 if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
22750 $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
22751 }
22752 }
22753 if(isset($chunk[13])) { // Font Kerning
22754 $this->kerning = $chunk[13];
22755 }
22756 if(isset($chunk[9])) { // Text params - Outline, hyphens // mPDF 5.6.08
22757 $this->textparam = $chunk[9];
22758 }
22759 // FONTFAMILY
22760 if(isset($chunk[4]) and $chunk[4] != '') { $font = $this->SetFont($chunk[4],$this->FontStyle,0,false); }
22761
22762 // FONT STYLE B I U
22763 if(isset($chunk[2]) and $chunk[2] != '') {
22764 $this->SetStyles($chunk[2]);
22765 }
22766
22767 $space = $this->GetCharWidth(' ',false);
22768
22769 if (mb_substr($line,0,1,$this->mb_enc ) == ' ') { // line (chunk) starts with a space
22770 $width += $space;
22771 $text .= ' ';
22772 }
22773
22774 if (mb_substr($line,(mb_strlen($line,$this->mb_enc )-1),1,$this->mb_enc ) == ' ') { $lsend = true; } // line (chunk) ends with a space
22775 else { $lsend = false; }
22776 $line= trim($line);
22777 if ($line == '') { continue; }
22778
22779 // mPDF ITERATION
22780 if ($this->iterationCounter) $line = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/','\\1', $line);
22781
22782 $words = explode(' ', $line);
22783
22784 foreach ($words as $k=>$word) {
22785 $word = trim($word);
22786 $wordwidth = $this->GetStringWidth($word);
22787 if ($k==0) { $wordwidth += $lbw; }
22788 if ($k==(count($words)-1)) { $wordwidth += $rbw; }
22789 //maxwidth is insufficient for one word
22790 if ($wordwidth > $maxwidth + 0.0001) {
22791 $firstchunk=true;
22792 while($wordwidth > $maxwidth + 0.0001) {
22793 $chw = 0; // check width
22794 $oneCJKorphan = false;
22795 $mlen = mb_strlen($word, $this->mb_enc );
22796 for ( $i = 0; $i < $mlen; $i++ ) {
22797 $chw = $this->GetStringWidth(mb_substr($word,0,$i+1,$this->mb_enc ));
22798 if ($k==0) { $chw += $lbw; }
22799 if ($k==(count($words)-1)) { $chw += $rbw; }
22800 if ($chw > $maxwidth) {
22801 if ($i==0 && $firstchunk) {
22802 // If first letter of line does not fit
22803 $wordwidth = $maxwidth - 0.0001;
22804 if ($this->debug) { $this->Error("Table cell width calculated less than that needed for one character!"); }
22805 break;
22806 }
22807/*-- CJK-FONTS --*/
22808 // mPDF 5.6.40 mPDF 5.6.44
22809 if ($this->checkCJK && !$this->usingCoreFont && preg_match("/[".$this->pregCJKchars."]/u", $word)) { // mPDF 5.6.44
22810 if (!$oneCJKorphan && preg_match('/['.$this->CJKoverflow.']$/u',mb_substr($word,0,$i+1,$this->mb_enc )) && $this->allowCJKorphans) {
22811 $wordwidth = $maxwidth - 0.0001;
22812 $oneCJKorphan = true;
22813 continue;
22814 }
22815 $cjkfix = 0;
22816 // Last character that fits is not allowed to end a line - move lastchar(s) to start of next line
22817 if ($i>0 && preg_match("/[".$this->CJKleading."$]/u", mb_substr($word,0,$i,$this->mb_enc ))) {
22818 $cjkfix = 1;
22819 }
22820 // Next character is not allowed to start a new line
22821 else if (preg_match("/[".$this->CJKfollowing."]/u", mb_substr($word,$i,1,$this->mb_enc ))) {
22822 // try squeezing another character(s) onto this line = Oikomi
22823 if ($this->allowCJKorphans && !$oneCJKorphan) {
22824 //if lookahead is not another following char
22825 if ($i==($mlen-1) || ($i<($mlen-1) && !preg_match("/[".$this->CJKfollowing."]/u", mb_substr($word,$i+1,1,$this->mb_enc )))) {
22826 $wordwidth = $maxwidth - 0.0001;
22827 $oneCJKorphan = true;
22828 continue;
22829 }
22830 }
22831 // or move lastchar(s) to next line
22832 $cjkfix = 2;
22833 }
22834 // mPDF 5.6.42
22835 // CJK numerals kept together
22836 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 ))) {
22837 $cjkfix = 3;
22838 }
22839 if ($cjkfix) {
22840 //move lastchar(s) to next line
22841 $m0 = mb_substr($word,$i-1,1,$this->mb_enc ); // chars to move
22842 $m1 = mb_substr($word,0,$i-1,$this->mb_enc ); // str after stripped chars to move
22843 $mi = $i - 1;
22844 if ($cjkfix == 3) { $match = "0-9\x{ff10}-\x{ff19}"; }
22845 else { $match = $this->CJKleading; }
22846 while(preg_match("/[".$match."$]/u", $m1) && mb_strlen($m1, $this->mb_enc)>2) {
22847 $m0 = mb_substr($m1,$mi-1,1,$this->mb_enc ).$m0; // chars to move
22848 $m1 = mb_substr($m1,0,$mi-1,$this->mb_enc ); // str after stripped chars to move
22849 $mi--;
22850 }
22851 // Insert $m0 into $word at $i
22852 $word = mb_substr($word,0,$i,$this->mb_enc ) . $m0 . mb_substr($word,$i,mb_strlen($word, $this->mb_enc )-$i,$this->mb_enc );
22853 $mlen = mb_strlen($word, $this->mb_enc ); // increment max for loop counter
22854 }
22855
22856
22857
22858 }
22859/*-- END CJK-FONTS --*/
22860
22861 if ($text && $firstchunk) {
22862 // END OF LINE
22863 // Finalise & add lineheight
22864 $maxfontsize = max($maxfontsize,$this->FontSize);
22865 $fh = $this->_computeLineheight($this->table_lineheight);
22866 if ($lhfixed && $this->FontSize > $def_fontsize) {
22867 $fh = $this->FontSize;
22868 $forceExactLineheight = false;
22869 }
22870 $maxlineHeight = max($maxlineHeight,$fh);
22871 $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
22872 // START OF NEW LINE
22873 // Initialise lineheight variables
22874 $maxfontsize = $this->FontSize;
22875 $forceExactLineheight = true;
22876 $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
22877 $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
22878 $ln++;
22879 }
22880 // END OF LINE
22881 // Finalise & add lineheight
22882 $maxfontsize = max($maxfontsize,$this->FontSize);
22883 $fh = $this->_computeLineheight($this->table_lineheight);
22884 if ($lhfixed && $this->FontSize > $def_fontsize) {
22885 $fh = $this->FontSize;
22886 $forceExactLineheight = false;
22887 }
22888 $maxlineHeight = max($maxlineHeight,$fh);
22889 $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
22890 // START OF NEW LINE
22891 // Initialise lineheight variables
22892 $maxfontsize = $this->FontSize;
22893 $forceExactLineheight = true;
22894 $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
22895 $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
22896 $ln++;
22897 $mxw = $maxwidth;
22898 $text = mb_substr($word,0,$i,$this->mb_enc );
22899 $word = mb_substr($word,$i,mb_strlen($word, $this->mb_enc )-$i,$this->mb_enc );
22900 $wordwidth = $this->GetStringWidth($word);
22901 $width = 0;
22902 $firstchunk=false;
22903 break;
22904 }
22905 }
22906 if (mb_strlen($word, $this->mb_enc )<2 && $wordwidth > $maxwidth + 0.0001) {
22907 $wordwidth = $maxwidth - 0.0001;
22908 if ($this->debug) { $this->Error("Table cell width calculated less than that needed for single character!"); }
22909 }
22910 $firstchunk=false;
22911 }
22912 }
22913 // Word fits on line...
22914 if ($width + $wordwidth < $maxwidth + 0.0001) {
22915 $mxw = max($mxw, ($width+$wordwidth));
22916 $width += $wordwidth + $space;
22917 $text .= $word.' ';
22918 }
22919 // Word does not fit on line...
22920 else {
22921 // mPDF 5.6.21 hard hyphens
22922 if ($this->textparam['hyphens'] != 2 && preg_match('/\-/',$word)) {
22923 list($hardsuccess,$pre,$post,$prelength) = $this->hardHyphenate($word, ($maxwidth - $width)-$this->GetCharWidth("-", false));
22924 if ($hardsuccess) {
22925 $text .= $pre.'-';
22926 $word = $post;
22927 $wordwidth = $this->GetStringWidth($word);
22928 if ($k==(count($words)-1)) { $wordwidth += $rbw; }
22929 }
22930 }
22931/*-- HYPHENATION --*/
22932 // Soft Hyphens chr(173)
22933 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
22934 list($success,$pre,$post,$prelength) = $this->softHyphenate($word, ($maxwidth - $width));
22935 if ($success) {
22936 $text .= $pre.'-';
22937 $word = $post;
22938 $wordwidth = $this->GetStringWidth($word);
22939 if ($k==(count($words)-1)) { $wordwidth += $rbw; }
22940 }
22941 }
22942 else if ($this->textparam['hyphens'] == 1) { // mPDF 5.6.06 5.6.08
22943 list($success,$pre,$post,$prelength) = $this->hyphenateWord($word, ($maxwidth - $width));
22944 if ($success) {
22945 $text .= $pre.'-';
22946 $word = $post;
22947 $wordwidth = $this->GetStringWidth($word);
22948 if ($k==(count($words)-1)) { $wordwidth += $rbw; }
22949 }
22950 }
22951/*-- END HYPHENATION --*/
22952
22953
22954 // mPDF 5.6.22
22955 if ( count($textbuffer)>1 && $cctr > 0 && $k==0
22956 && (substr($textbuffer[$cctr][0],0,3) != "\xbb\xa4\xac")
22957 && (substr($textbuffer[$cctr-1][0],0,3) != "\xbb\xa4\xac")
22958 && substr($textbuffer[$cctr-1][0],-1,1) != ' '
22959 && substr($textbuffer[$cctr][0],0,1) != ' '
22960 ) {
22961 // Go back to find a space in a previous chunk of content
22962 $found = false;
22963 for ($ix=$cctr-1;$ix>=0;$ix--) {
22964 if (preg_match('/[ ]/',$textbuffer[$ix][0])) { $found = $ix; break; }
22965 }
22966 if ($found !== false) {
22967 $charpos = strrpos($textbuffer[$found][0],' ');
22968 // mPDF 5.6.24
22969 $a1 = $a2 = $textbuffer[$found];
22970 $a1[0] = "\n";
22971 $a2[0] = substr($textbuffer[$found][0], $charpos+1, strlen($textbuffer[$found][0])-$charpos);
22972 $textbuffer[$found][0] = substr($textbuffer[$found][0], 0, $charpos);
22973 array_insert($textbuffer, $a1, $found+1);
22974 array_insert($textbuffer, $a2, $found+2);
22975 // Initialise all variables
22976 $biggestword=0;
22977 $toonarrow=false;
22978 $lhfixed = false;
22979 if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight)) { $lhfixed = true; }
22980 if ($lhfixed) { $def_lineheight = $this->_computeLineheight($this->table_lineheight, $def_fontsize);}
22981 else { $def_lineheight = 0; }
22982 $maxfontsize = 0;
22983 $forceExactLineheight = true;
22984 $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
22985 $maxlineHeight = $def_lineheight ;
22986 $ch = 0;
22987 $width = 0;
22988 $ln = 1; // Counts line number
22989 $mxw = $this->GetCharWidth('W',false);
22990 $text = '';
22991
22992 $cctr = -1;
22993 break;
22994 }
22995 }
22996
22997 // END OF LINE
22998 // Finalise & add lineheight
22999 $maxfontsize = max($maxfontsize,$this->FontSize);
23000 $fh = $this->_computeLineheight($this->table_lineheight);
23001 if ($lhfixed && $this->FontSize > $def_fontsize) {
23002 $fh = $this->FontSize;
23003 $forceExactLineheight = false;
23004 }
23005 $maxlineHeight = max($maxlineHeight,$fh);
23006 $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
23007 $mxw = $maxwidth;
23008 // START OF NEW LINE
23009 // Initialise lineheight variables
23010 $maxfontsize = $this->FontSize;
23011 $forceExactLineheight = true;
23012 $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
23013 $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
23014 $ln++;
23015 $width = $wordwidth + $space;
23016 $text = $word.' ';
23017 }
23018 $maxfontsize = max($maxfontsize,$this->FontSize);
23019 $fh = $this->_computeLineheight($this->table_lineheight);
23020 if ($lhfixed && $this->FontSize > $def_fontsize) {
23021 $fh = $this->FontSize;
23022 $forceExactLineheight = false;
23023 }
23024 $maxlineHeight = max($maxlineHeight,$fh);
23025 }
23026
23027 // End of textbuffer chunk
23028 if (!$lsend) {
23029 $width -= $space;
23030 $text = rtrim($text);
23031 }
23032
23033 // RESET FONT SIZE/STYLE
23034 // RESETTING VALUES
23035 //Now we must deactivate what we have used
23036 if(isset($chunk[2]) and $chunk[2] != '') {
23037 $this->ResetStyles();
23038 }
23039 if(isset($chunk[4]) and $chunk[4] != '') {
23040 $this->SetFont($this->default_font,$this->FontStyle,0,false);
23041 }
23042 if(isset($chunk[11]) and $chunk[11] != '') {
23043 $this->SetFontSize($this->default_font_size,false);
23044 }
23045 $this->spanborddet = array();
23046 $this->kerning = false;
23047 $this->lSpacingCSS = '';
23048 $this->wSpacingCSS = '';
23049 $this->fixedlSpacing = false;
23050 $this->minwSpacing = 0;
23051 }
23052 // Finalise lineheight if something output on line and add
23053 if ($width) {
23054 $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
23055 }
23056 if ($returnarray) { return array($ch,$ln,$mxw); }
23057 else { return $ch; }
23058
23059}
23060
23061
23062function TableCheckMinWidth($maxwidth, $forcewrap = 0, $textbuffer) {
23063 $biggestword=0;
23064 $toonarrow=false;
23065 if ((count($textbuffer) == 0) or ((count($textbuffer) == 1) && ($textbuffer[0][0] == ''))) { return 0; }
23066
23067 foreach ($textbuffer as $chunk) {
23068
23069 $line = $chunk[0];
23070 // mPDF ITERATION
23071 if ($this->iterationCounter) $line = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/','\\1', $line);
23072
23073 // IMAGES & FORM ELEMENTS
23074 if (substr($line,0,3) == "\xbb\xa4\xac") { //inline object - FORM element or IMAGE!
23075 $objattr = $this->_getObjAttr($line);
23076 if ($objattr['type']!='hr' && isset($objattr['width']) && ($objattr['width']/$this->shrin_k) > ($maxwidth + 0.0001) ) {
23077 if (($objattr['width']/$this->shrin_k) > $biggestword) { $biggestword = ($objattr['width']/$this->shrin_k); }
23078 $toonarrow=true;
23079 }
23080 continue;
23081 }
23082
23083 if ($line == "\n") {
23084 continue;
23085 }
23086 $line = trim($line );
23087 // SET FONT SIZE/STYLE from $chunk[n]
23088
23089 // FONTSIZE
23090 if(isset($chunk[11]) and $chunk[11] != '') {
23091 if ($this->shrin_k) {
23092 $this->SetFontSize($chunk[11]/$this->shrin_k,false);
23093 }
23094 else {
23095 $this->SetFontSize($chunk[11],false);
23096 }
23097 }
23098 // FONTFAMILY
23099 if(isset($chunk[4]) and $chunk[4] != '') { $font = $this->SetFont($chunk[4],$this->FontStyle,0,false); }
23100 // B I U
23101 if(isset($chunk[2]) and $chunk[2] != '') {
23102 $this->SetStyles($chunk[2]);
23103 }
23104
23105 $lbw = $rbw = 0; // Border widths
23106 if(isset($chunk[16]) && !empty($chunk[16])) { //Border
23107 $this->spanborddet = $chunk[16];
23108 $lbw = $this->spanborddet['L']['w'];
23109 $rbw = $this->spanborddet['R']['w'];
23110 }
23111 if(isset($chunk[15])) { // Word spacing
23112 $this->wSpacingCSS = $chunk[15];
23113 if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') {
23114 $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
23115 }
23116 }
23117 if(isset($chunk[14])) { // Letter spacing
23118 $this->lSpacingCSS = $chunk[14];
23119 if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
23120 $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
23121 }
23122 }
23123 if(isset($chunk[13])) { // Font Kerning
23124 $this->kerning = $chunk[13];
23125 }
23126
23127 $words = explode(' ', $line);
23128 foreach ($words as $k=>$word) {
23129 $word = trim($word);
23130 $wordwidth = $this->GetStringWidth($word);
23131 if ($k==0) { $wordwidth += $lbw; }
23132 if ($k==(count($words)-1)) { $wordwidth += $rbw; }
23133
23134 //Warn user that maxwidth is insufficient
23135 if ($wordwidth > $maxwidth + 0.0001) {
23136 if ($wordwidth > $biggestword) { $biggestword = $wordwidth; }
23137 $toonarrow=true;
23138 }
23139 }
23140
23141 // RESET FONT SIZE/STYLE
23142 // RESETTING VALUES
23143 //Now we must deactivate what we have used
23144 if(isset($chunk[2]) and $chunk[2] != '') {
23145 $this->ResetStyles();
23146 }
23147 if(isset($chunk[4]) and $chunk[4] != '') {
23148 $this->SetFont($this->default_font,$this->FontStyle,0,false);
23149 }
23150 if(isset($chunk[11]) and $chunk[11] != '') {
23151 $this->SetFontSize($this->default_font_size,false);
23152 }
23153 $this->spanborddet = array();
23154 $this->kerning = false;
23155 $this->lSpacingCSS = '';
23156 $this->wSpacingCSS = '';
23157 $this->fixedlSpacing = false;
23158 $this->minwSpacing = 0;
23159 }
23160
23161 //Return -(wordsize) if word is bigger than maxwidth
23162 // ADDED
23163 if (($toonarrow) && ($this->table_error_report)) {
23164 $this->Error("Word is too long to fit in table - ".$this->table_error_report_param);
23165 }
23166 if ($toonarrow) return -$biggestword;
23167 else return 1;
23168}
23169
23170function shrinkTable(&$table,$k) {
23171 $table['border_spacing_H'] /= $k;
23172 $table['border_spacing_V'] /= $k;
23173
23174 $table['padding']['T'] /= $k;
23175 $table['padding']['R'] /= $k;
23176 $table['padding']['B'] /= $k;
23177 $table['padding']['L'] /= $k;
23178
23179 $table['margin']['T'] /= $k;
23180 $table['margin']['R'] /= $k;
23181 $table['margin']['B'] /= $k;
23182 $table['margin']['L'] /= $k;
23183
23184 $table['border_details']['T']['w'] /= $k;
23185 $table['border_details']['R']['w'] /= $k;
23186 $table['border_details']['B']['w'] /= $k;
23187 $table['border_details']['L']['w'] /= $k;
23188
23189 if (isset($table['max_cell_border_width']['T'])) $table['max_cell_border_width']['T'] /= $k;
23190 if (isset($table['max_cell_border_width']['R'])) $table['max_cell_border_width']['R'] /= $k;
23191 if (isset($table['max_cell_border_width']['B'])) $table['max_cell_border_width']['B'] /= $k;
23192 if (isset($table['max_cell_border_width']['L'])) $table['max_cell_border_width']['L'] /= $k;
23193
23194 if ($this->simpleTables){
23195 $table['simple']['border_details']['T']['w'] /= $k;
23196 $table['simple']['border_details']['R']['w'] /= $k;
23197 $table['simple']['border_details']['B']['w'] /= $k;
23198 $table['simple']['border_details']['L']['w'] /= $k;
23199 }
23200
23201 $table['miw'] /= $k;
23202 $table['maw'] /= $k;
23203
23204 if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
23205
23206 for($j = 0 ; $j < $table['nc'] ; $j++ ) { //columns
23207
23208 $table['wc'][$j]['miw'] /= $k;
23209 $table['wc'][$j]['maw'] /= $k;
23210
23211 // mPDF 5.6.13
23212 if (isset($table['decimal_align'][$j]['maxs0']) && $table['decimal_align'][$j]['maxs0']) { $table['decimal_align'][$j]['maxs0'] /= $k; }
23213 if (isset($table['decimal_align'][$j]['maxs1']) && $table['decimal_align'][$j]['maxs1']) { $table['decimal_align'][$j]['maxs1'] /= $k; }
23214
23215 if (isset($table['wc'][$j]['absmiw']) && $table['wc'][$j]['absmiw'] ) $table['wc'][$j]['absmiw'] /= $k;
23216
23217 for($i = 0 ; $i < $table['nr']; $i++ ) { //rows
23218 if ($this->cacheTables) {
23219 $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
23220 }
23221 else
23222 $c = &$table['cells'][$i][$j];
23223 if (isset($c) && $c) {
23224 if (!$this->simpleTables){
23225 if ($this->packTableData) {
23226 $cell = $this->_unpackCellBorder($c['borderbin'] );
23227 $cell['border_details']['T']['w'] /= $k;
23228 $cell['border_details']['R']['w'] /= $k;
23229 $cell['border_details']['B']['w'] /= $k;
23230 $cell['border_details']['L']['w'] /= $k;
23231 $cell['border_details']['mbw']['TL'] /= $k;
23232 $cell['border_details']['mbw']['TR'] /= $k;
23233 $cell['border_details']['mbw']['BL'] /= $k;
23234 $cell['border_details']['mbw']['BR'] /= $k;
23235 $cell['border_details']['mbw']['LT'] /= $k;
23236 $cell['border_details']['mbw']['LB'] /= $k;
23237 $cell['border_details']['mbw']['RT'] /= $k;
23238 $cell['border_details']['mbw']['RB'] /= $k;
23239 $c['borderbin'] = $this->_packCellBorder($cell);
23240 }
23241 else {
23242 $c['border_details']['T']['w'] /= $k;
23243 $c['border_details']['R']['w'] /= $k;
23244 $c['border_details']['B']['w'] /= $k;
23245 $c['border_details']['L']['w'] /= $k;
23246 $c['border_details']['mbw']['TL'] /= $k;
23247 $c['border_details']['mbw']['TR'] /= $k;
23248 $c['border_details']['mbw']['BL'] /= $k;
23249 $c['border_details']['mbw']['BR'] /= $k;
23250 $c['border_details']['mbw']['LT'] /= $k;
23251 $c['border_details']['mbw']['LB'] /= $k;
23252 $c['border_details']['mbw']['RT'] /= $k;
23253 $c['border_details']['mbw']['RB'] /= $k;
23254 }
23255 }
23256 $c['padding']['T'] /= $k;
23257 $c['padding']['R'] /= $k;
23258 $c['padding']['B'] /= $k;
23259 $c['padding']['L'] /= $k;
23260 $c['maxs'] /= $k;
23261 if (isset($c['w'])) { $c['w'] /= $k; }
23262 $c['s'] /= $k;
23263 $c['maw'] /= $k;
23264 $c['miw'] /= $k;
23265 if (isset($c['absmiw'])) $c['absmiw'] /= $k;
23266 if (isset($c['nestedmaw'])) $c['nestedmaw'] /= $k;
23267 if (isset($c['nestedmiw'])) $c['nestedmiw'] /= $k;
23268 if (isset($c['textbuffer'])) {
23269 foreach($c['textbuffer'] AS $n=>$tb) {
23270 if (!empty($tb[16])) {
23271 $c['textbuffer'][$n][16]['T']['w'] /= $k;
23272 $c['textbuffer'][$n][16]['B']['w'] /= $k;
23273 $c['textbuffer'][$n][16]['L']['w'] /= $k;
23274 $c['textbuffer'][$n][16]['R']['w'] /= $k;
23275 }
23276 }
23277 }
23278 if ($this->cacheTables) {
23279 $this->_cacheCell($c, '', "W", $fh, $table['cells'][$i][$j]);
23280 }
23281 unset($c);
23282 }
23283 }//rows
23284 }//columns
23285 if ($this->cacheTables) { fclose($fh); }
23286}
23287
23288function _cacheCell($c, $file, $mode="A", $fh=null, $offset=0) { // mode = Append or (over)Write (needs offset and fh)
23289 // Requires either $file OR $fh (file_handle)
23290 if (!is_array($c) || !isset($c)) { return ''; }
23291
23292 if(isset($c['w'])) { $cw = $c['w']; } else { $cw = -1; }
23293 if(isset($c['w0'])) { $cw0 = $c['w0']; } else { $cw0 = -1; }
23294 if(isset($c['h0'])) { $ch0 = $c['h0']; } else { $ch0 = -1; }
23295
23296 $data = pack("n2d19A1A1n2sA32A128",
23297 $c['colspan'], /* n (16 bit; 2 bytes) [pos 0] */
23298 $c['rowspan'], /* n (16 bit; 2 bytes) [pos 2] */
23299 $c['s'], /* d NB machine-dependent size (64 bit; 8 bytes on test winOS) [pos 4] */
23300 $c['maxs'], /* d NB machine-dependent size [pos 4 + 1*D] */
23301 $c['nestedmaw'], /* d NB machine-dependent size [pos 4 + 2*D] */
23302 $c['nestedmiw'], /* d NB machine-dependent size [pos 4 + 3*D] */
23303 $c['padding']['L'], /* d NB machine-dependent size [pos 4 + 4*D] */
23304 $c['padding']['R'], /* d NB machine-dependent size [pos 4 + 5*D] */
23305 $c['padding']['T'], /* d NB machine-dependent size [pos 4 + 6*D] */
23306 $c['padding']['B'], /* d NB machine-dependent size [pos 4 + 7*D] */
23307 $c['dfs'], /* d NB machine-dependent size [pos 4 + 8*D] */
23308 $cw, /* d NB machine-dependent size [pos 4 + 9*D] */
23309 $c['h'], /* d NB machine-dependent size [pos 4 + 10*D] */
23310 $c['absmiw'], /* d NB machine-dependent size [pos 4 + 11*D] */
23311 $c['maw'], /* d NB machine-dependent size [pos 4 + 12*D] */
23312 $c['miw'], /* d NB machine-dependent size [pos 4 + 13*D] */
23313 $c['mih'], /* d NB machine-dependent size [pos 4 + 14*D] */
23314 $c['x0'], /* d NB machine-dependent size [pos 4 + 15*D] */
23315 $cw0, /* d NB machine-dependent size [pos 4 + 16*D] */
23316 $c['y0'], /* d NB machine-dependent size [pos 4 + 17*D] */
23317 $ch0, /* d NB machine-dependent size [pos 4 + 18*D] */
23318 $c['a'], /* A1 (1 byte) [pos 4 + 19*D] */
23319 $c['va'], /* A1 (1 byte) [pos 5 + 19*D] */
23320 $c['nowrap'], /* 1 or blank n (16 bit; 2 bytes) [pos 6 + 19*D] */
23321 $c['wpercent'], /* 0 - 100 n (16 bit; 2 bytes) [pos 8 + 19*D] */
23322 $c['R'], /* 90 or -90 s (16 bit; 2 bytes) [pos 10 + 19*D] */
23323 $c['bgcolor'], /* A32 (32 bytes) [pos 12 + 19*D] */
23324 $c['gradient'] /* A128 (128 bytes) [pos 44 + 19*D] */
23325 );
23326
23327 if ($c['background-image']) {
23328 $data .= pack("n2d2A6A6n3dA4A128",
23329 strlen($data), /* offset in main data to start of bgimage data */
23330 $c['background-image']['image_id'], /* n */
23331 $c['background-image']['orig_w'], /* d NB machine-dependent size */
23332 $c['background-image']['orig_h'], /* d NB machine-dependent size */
23333 $c['background-image']['x_pos'], /* A6 calc size or "50%" */
23334 $c['background-image']['y_pos'], /* A6 calc size or "50%" */
23335 $c['background-image']['x_repeat'], /* n true or false*/
23336 $c['background-image']['y_repeat'], /* n true or false */
23337 $c['background-image']['resize'], /* n 0 - 6 */
23338 $c['background-image']['opacity'], /* d 0-1 */
23339 $c['background-image']['itype'], /* A4 jpg etc */
23340 $c['background-image']['gradient'] /* A128 CSS string */
23341 );
23342 }
23343 else $data .= pack("n",0);
23344 $tb_offset = 2 + 186 + 2 + strlen($data);
23345 $stb = serialize($c['textbuffer']).' '; // buffer to allow updating in reverseTableDir
23346 $lentb = strlen($stb);
23347 $data2 = pack("nA".$lentb, $lentb, $stb);
23348
23349 $tempfh = true;
23350 if ($mode=="W" && $offset) {
23351 if (!$fh) { $fh = fopen($file, "r+b"); } // Overwrite (but not truncate)
23352 else $tempfh = false;
23353 fseek($fh, $offset);
23354 }
23355 else {
23356 $fh = fopen($file, "ab"); // APPEND
23357 }
23358 fwrite($fh, pack("n",$tb_offset)); // Offset to Text buffer 2 bytes
23359 fwrite($fh, $c['borderbin']); // border details 186 bytes
23360 fwrite($fh, pack("n",strlen($data))); // Length of Main data
23361 fwrite($fh, $data); // Main data
23362 fwrite($fh, $data2); // Text buffer (starts with "n" length of text buffer)
23363 if ($tempfh) fclose($fh);
23364 return ($tb_offset + 2 + $lentb);
23365}
23366
23367function _cacheUpdateTxB($c, $fh, $offset) {
23368 fseek($fh, $offset);
23369 $tb_offset = $this->read_short($fh); // First entry = Offset to Text buffer 2 bytes
23370 fseek($fh, ($tb_offset-2), SEEK_CUR);
23371 $lentb = $this->read_short($fh); // First entry in textbuffer = Length of serialized textbuffer - do not update
23372 $stb = serialize($c['textbuffer']);
23373 fwrite($fh, pack("A".$lentb, $stb));
23374}
23375
23376function _cacheUpdateBorder($c, $fh, $offset) {
23377 $offset += 2;
23378 fseek($fh, $offset);
23379 fwrite($fh, $c['borderbin']);
23380}
23381
23382function _cacheUpdateMtx($c, $fh, $offset, $var) {
23383 if ($var=='mih') { $offset += (2 + 186 + 2 + 4 + 14*_DSIZE); }
23384 else if ($var=='x0') { $offset += (2 + 186 + 2 + 4 + 15*_DSIZE); } // x0 and w0
23385 else if ($var=='y0') { $offset += (2 + 186 + 2 + 4 + 17*_DSIZE); } // y0 and h0
23386 fseek($fh, $offset);
23387 if ($var=='mih') { fwrite($fh, pack("d",$c['mih'])); }
23388 else if ($var=='x0') { fwrite($fh, pack("d2",$c['x0'],$c['w0'])); }
23389 else if ($var=='y0') { fwrite($fh, pack("d2",$c['y0'],$c['h0'])); }
23390}
23391
23392function _uncacheCell($ptr, $file, $fh) {
23393 // Requires either $file or $fh (file_handle)
23394 if ($ptr==0) { return null; }
23395 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 "); }
23396 $tempfh = true;
23397 if (!$fh) { $fh = fopen($file, "rb"); }
23398 else $tempfh = false;
23399 fseek($fh, $ptr);
23400 $c = array();
23401 $tb_offset = $this->read_short($fh); // First entry = Offset to Text buffer 2 bytes
23402 $c['borderbin'] = fread($fh,186); // border details 186 bytes
23403 $maindatalen = $this->read_short($fh); // Length of Main data (2 bytes)
23404 $str = fread($fh,$maindatalen ); // Main data
23405 $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);
23406
23407 if ($data['colspan']>0) $c['colspan'] = $data['colspan']; /* n */
23408 if ($data['rowspan']>0) $c['rowspan'] = $data['rowspan']; /* n */
23409 $c['s'] = $data['s']; /* d NB machine-dependent size */
23410 $c['maxs'] = $data['maxs']; /* d NB machine-dependent size */
23411 if ($data['nmaw']>0) $c['nestedmaw'] = $data['nmaw']; /* d NB machine-dependent size */
23412 if ($data['nmiw']>0) $c['nestedmiw'] = $data['nmiw']; /* d NB machine-dependent size */
23413 $c['padding']['L'] = $data['pl']; /* d NB machine-dependent size */
23414 $c['padding']['R'] = $data['pr']; /* d NB machine-dependent size */
23415 $c['padding']['T'] = $data['pt']; /* d NB machine-dependent size */
23416 $c['padding']['B'] = $data['pb']; /* d NB machine-dependent size */
23417 $c['dfs'] = $data['dfs']; /* d NB machine-dependent size */
23418 if ($data['w']>=0) $c['w'] = $data['w']; /* d NB machine-dependent size */
23419 if ($data['h']>0) $c['h'] = $data['h']; /* d NB machine-dependent size */
23420 if ($data['absmiw']>0) $c['absmiw'] = $data['absmiw']; /* d NB machine-dependent size */
23421 if ($data['maw']>0) $c['maw'] = $data['maw']; /* d NB machine-dependent size */
23422 if ($data['miw']>0) $c['miw'] = $data['miw']; /* d NB machine-dependent size */
23423 if ($data['mih']>0) $c['mih'] = $data['mih']; /* d NB machine-dependent size */
23424 if ($data['w0']>=0) { $c['w0'] = $data['w0']; /* d NB machine-dependent size */
23425 $c['x0'] = $data['x0']; } /* d NB machine-dependent size */
23426 if ($data['h0']>=0) { $c['h0'] = $data['h0']; /* d NB machine-dependent size */
23427 $c['y0'] = $data['y0']; } /* d NB machine-dependent size */
23428 $c['a'] = trim($data['a']); /* A1 */
23429 $c['va'] = trim($data['va']); /* A1 */
23430 if ($data['nowrap']) $c['nowrap'] = $data['nowrap']; /* 1 or blank n */
23431 else $c['nowrap'] = false;
23432 if ($data['wpercent']>0) $c['wpercent'] = $data['wpercent']; /* 0 - 100 n */
23433 if ($data['R']<>0) $c['R'] = $data['R']; /* 90 or -90 s */
23434 else $c['R'] = false;
23435 $c['bgcolor'] = trim($data['bgcol']); /* A32 */
23436 if (trim($data['grad']))
23437 $c['gradient'] = trim($data['grad']); /* A128 */
23438 else $c['gradient'] = false;
23439 if ($data['bgimage']>0) {
23440 $bgidata = substr($str, ($data['bgimage']+2));
23441 $c['background-image'] = unpack("nimage_id/dorig_w/dorig_h/A6x_pos/A6y_pos/nx_repeat/ny_repeat/nresize/dopacity/A4itype/A128gradient", $bgidata);
23442 }
23443
23444 $tblen = $this->read_short($fh); // Length of Textbuffer
23445 $tbsp = fread($fh,$tblen); // Textbuffer (serialised and packed)
23446 $tbs = unpack("A".$tblen."textbuffer",$tbsp); // Textbuffer unpacked
23447 $c['textbuffer'] = unserialize(trim($tbs['textbuffer'])); // Textbuffer unserialized
23448
23449 if ($tempfh) { fclose($fh); }
23450 return ($c);
23451}
23452function read_short(&$fh) {
23453 $s = fread($fh,2);
23454 $a = (ord($s[0])<<8) + ord($s[1]);
23455 if ($a & (1 << 15) ) {
23456 $a = ($a - (1 << 16));
23457 }
23458 return $a;
23459}
23460function _backupCacheFiles() {
23461 foreach($this->table AS $lvl=>$t) {
23462 foreach($this->table[$lvl] AS $c=>$t2) {
23463///////////////////////////if (!file_exists($t2['cache'])) { echo $lvl; echo $c; print_r($this->table); exit; }
23464 copy( $t2['cache'], $t2['cache'].'.bak');
23465 }
23466 }
23467}
23468function _restoreCacheFiles() {
23469 foreach($this->table AS $lvl=>$t) {
23470 foreach($this->table[$lvl] AS $c=>$t2) {
23471 copy( $t2['cache'].'.bak', $t2['cache']);
23472 }
23473 }
23474}
23475
23476
23477function _packCellBorder($cell) {
23478 if (!is_array($cell) || !isset($cell)) { return ''; }
23479
23480 if (!$this->packTableData) { return $cell; }
23481 // = 186 bytes
23482 $bindata = pack("nnda6A10nnda6A10nnda6A10nnda6A10nd9",
23483 $cell['border'],
23484 $cell['border_details']['R']['s'],
23485 $cell['border_details']['R']['w'],
23486 $cell['border_details']['R']['c'],
23487 $cell['border_details']['R']['style'],
23488 $cell['border_details']['R']['dom'],
23489
23490 $cell['border_details']['L']['s'],
23491 $cell['border_details']['L']['w'],
23492 $cell['border_details']['L']['c'],
23493 $cell['border_details']['L']['style'],
23494 $cell['border_details']['L']['dom'],
23495
23496 $cell['border_details']['T']['s'],
23497 $cell['border_details']['T']['w'],
23498 $cell['border_details']['T']['c'],
23499 $cell['border_details']['T']['style'],
23500 $cell['border_details']['T']['dom'],
23501
23502 $cell['border_details']['B']['s'],
23503 $cell['border_details']['B']['w'],
23504 $cell['border_details']['B']['c'],
23505 $cell['border_details']['B']['style'],
23506 $cell['border_details']['B']['dom'],
23507
23508 $cell['border_details']['mbw']['BL'],
23509 $cell['border_details']['mbw']['BR'],
23510 $cell['border_details']['mbw']['RT'],
23511 $cell['border_details']['mbw']['RB'],
23512 $cell['border_details']['mbw']['TL'],
23513 $cell['border_details']['mbw']['TR'],
23514 $cell['border_details']['mbw']['LT'],
23515 $cell['border_details']['mbw']['LB'],
23516
23517 $cell['border_details']['cellposdom']
23518 );
23519 return $bindata;
23520}
23521
23522
23523
23524function _getBorderWidths($bindata) {
23525 if (!$bindata) { return array(0,0,0,0); }
23526 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']); }
23527
23528 $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);
23529 $cell['border_details']['R']['w'] = $bd['rw'];
23530 $cell['border_details']['L']['w'] = $bd['lw'];
23531 $cell['border_details']['T']['w'] = $bd['tw'];
23532 $cell['border_details']['B']['w'] = $bd['bw'];
23533 return array($bd['tw'], $bd['rw'], $bd['bw'], $bd['lw']);
23534}
23535
23536
23537function _unpackCellBorder($bindata) {
23538 if (!$bindata) { return array(); }
23539 if (!$this->packTableData) { return $bindata; }
23540
23541 $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);
23542
23543 $cell['border'] = $bd['bord'];
23544 $cell['border_details']['R']['s'] = $bd['rs'];
23545 $cell['border_details']['R']['w'] = $bd['rw'];
23546 $cell['border_details']['R']['c'] = $bd['rca'];
23547 $cell['border_details']['R']['style'] = trim($bd['rst']);
23548 $cell['border_details']['R']['dom'] = $bd['rd'];
23549
23550 $cell['border_details']['L']['s'] = $bd['ls'];
23551 $cell['border_details']['L']['w'] = $bd['lw'];
23552 $cell['border_details']['L']['c'] = $bd['lca'];
23553 $cell['border_details']['L']['style'] = trim($bd['lst']);
23554 $cell['border_details']['L']['dom'] = $bd['ld'];
23555
23556 $cell['border_details']['T']['s'] = $bd['ts'];
23557 $cell['border_details']['T']['w'] = $bd['tw'];
23558 $cell['border_details']['T']['c'] = $bd['tca'];
23559 $cell['border_details']['T']['style'] = trim($bd['tst']);
23560 $cell['border_details']['T']['dom'] = $bd['td'];
23561
23562 $cell['border_details']['B']['s'] = $bd['bs'];
23563 $cell['border_details']['B']['w'] = $bd['bw'];
23564 $cell['border_details']['B']['c'] = $bd['bca'];
23565 $cell['border_details']['B']['style'] = trim($bd['bst']);
23566 $cell['border_details']['B']['dom'] = $bd['bd'];
23567
23568 $cell['border_details']['mbw']['BL'] = $bd['mbl'];
23569 $cell['border_details']['mbw']['BR'] = $bd['mbr'];
23570 $cell['border_details']['mbw']['RT'] = $bd['mrt'];
23571 $cell['border_details']['mbw']['RB'] = $bd['mrb'];
23572 $cell['border_details']['mbw']['TL'] = $bd['mtl'];
23573 $cell['border_details']['mbw']['TR'] = $bd['mtr'];
23574 $cell['border_details']['mbw']['LT'] = $bd['mlt'];
23575 $cell['border_details']['mbw']['LB'] = $bd['mlb'];
23576 $cell['border_details']['cellposdom'] = $bd['cpd'];
23577
23578 return($cell);
23579}
23580
23581
23582////////////////////////TABLE CODE (from PDFTable)/////////////////////////////////////
23583////////////////////////TABLE CODE (from PDFTable)/////////////////////////////////////
23584////////////////////////TABLE CODE (from PDFTable)/////////////////////////////////////
23585//table Array of (w, h, bc, nr, wc, hr, cells)
23586//w Width of table
23587//h Height of table
23588//nc Number column
23589//nr Number row
23590//hr List of height of each row
23591//wc List of width of each column
23592//cells List of cells of each rows, cells[i][j] is a cell in the table
23593function _tableColumnWidth(&$table,$firstpass=false){
23594 $cs = &$table['cells'];
23595
23596 $nc = $table['nc'];
23597 $nr = $table['nr'];
23598 $listspan = array();
23599
23600 if ($table['borders_separate']) {
23601 $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'];
23602 }
23603 else { $tblbw = $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2 + $table['margin']['L'] + $table['margin']['R']; }
23604
23605 if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
23606 else { $fh = null; }
23607
23608 // ADDED table['l'][colno]
23609 // = total length of text approx (using $c['s']) in that column - used to approximately distribute col widths in _tableWidth
23610 //
23611 for($j = 0 ; $j < $nc ; $j++ ) { //columns
23612 $wc = &$table['wc'][$j];
23613 for($i = 0 ; $i < $nr ; $i++ ) { //rows
23614 if (isset($cs[$i][$j]) && $cs[$i][$j]) {
23615 if ($this->cacheTables) {
23616 $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
23617 }
23618 else
23619 $c = &$cs[$i][$j];
23620
23621 if ($this->simpleTables){
23622 if ($table['borders_separate']) { // NB twice border width
23623 $extrcw = $table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'] + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H'];
23624 }
23625 else {
23626 $extrcw = $table['simple']['border_details']['L']['w']/2 + $table['simple']['border_details']['R']['w']/2 + $c['padding']['L'] + $c['padding']['R'];
23627 }
23628 }
23629 else {
23630 if ($this->packTableData) {
23631 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
23632 }
23633 else {
23634 $br = $c['border_details']['R']['w'];
23635 $bl = $c['border_details']['L']['w'];
23636 }
23637 if ($table['borders_separate']) { // NB twice border width
23638 $extrcw = $bl + $br + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H'];
23639 }
23640 else {
23641 $extrcw = $bl/2 + $br/2 + $c['padding']['L'] + $c['padding']['R'];
23642 }
23643 }
23644
23645 //$mw = $this->GetStringWidth('W') + $extrcw ;
23646 $mw = 0;
23647 // mPDF 5.6.13 Decimal point alignment
23648 if(substr($c['a'],0,1) == 'D') {
23649 $mw = $table['decimal_align'][$j]['maxs0'] + $table['decimal_align'][$j]['maxs1'] + $extrcw ;
23650 }
23651
23652 $c['absmiw'] = $mw;
23653
23654 if (isset($c['R']) && $c['R']) {
23655 $c['maw'] = $c['miw'] = $this->FontSize + $extrcw ;
23656 if (isset($c['w'])) { // If cell width is specified
23657 if ($c['miw'] <$c['w']) { $c['miw'] = $c['w']; }
23658 }
23659 if (!isset($c['colspan'])) {
23660 if ($wc['miw'] < $c['miw']) { $wc['miw'] = $c['miw']; }
23661 if ($wc['maw'] < $c['maw']) { $wc['maw'] = $c['maw']; }
23662
23663 if ($firstpass) {
23664 if (isset($table['l'][$j]) ) {
23665 $table['l'][$j] += $c['miw'] ;
23666 }
23667 else {
23668 $table['l'][$j] = $c['miw'] ;
23669 }
23670 }
23671 }
23672 if ($c['miw'] > $wc['miw']) { $wc['miw'] = $c['miw']; }
23673 if ($wc['miw'] > $wc['maw']) { $wc['maw'] = $wc['miw']; }
23674 continue;
23675 }
23676
23677 if ($firstpass) {
23678 if (isset($c['s'])) { $c['s'] += $extrcw; }
23679 if (isset($c['maxs'])) { $c['maxs'] += $extrcw; }
23680 if (isset($c['nestedmiw'])) { $c['nestedmiw'] += $extrcw; }
23681 if (isset($c['nestedmaw'])) { $c['nestedmaw'] += $extrcw; }
23682 }
23683
23684
23685 // If minimum width has already been set by a nested table or inline object (image/form), use it
23686 if (isset($c['nestedmiw']) && $this->table[1][1]['overflow']!='visible') { $miw = $c['nestedmiw']; }
23687 else { $miw = $mw; }
23688
23689 if (isset($c['maxs']) && $c['maxs'] != '') { $c['s'] = $c['maxs']; }
23690
23691 // If maximum width has already been set by a nested table, use it
23692 if (isset($c['nestedmaw'])) { $c['maw'] = $c['nestedmaw']; }
23693 else $c['maw'] = $c['s'];
23694
23695 if (isset($table['overflow']) && $table['overflow']=='visible' && $table['level']==1) {
23696 if (($c['maw'] + $tblbw) > $this->blk[$this->blklvl]['inner_width']) {
23697 $c['maw'] = $this->blk[$this->blklvl]['inner_width'] - $tblbw;
23698 }
23699 }
23700
23701 if (isset($c['nowrap']) && $c['nowrap']) { $miw = $c['maw']; }
23702
23703 if (isset($c['wpercent']) && $firstpass) {
23704 if (isset($c['colspan'])) { // Not perfect - but % set on colspan is shared equally on cols.
23705 for($k=0;$k<$c['colspan'];$k++) {
23706 $table['wc'][($j+$k)]['wpercent'] = $c['wpercent'] / $c['colspan'];
23707 }
23708 }
23709 else {
23710 if (isset($table['w']) && $table['w']) { $c['w'] = $c['wpercent']/100 * ($table['w'] - $tblbw ); }
23711 $wc['wpercent'] = $c['wpercent'];
23712 }
23713 }
23714
23715 if (isset($table['overflow']) && $table['overflow']=='visible' && $table['level']==1) {
23716 if (($c['w'] + $tblbw) > $this->blk[$this->blklvl]['inner_width']) {
23717 $c['w'] = $this->blk[$this->blklvl]['inner_width'] - $tblbw;
23718 }
23719 }
23720
23721
23722 if (isset($c['w'])) { // If cell width is specified
23723 if ($miw<$c['w']) { $c['miw'] = $c['w']; } // Cell min width = that specified
23724 if ($miw>$c['w']) { $c['miw'] = $c['w'] = $miw; } // If width specified is less than minimum allowed (W) increase it
23725 if (!isset($wc['w'])) { $wc['w'] = 1; } // If the Col width is not specified = set it to 1
23726
23727 }
23728 else { $c['miw'] = $miw; } // If cell width not specified -> set Cell min width it to minimum allowed (W)
23729
23730 if ($c['maw'] < $c['miw']) { $c['maw'] = $c['miw']; } // If Cell max width < Minwidth - increase it to =
23731 if (!isset($c['colspan'])) {
23732 if ($wc['miw'] < $c['miw']) { $wc['miw'] = $c['miw']; } // Update Col Minimum and maximum widths
23733 if ($wc['maw'] < $c['maw']) { $wc['maw'] = $c['maw']; }
23734 if ((isset($wc['absmiw']) && $wc['absmiw'] < $c['absmiw']) || !isset($wc['absmiw'])) { $wc['absmiw'] = $c['absmiw']; } // Update Col Minimum and maximum widths
23735
23736 if (isset($table['l'][$j]) ) {
23737 $table['l'][$j] += $c['s'];
23738 }
23739 else {
23740 $table['l'][$j] = $c['s'];
23741 }
23742
23743 }
23744 else {
23745 $listspan[] = array($i,$j);
23746 }
23747
23748 //Check if minimum width of the whole column is big enough for largest word to fit
23749 if (isset($c['textbuffer']) && (!isset($table['overflow']) || $table['overflow']!='wrap')) { // mPDF 5.5.11
23750 $minwidth = $this->TableCheckMinWidth($wc['miw']- $extrcw ,0,$c['textbuffer']);
23751 }
23752 else { $minwidth = 0; }
23753 if ($minwidth < 0) {
23754 //increase minimum width
23755 if (!isset($c['colspan'])) {
23756 $wc['miw'] = max($wc['miw'],((-$minwidth) + $extrcw) );
23757 }
23758 else {
23759 $c['miw'] = max($c['miw'],((-$minwidth) + $extrcw) );
23760 }
23761 }
23762 if (!isset($c['colspan'])) {
23763 if ($wc['miw'] > $wc['maw']) { $wc['maw'] = $wc['miw']; } //update maximum width, if needed
23764 }
23765 if ($this->cacheTables) {
23766 $this->_cacheCell($c, '', "W", $fh, $table['cells'][$i][$j]);
23767 }
23768 }
23769 unset($c);
23770 }//rows
23771 }//columns
23772
23773
23774 // COLUMN SPANS
23775 $wc = &$table['wc'];
23776 foreach ($listspan as $span) {
23777 list($i,$j) = $span;
23778 if ($this->cacheTables) {
23779 $c = $this->_uncacheCell($cs[$i][$j], '', $fh);
23780 }
23781 else
23782 $c = &$cs[$i][$j];
23783 $lc = $j + $c['colspan'];
23784 if ($lc > $nc) { $lc = $nc; }
23785 $wis = $wisa = 0;
23786 $was = $wasa = 0;
23787 $list = array();
23788 for($k=$j;$k<$lc;$k++) {
23789 if (isset($table['l'][$k]) ) {
23790 if ($c['R']) { $table['l'][$k] += $c['miw']/$c['colspan'] ; }
23791 else { $table['l'][$k] += $c['s']/$c['colspan']; }
23792 }
23793 else {
23794 if ($c['R']) { $table['l'][$k] = $c['miw']/$c['colspan'] ; }
23795 else { $table['l'][$k] = $c['s']/$c['colspan']; }
23796 }
23797 $wis += $wc[$k]['miw'];
23798 $was += $wc[$k]['maw'];
23799 if (!isset($c['w'])) {
23800 $list[] = $k;
23801 $wisa += $wc[$k]['miw'];
23802 $wasa += $wc[$k]['maw'];
23803 }
23804 }
23805 if ($c['miw'] > $wis) {
23806 if (!$wis) {
23807 for($k=$j;$k<$lc;$k++) { $wc[$k]['miw'] = $c['miw']/$c['colspan']; }
23808 }
23809 else if (!count($list)) {
23810 $wi = $c['miw'] - $wis;
23811 for($k=$j;$k<$lc;$k++) { $wc[$k]['miw'] += ($wc[$k]['miw']/$wis)*$wi; }
23812 }
23813 else {
23814 $wi = $c['miw'] - $wis;
23815 foreach ($list as $k) { if (!isset($wc[$k]['w']) || !$wc[$k]['w']) $wc[$k]['miw'] += ($wc[$k]['miw']/$wisa)*$wi; } // mPDF 5.7.2
23816 }
23817 }
23818 if ($c['maw'] > $was) {
23819 if (!$wis) {
23820 for($k=$j;$k<$lc;$k++) { $wc[$k]['maw'] = $c['maw']/$c['colspan']; }
23821 }
23822 else if (!count($list)) {
23823 $wi = $c['maw'] - $was;
23824 for($k=$j;$k<$lc;$k++) { $wc[$k]['maw'] += ($wc[$k]['maw']/$was)*$wi; }
23825 }
23826 else {
23827 $wi = $c['maw'] - $was;
23828 foreach ($list as $k) { $wc[$k]['maw'] += ($wc[$k]['maw']/$wasa)*$wi; }
23829 }
23830 }
23831 unset($c);
23832 }
23833
23834 if ($this->cacheTables) { fclose($fh); }
23835
23836 $checkminwidth = 0;
23837 $checkmaxwidth = 0;
23838 $totallength = 0;
23839
23840 for( $i = 0 ; $i < $nc ; $i++ ) {
23841 $checkminwidth += $table['wc'][$i]['miw'];
23842 $checkmaxwidth += $table['wc'][$i]['maw'];
23843 $totallength += $table['l'][$i];
23844 }
23845
23846 if (!isset($table['w']) && $firstpass) {
23847 $sumpc = 0;
23848 $notset = 0;
23849 for( $i = 0 ; $i < $nc ; $i++ ) {
23850 if (isset($table['wc'][$i]['wpercent']) && $table['wc'][$i]['wpercent']) {
23851 $sumpc += $table['wc'][$i]['wpercent'];
23852 }
23853 else { $notset++; }
23854 }
23855
23856 // If sum of widths as % >= 100% and not all columns are set
23857 // Set a nominal width of 1% for unset columns
23858 if ($sumpc >= 100 && $notset) {
23859 for( $i = 0 ; $i < $nc ; $i++ ) {
23860 if ((!isset($table['wc'][$i]['wpercent']) || !$table['wc'][$i]['wpercent']) &&
23861 (!isset($table['wc'][$i]['w']) || !$table['wc'][$i]['w'])) {
23862 $table['wc'][$i]['wpercent'] = 1;
23863 }
23864 }
23865 }
23866
23867
23868 if ($sumpc) { // if any percents are set
23869 $sumnonpc = (100 - $sumpc);
23870 $sumpc = max($sumpc,100);
23871 $miwleft = 0;
23872 $miwleftcount = 0;
23873 $miwsurplusnonpc = 0;
23874 $maxcalcmiw = 0;
23875 $mawleft = 0;
23876 $mawleftcount = 0;
23877 $mawsurplusnonpc = 0;
23878 $maxcalcmaw = 0;
23879 for( $i = 0 ; $i < $nc ; $i++ ) {
23880 if (isset($table['wc'][$i]['wpercent'])) {
23881 $maxcalcmiw = max($maxcalcmiw, ($table['wc'][$i]['miw'] * $sumpc /$table['wc'][$i]['wpercent']) );
23882 $maxcalcmaw = max($maxcalcmaw, ($table['wc'][$i]['maw'] * $sumpc /$table['wc'][$i]['wpercent']) );
23883 }
23884 else {
23885 $miwleft += $table['wc'][$i]['miw'];
23886 $mawleft += $table['wc'][$i]['maw'];
23887 if (!isset($table['wc'][$i]['w'])) { $miwleftcount++; $mawleftcount++; }
23888 }
23889 }
23890 if ($miwleft && $sumnonpc > 0) { $miwnon = $miwleft * 100 / $sumnonpc; }
23891 if ($mawleft && $sumnonpc > 0) { $mawnon = $mawleft * 100 / $sumnonpc; }
23892 if (($miwnon > $checkminwidth || $maxcalcmiw > $checkminwidth) && $this->keep_table_proportions) {
23893 if ($miwnon > $maxcalcmiw) {
23894 $miwsurplusnonpc = round((($miwnon * $sumnonpc / 100) - $miwleft),3);
23895 $checkminwidth = $miwnon;
23896 }
23897 else { $checkminwidth = $maxcalcmiw; }
23898 for( $i = 0 ; $i < $nc ; $i++ ) {
23899 if (isset($table['wc'][$i]['wpercent'])) {
23900 $newmiw = $checkminwidth * $table['wc'][$i]['wpercent']/100;
23901 if ($table['wc'][$i]['miw'] < $newmiw) {
23902 $table['wc'][$i]['miw'] = $newmiw;
23903 }
23904 $table['wc'][$i]['w'] = 1;
23905 }
23906 else if ($miwsurplusnonpc && !$table['wc'][$i]['w']) {
23907 $table['wc'][$i]['miw'] += $miwsurplusnonpc / $miwleftcount;
23908 }
23909 }
23910 }
23911 if (($mawnon > $checkmaxwidth || $maxcalcmaw > $checkmaxwidth )) {
23912 if ($mawnon > $maxcalcmaw) {
23913 $mawsurplusnonpc = round((($mawnon * $sumnonpc / 100) - $mawleft),3);
23914 $checkmaxwidth = $mawnon;
23915 }
23916 else { $checkmaxwidth = $maxcalcmaw; }
23917 for( $i = 0 ; $i < $nc ; $i++ ) {
23918 if (isset($table['wc'][$i]['wpercent'])) {
23919 $newmaw = $checkmaxwidth * $table['wc'][$i]['wpercent']/100;
23920 if ($table['wc'][$i]['maw'] < $newmaw) {
23921 $table['wc'][$i]['maw'] = $newmaw;
23922 }
23923 $table['wc'][$i]['w'] = 1;
23924 }
23925 else if ($mawsurplusnonpc && !$table['wc'][$i]['w']) {
23926 $table['wc'][$i]['maw'] += $mawsurplusnonpc / $mawleftcount;
23927 }
23928 if ($table['wc'][$i]['maw'] < $table['wc'][$i]['miw']) { $table['wc'][$i]['maw'] = $table['wc'][$i]['miw']; }
23929 }
23930 }
23931 if ($checkminwidth > $checkmaxwidth) { $checkmaxwidth = $checkminwidth; }
23932 }
23933 }
23934
23935 if (isset($table['wpercent']) && $table['wpercent']) {
23936 $checkminwidth *= (100 / $table['wpercent']);
23937 $checkmaxwidth *= (100 / $table['wpercent']);
23938 }
23939
23940
23941 $checkminwidth += $tblbw ;
23942 $checkmaxwidth += $tblbw ;
23943
23944 // Table['miw'] set by percent in first pass may be larger than sum of column miw
23945 if ((isset($table['miw']) && $checkminwidth > $table['miw']) || !isset($table['miw'])) { $table['miw'] = $checkminwidth; }
23946 if ((isset($table['maw']) && $checkmaxwidth > $table['maw']) || !isset($table['maw'])) { $table['maw'] = $checkmaxwidth; }
23947 $table['tl'] = $totallength ;
23948
23949
23950 if (!$this->tableCJK) {
23951 if ($this->table_rotate) {
23952 $mxw = $this->tbrot_maxw;
23953 }
23954 else {
23955 $mxw = $this->blk[$this->blklvl]['inner_width'];
23956 }
23957 if(!isset($table['overflow'])) { $table['overflow'] = null; }
23958 if ($table['overflow']=='visible') {
23959 return array(0,0);
23960 }
23961 else if ($table['overflow']=='hidden' && !$this->table_rotate && !$this->ColActive && $checkminwidth > $mxw) {
23962 $table['w'] = $table['miw'];
23963 return array(0,0);
23964 }
23965 else if ($table['overflow']=='wrap') { return array(0,0); }
23966
23967 if (isset($table['w']) && $table['w'] ) {
23968 if ($table['w'] >= $checkminwidth && $table['w'] <= $mxw) { $table['maw'] = $mxw = $table['w']; }
23969 else if ($table['w'] >= $checkminwidth && $table['w'] > $mxw && $this->keep_table_proportions) { $checkminwidth = $table['w']; }
23970 else {
23971 unset($table['w']);
23972 }
23973 }
23974 $ratio = $checkminwidth/$mxw;
23975 if ($checkminwidth > $mxw) { return array(($ratio +0.001),$checkminwidth); } // 0.001 to allow for rounded numbers when resizing
23976 }
23977 unset($cs);
23978 return array(0,0);
23979}
23980
23981
23982
23983function _tableWidth(&$table){
23984 $widthcols = &$table['wc'];
23985 $numcols = $table['nc'];
23986 $tablewidth = 0;
23987 if ($table['borders_separate']) {
23988 $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'];
23989 }
23990 else { $tblbw = $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2 + $table['margin']['L'] + $table['margin']['R']; }
23991
23992 if ($table['level']>1 && isset($table['w'])) {
23993 if (isset($table['wpercent']) && $table['wpercent']) {
23994 $table['w'] = $temppgwidth = (($table['w']-$tblbw) * $table['wpercent'] / 100) + $tblbw ;
23995 }
23996 else {
23997 $temppgwidth = $table['w'] ;
23998 }
23999 }
24000 else if ($this->table_rotate) {
24001 $temppgwidth = $this->tbrot_maxw;
24002 // If it is less than 1/20th of the remaining page height to finish the DIV (i.e. DIV padding + table bottom margin)
24003 // then allow for this
24004 $enddiv = $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'];
24005 if ($enddiv/$temppgwidth <0.05) { $temppgwidth -= $enddiv; }
24006 }
24007 else {
24008 if (isset($table['w']) && $table['w']< $this->blk[$this->blklvl]['inner_width']) {
24009 $notfullwidth = 1;
24010 $temppgwidth = $table['w'] ;
24011 }
24012 else if ($table['overflow']=='visible' && $table['level'] ==1) {
24013 $temppgwidth = null;
24014 }
24015 else if ($table['overflow']=='hidden' && !$this->ColActive && isset($table['w']) && $table['w'] > $this->blk[$this->blklvl]['inner_width'] && $table['w']==$table['miw']) {
24016 //$temppgwidth = $this->blk[$this->blklvl]['inner_width'];
24017 $temppgwidth = $table['w'] ;
24018 }
24019 else { $temppgwidth = $this->blk[$this->blklvl]['inner_width']; }
24020 }
24021
24022
24023 $totaltextlength = 0; // Added - to sum $table['l'][colno]
24024 $totalatextlength = 0; // Added - to sum $table['l'][colno] for those columns where width not set
24025 $percentages_set = 0;
24026 for ( $i = 0 ; $i < $numcols ; $i++ ) {
24027 if (isset($widthcols[$i]['wpercent'])) { $tablewidth += $widthcols[$i]['maw']; $percentages_set = 1; }
24028 else if (isset($widthcols[$i]['w'])) { $tablewidth += $widthcols[$i]['miw']; }
24029 else { $tablewidth += $widthcols[$i]['maw']; }
24030 $totaltextlength += $table['l'][$i];
24031 }
24032 if (!$totaltextlength) { $totaltextlength =1; }
24033 $tablewidth += $tblbw; // Outer half of table borders
24034
24035 if ($tablewidth > $temppgwidth) {
24036 $table['w'] = $temppgwidth;
24037 }
24038 // if any widths set as percentages and max width fits < page width
24039 else if ($tablewidth < $temppgwidth && !isset($table['w']) && $percentages_set) {
24040 $table['w'] = $table['maw'];
24041 }
24042 // if table width is set and is > allowed width
24043 if (isset($table['w']) && $table['w'] > $temppgwidth) { $table['w'] = $temppgwidth; }
24044 // IF the table width is now set - Need to distribute columns widths
24045 if (isset($table['w'])) {
24046 $wis = $wisa = 0;
24047 $list = array();
24048 $notsetlist = array();
24049 for( $i = 0 ; $i < $numcols ; $i++ ) {
24050 $wis += $widthcols[$i]['miw'];
24051 if (!isset($widthcols[$i]['w']) || ($widthcols[$i]['w'] && $table['w'] > $temppgwidth && !$this->keep_table_proportions && !$notfullwidth )){
24052 $list[] = $i;
24053 $wisa += $widthcols[$i]['miw'];
24054 $totalatextlength += $table['l'][$i];
24055 }
24056 }
24057 if (!$totalatextlength) { $totalatextlength =1; }
24058
24059 // Allocate spare (more than col's minimum width) across the cols according to their approx total text length
24060 // Do it by setting minimum width here
24061 if ($table['w'] > $wis + $tblbw) {
24062 // First set any cell widths set as percentages
24063 if ($table['w'] < $temppgwidth || $this->keep_table_proportions) {
24064 for($k=0;$k<$numcols;$k++) {
24065 if (isset($widthcols[$k]['wpercent'])) {
24066 $curr = $widthcols[$k]['miw'];
24067 $widthcols[$k]['miw'] = ($table['w']-$tblbw) * $widthcols[$k]['wpercent']/100;
24068 $wis += $widthcols[$k]['miw'] - $curr;
24069 $wisa += $widthcols[$k]['miw'] - $curr;
24070 }
24071 }
24072 }
24073 // Now allocate surplus up to maximum width of each column
24074 $surplus = 0; $ttl = 0; // number of surplus columns
24075 if (!count($list)) {
24076 $wi = ($table['w']-($wis + $tblbw)); // i.e. extra space to distribute
24077 for($k=0;$k<$numcols;$k++) {
24078 $spareratio = ($table['l'][$k] / $totaltextlength); // gives ratio to divide up free space
24079 // Don't allocate more than Maximum required width - save rest in surplus
24080 if ($widthcols[$k]['miw'] + ($wi * $spareratio) > $widthcols[$k]['maw']) {
24081 $surplus += ($wi * $spareratio) - ($widthcols[$k]['maw']-$widthcols[$k]['miw']);
24082 $widthcols[$k]['miw'] = $widthcols[$k]['maw'];
24083 }
24084 else {
24085 $notsetlist[] = $k;
24086 $ttl += $table['l'][$k];
24087 $widthcols[$k]['miw'] += ($wi * $spareratio);
24088 }
24089
24090 }
24091 }
24092 else {
24093 $wi = ($table['w'] - ($wis + $tblbw)); // i.e. extra space to distribute
24094 foreach ($list as $k) {
24095 $spareratio = ($table['l'][$k] / $totalatextlength); // gives ratio to divide up free space
24096 // Don't allocate more than Maximum required width - save rest in surplus
24097 if ($widthcols[$k]['miw'] + ($wi * $spareratio) > $widthcols[$k]['maw']) {
24098 $surplus += ($wi * $spareratio) - ($widthcols[$k]['maw']-$widthcols[$k]['miw']);
24099 $widthcols[$k]['miw'] = $widthcols[$k]['maw'];
24100 }
24101 else {
24102 $notsetlist[] = $k;
24103 $ttl += $table['l'][$k];
24104 $widthcols[$k]['miw'] += ($wi * $spareratio);
24105 }
24106 }
24107 }
24108 // If surplus still left over apportion it across columns
24109 if ($surplus) {
24110 // if some are set only add to remaining - otherwise add to all of them
24111 if (count($notsetlist) && count($notsetlist) < $numcols) {
24112 foreach ($notsetlist AS $i) {
24113 if ($ttl) $widthcols[$i]['miw'] += $surplus * $table['l'][$i] / $ttl ;
24114 }
24115 }
24116 // If some widths are defined, and others have been added up to their maxmum
24117 else if (count($list) && count($list) < $numcols) {
24118 foreach ($list AS $i) {
24119 $widthcols[$i]['miw'] += $surplus / count($list) ;
24120 }
24121 }
24122 else if ($numcols) { // If all columns
24123 $ttl = array_sum($table['l']);
24124 for ($i=0;$i<$numcols;$i++) {
24125 $widthcols[$i]['miw'] += $surplus * $table['l'][$i] / $ttl;
24126 }
24127 }
24128 }
24129
24130 }
24131
24132 // This sets the columns all to minimum width (which has been increased above if appropriate)
24133 for ($i=0;$i<$numcols;$i++) {
24134 $widthcols[$i] = $widthcols[$i]['miw'];
24135 }
24136
24137 // TABLE NOT WIDE ENOUGH EVEN FOR MINIMUM CONTENT WIDTH
24138 // If sum of column widths set are too wide for table
24139 $checktablewidth = 0;
24140 for ( $i = 0 ; $i < $numcols ; $i++ ) {
24141 $checktablewidth += $widthcols[$i];
24142 }
24143 if ($checktablewidth > ($temppgwidth + 0.001 - $tblbw)) {
24144 $usedup = 0; $numleft = 0;
24145 for ($i=0;$i<$numcols;$i++) {
24146 if ((isset($widthcols[$i]) && $widthcols[$i] > (($temppgwidth - $tblbw) / $numcols)) && (!isset($widthcols[$i]['w']))) {
24147 $numleft++;
24148 unset($widthcols[$i]);
24149 }
24150 else { $usedup += $widthcols[$i]; }
24151 }
24152 for ($i=0;$i<$numcols;$i++) {
24153 if (!isset($widthcols[$i]) || !$widthcols[$i]) {
24154 $widthcols[$i] = ((($temppgwidth - $tblbw) - $usedup)/ ($numleft));
24155 }
24156 }
24157 }
24158
24159 }
24160 else { //table has no width defined
24161 $table['w'] = $tablewidth;
24162 for ( $i = 0 ; $i < $numcols ; $i++) {
24163 if (isset($widthcols[$i]['wpercent']) && $this->keep_table_proportions) { $colwidth = $widthcols[$i]['maw']; }
24164 else if (isset($widthcols[$i]['w'])) { $colwidth = $widthcols[$i]['miw']; }
24165 else { $colwidth = $widthcols[$i]['maw']; }
24166 unset($widthcols[$i]);
24167 $widthcols[$i] = $colwidth;
24168 }
24169 }
24170
24171 if ($table['overflow']=='visible' && $table['level'] ==1) {
24172 if ($tablewidth > $this->blk[$this->blklvl]['inner_width']) {
24173 if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
24174 else { $fh = null; }
24175 for ($j = 0 ; $j < $numcols; $j++) { //columns
24176 for ($i = 0 ; $i < $table['nr']; $i++) { //rows
24177 if (isset($table['cells'][$i][$j]) && $table['cells'][$i][$j]) {
24178 if ($this->cacheTables) {
24179 $cc = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
24180 $colspan = $cc['colspan'];
24181 }
24182 else
24183 $colspan = $table['cells'][$i][$j]['colspan'];
24184 if ($colspan > 1) {
24185 $w = 0;
24186 for ($c = $j; $c < ($j + $colspan); $c++) {
24187 $w += $widthcols[$c];
24188 }
24189 if ($w > $this->blk[$this->blklvl]['inner_width']) {
24190 $diff = $w - ($this->blk[$this->blklvl]['inner_width'] - $tblbw);
24191 for ($c = $j; $c < ($j + $colspan); $c++) {
24192 $widthcols[$c] -= $diff * ($widthcols[$c]/$w);
24193 }
24194 $table['w'] -= $diff;
24195 $table['csp'][$j] = $w - $diff;
24196 }
24197 }
24198 }
24199
24200 }
24201 }
24202 if ($this->cacheTables) { fclose($fh); }
24203 }
24204 $pgNo = 0;
24205 $currWc = 0;
24206 for ($i = 0 ; $i < $numcols; $i++) { //columns
24207 if (isset($table['csp'][$i])) {
24208 $w = $table['csp'][$i];
24209 unset($table['csp'][$i]);
24210 }
24211 else { $w = $widthcols[$i]; }
24212 if (($currWc + $w + $tblbw) > $this->blk[$this->blklvl]['inner_width']) {
24213 $pgNo++;
24214 $currWc = $widthcols[$i] ;
24215 }
24216 else { $currWc += $widthcols[$i] ; }
24217 $table['colPg'][$i] = $pgNo;
24218 }
24219 }
24220}
24221
24222
24223
24224function _tableHeight(&$table){
24225 $level = $table['level'];
24226 $levelid = $table['levelid'];
24227 $cells = &$table['cells'];
24228 $numcols = $table['nc'];
24229 $numrows = $table['nr'];
24230 $listspan = array();
24231 $checkmaxheight = 0;
24232 $headerrowheight = 0;
24233 $checkmaxheightplus = 0;
24234 $headerrowheightplus = 0;
24235 $firstrowheight = 0;
24236
24237 $footerrowheight = 0;
24238 $footerrowheightplus = 0;
24239 if ($this->table_rotate) {
24240 $temppgheight = $this->tbrot_maxh;
24241 $remainingpage = $this->tbrot_maxh;
24242 }
24243 else {
24244 $temppgheight = ($this->h - $this->bMargin - $this->tMargin) - $this->kwt_height;
24245 $remainingpage = ($this->h - $this->bMargin - $this->y) - $this->kwt_height;
24246
24247 // If it is less than 1/20th of the remaining page height to finish the DIV (i.e. DIV padding + table bottom margin)
24248 // then allow for this
24249 $enddiv = $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $table['margin']['B'];
24250 if ($remainingpage > $enddiv && $enddiv/$remainingpage <0.05) { $remainingpage -= $enddiv; }
24251 else if ($remainingpage == 0) { $remainingpage = 0.001; }
24252 if ($temppgheight > $enddiv && $enddiv/$temppgheight <0.05) { $temppgheight -= $enddiv; }
24253 else if ($temppgheight == 0) { $temppgheight = 0.001; }
24254 }
24255 if ($remainingpage < 0) { $remainingpage = 0.001; } // mPDF 5.6.64
24256 if ($temppgheight < 0) { $temppgheight = 0.001; } // mPDF 5.6.64
24257
24258 if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
24259 else { $fh = null; }
24260
24261 for( $i = 0 ; $i < $numrows ; $i++ ) { //rows
24262 $heightrow = &$table['hr'][$i];
24263 for( $j = 0 ; $j < $numcols ; $j++ ) { //columns
24264 if (isset($cells[$i][$j]) && $cells[$i][$j]) {
24265 if ($this->cacheTables) {
24266 $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
24267 }
24268 else
24269 $c = &$cells[$i][$j];
24270
24271 if ($this->simpleTables){
24272 if ($table['borders_separate']) { // NB twice border width
24273 $extraWLR = ($table['simple']['border_details']['L']['w']+$table['simple']['border_details']['R']['w']) + ($c['padding']['L']+$c['padding']['R'])+$table['border_spacing_H'];
24274 $extrh = ($table['simple']['border_details']['T']['w']+$table['simple']['border_details']['B']['w']) + ($c['padding']['T']+$c['padding']['B'])+$table['border_spacing_V'];
24275 }
24276 else {
24277 $extraWLR = ($table['simple']['border_details']['L']['w']+$table['simple']['border_details']['R']['w'])/2 + ($c['padding']['L']+$c['padding']['R']);
24278 $extrh = ($table['simple']['border_details']['T']['w']+$table['simple']['border_details']['B']['w'])/2 + ($c['padding']['T']+$c['padding']['B']);
24279 }
24280 }
24281 else {
24282 if ($this->packTableData) {
24283 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
24284 }
24285 else {
24286 $bt = $c['border_details']['T']['w'];
24287 $bb = $c['border_details']['B']['w'];
24288 $br = $c['border_details']['R']['w'];
24289 $bl = $c['border_details']['L']['w'];
24290 }
24291 if ($table['borders_separate']) { // NB twice border width
24292 $extraWLR = $bl + $br + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H'];
24293 $extrh = $bt + $bb + $c['padding']['T'] + $c['padding']['B'] + $table['border_spacing_V'];
24294 }
24295 else {
24296 $extraWLR = $bl/2 + $br/2 + $c['padding']['L'] + $c['padding']['R'];
24297 $extrh = $bt/2 + $bb/2 + $c['padding']['T']+$c['padding']['B'];
24298 }
24299 }
24300
24301 if ($table['overflow']=='visible' && $level==1)
24302 list($x,$cw) = $this->_splitTableGetWidth($table, $i,$j, $fh);
24303 else
24304 list($x,$cw) = $this->_tableGetWidth($table, $i,$j, $fh);
24305
24306 // Get CELL HEIGHT
24307 // ++ extra parameter forces wrap to break word
24308 if ($c['R'] && isset($c['textbuffer'])) { // mPDF 5.4.01
24309 $str = '';
24310 foreach($c['textbuffer'] AS $t) { $str .= $t[0].' '; }
24311 $str = trim($str);
24312 $s_fs = $this->FontSizePt;
24313 $s_f = $this->FontFamily;
24314 $s_st = $this->FontStyle;
24315 $this->SetFont($c['textbuffer'][0][4],$c['textbuffer'][0][2],$c['textbuffer'][0][11] / $this->shrin_k,true,true);
24316 $tempch = $this->GetStringWidth($str);
24317 if ($c['R'] >= 45 && $c['R'] < 90) {
24318 $tempch = ((sin(deg2rad($c['R']))) * $tempch ) + ((sin(deg2rad($c['R']))) * (($c['textbuffer'][0][11]/_MPDFK) / $this->shrin_k));
24319 }
24320 $this->SetFont($s_f,$s_st,$s_fs,true,true);
24321 $ch = ($tempch ) + $extrh ;
24322 }
24323 else {
24324 if (isset($c['textbuffer'])) {
24325 $tempch = $this->TableWordWrap(($cw-$extraWLR),1,$c['textbuffer'], $c['dfs']);
24326 }
24327 else { $tempch = 0; }
24328
24329 // Added cellpadding top and bottom. (Lineheight already adjusted to table_lineheight)
24330 $ch = $tempch + $extrh ;
24331 }
24332 //If height is defined and it is bigger than calculated $ch then update values
24333 if (isset($c['h']) && $c['h'] > $ch) {
24334 $c['mih'] = $ch; //in order to keep valign working
24335 $ch = $c['h'];
24336 }
24337 else $c['mih'] = $ch;
24338 if ($this->cacheTables) {
24339 $this->_cacheUpdateMtx($c, $fh, $table['cells'][$i][$j], 'mih');
24340 }
24341 if (isset($c['rowspan'])) $listspan[] = array($i,$j);
24342 elseif ($heightrow < $ch) $heightrow = $ch;
24343
24344 // this is the extra used in _tableWrite to determine whether to trigger a page change
24345 if ($table['borders_separate']) {
24346 if ($i == ($numrows-1) || (isset($c['rowspan']) && ($i+$c['rowspan']) == ($numrows)) ) {
24347 $extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2;
24348 }
24349 else {
24350 $extra = $table['border_spacing_V']/2;
24351 }
24352 }
24353 else {
24354 if (!$this->simpleTables){
24355 $extra = $bb/2;
24356 }
24357 else if ($this->simpleTables){
24358 $extra = $table['simple']['border_details']['B']['w'] /2;
24359 }
24360 }
24361 if (isset($table['is_thead'][$i]) && $table['is_thead'][$i]) {
24362 if ($j==0) {
24363 $headerrowheight += $ch;
24364 $headerrowheightplus += $ch+$extra;
24365 }
24366 }
24367 else if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i]) {
24368 if ($j==0) {
24369 $footerrowheight += $ch;
24370 $footerrowheightplus += $ch+$extra;
24371 }
24372 }
24373 else {
24374 $checkmaxheight = max($checkmaxheight,$ch);
24375 $checkmaxheightplus = max($checkmaxheightplus,$ch+$extra);
24376 }
24377 if ($this->tableLevel==1 && $i == $table['headernrows']) { $firstrowheight = max($ch,$firstrowheight); }
24378 unset($c);
24379 }
24380 }//end of columns
24381 }//end of rows
24382
24383 $heightrow = &$table['hr'];
24384 foreach ($listspan as $span) {
24385 list($i,$j) = $span;
24386 if ($this->cacheTables) {
24387 $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
24388 }
24389 else
24390 $c = &$cells[$i][$j];
24391 $lr = $i + $c['rowspan'];
24392 if ($lr > $numrows) $lr = $numrows;
24393 $hs = $hsa = 0;
24394 $list = array();
24395 for($k=$i;$k<$lr;$k++) {
24396 $hs += $heightrow[$k];
24397 if (!isset($c['h'])) {
24398 $list[] = $k;
24399 $hsa += $heightrow[$k];
24400 }
24401 }
24402
24403 if ($table['borders_separate']) {
24404 if ($i == ($numrows-1) || ($i+$c['rowspan']) == ($numrows) ) {
24405 $extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2;
24406 }
24407 else {
24408 $extra = $table['border_spacing_V']/2;
24409 }
24410 }
24411 else {
24412 if (!$this->simpleTables){
24413 if ($this->packTableData) {
24414 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
24415 }
24416 else {
24417 $bb = $c['border_details']['B']['w'];
24418 }
24419 $extra = $bb/2;
24420 }
24421 else if ($this->simpleTables){
24422 $extra = $table['simple']['border_details']['B']['w'] /2;
24423 }
24424 }
24425 if (!empty($table['is_thead'][$i])) {
24426 $headerrowheight = max($headerrowheight,$hs);
24427 $headerrowheightplus = max($headerrowheightplus,$hs+$extra);
24428 }
24429 else if (!empty($table['is_tfoot'][$i])) {
24430 $footerrowheight = max($footerrowheight,$hs);
24431 $footerrowheightplus = max($footerrowheightplus,$hs+$extra);
24432 }
24433 else {
24434 $checkmaxheight = max($checkmaxheight,$hs);
24435 $checkmaxheightplus = max($checkmaxheightplus,$hs+$extra);
24436 }
24437 if ($this->tableLevel==1 && $i == $table['headernrows']) { $firstrowheight = max($hs,$firstrowheight); }
24438
24439 if ($c['mih'] > $hs) {
24440 if (!$hs) {
24441 for($k=$i;$k<$lr;$k++) $heightrow[$k] = $c['mih']/$c['rowspan'];
24442 }
24443 elseif (!count($list)) {
24444 $hi = $c['mih'] - $hs;
24445 for($k=$i;$k<$lr;$k++) $heightrow[$k] += ($heightrow[$k]/$hs)*$hi;
24446 }
24447 else {
24448 $hi = $c['mih'] - $hsa;
24449 foreach ($list as $k) $heightrow[$k] += ($heightrow[$k]/$hsa)*$hi;
24450 }
24451 }
24452 unset($c);
24453
24454 // If rowspans overlap so that one or more rows do not have a height set...
24455 // i.e. for one or more rows, the only cells (explicit) in that row have rowspan>1
24456 // so heightrow is still == 0
24457 if ($heightrow[$i]==0) {
24458 // Get row extent to analyse above and below
24459 $top = $i;
24460 foreach ($listspan as $checkspan) {
24461 list($cki,$ckj) = $checkspan;
24462 if ($this->cacheTables) {
24463 $c = $this->_uncacheCell($table['cells'][$cki][$ckj], '', $fh);
24464 }
24465 else
24466 $c = &$cells[$cki][$ckj];
24467 if (isset($c['rowspan']) && $c['rowspan']>1) {
24468 if (($cki + $c['rowspan']-1) >= $i) { $top = min($top, $cki); }
24469 }
24470 }
24471 $bottom = $i + $c['rowspan']-1;
24472 // Check for overconstrained conditions
24473 for ($k=$top; $k<=$bottom; $k++) {
24474 // if ['hr'] for any of the others is also 0, then abort (too complicated)
24475 if ($k != $i && $heightrow[$k]==0) { break(1); }
24476 // check again that top and bottom are not crossed by rowspans - or abort (too complicated)
24477 if ($k==$top) {
24478 // ???? take account of colspan as well???
24479 for( $m = 0 ; $m < $numcols ; $m++ ) { //columns
24480 if (!isset($cells[$k][$m]) || $cells[$k][$m]==0) {
24481 break(2);
24482 }
24483 }
24484 }
24485 else if ($k==$bottom) {
24486 // ???? take account of colspan as well???
24487 for( $m = 0 ; $m < $numcols ; $m++ ) { //columns
24488 if ($this->cacheTables) {
24489 $c = $this->_uncacheCell($table['cells'][$k][$m], '', $fh);
24490 }
24491 else
24492 $c = &$cells[$k][$m];
24493 if (isset($c['rowspan']) && $c['rowspan']>1) {
24494 break(2);
24495 }
24496 }
24497 }
24498 }
24499 // By columns add up col height using ['h'] if set or ['mih'] if not
24500 // Intentionally do not substract border-spacing
24501 $colH = array();
24502 $extH = 0;
24503 $newhr = array();
24504 for( $m = 0 ; $m < $numcols ; $m++ ) { //columns
24505 for ($k=$top; $k<=$bottom; $k++) {
24506 if (isset($cells[$k][$m]) && $cells[$k][$m]!=0) {
24507 if ($this->cacheTables) {
24508 $c = $this->_uncacheCell($table['cells'][$k][$m], '', $fh);
24509 }
24510 else
24511 $c = &$cells[$k][$m];
24512 if (isset($c['h']) && $c['h']) {
24513 $useh = $c['h'];
24514 }
24515 // ???? take account of colspan as well???
24516 else {
24517 $useh = $c['mih'];
24518 }
24519 $colH[$m] += $useh;
24520 if (!isset($c['rowspan']) || $c['rowspan']<2) { $newhr[$k] = max($newhr[$k], $useh); }
24521 }
24522 }
24523 $extH = max($tabH, $colH[$m]);
24524 }
24525 $newhr[$i] = $extH - array_sum($newhr);
24526 for ($k=$top; $k<=$bottom; $k++) { $heightrow[$k] = $newhr[$k]; }
24527 }
24528
24529
24530 unset($c);
24531 }
24532
24533 $table['h'] = array_sum($heightrow);
24534 unset($heightrow);
24535
24536 if ($this->cacheTables) { fclose($fh); }
24537
24538 if ($table['borders_separate']) {
24539 $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'];
24540 }
24541 else {
24542 $table['h'] += $table['margin']['T'] + $table['margin']['B'] + $table['max_cell_border_width']['T']/2 + $table['max_cell_border_width']['B']/2;
24543 }
24544
24545 $maxrowheight = $checkmaxheightplus + $headerrowheightplus + $footerrowheightplus;
24546 $maxfirstrowheight = $firstrowheight + $headerrowheightplus + $footerrowheightplus; // includes thead, 1st row and tfoot
24547 return array($table['h'],$maxrowheight,$temppgheight,$remainingpage,$maxfirstrowheight);
24548}
24549
24550function _tableGetWidth(&$table, $i,$j, $fh){
24551 if ($this->cacheTables) {
24552 $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
24553 }
24554 else
24555 $cell = &$table['cells'][$i][$j];
24556 if ($cell) {
24557 if (isset($cell['x0'])) { return array($cell['x0'], $cell['w0']); }
24558 $x = 0;
24559 $widthcols = &$table['wc'];
24560 for( $k = 0 ; $k < $j ; $k++ ) $x += $widthcols[$k];
24561 $w = $widthcols[$j];
24562 if (isset($cell['colspan'])) {
24563 for ( $k = $j+$cell['colspan']-1 ; $k > $j ; $k-- ) $w += $widthcols[$k];
24564 }
24565 $cell['x0'] = $x;
24566 $cell['w0'] = $w;
24567 if ($this->cacheTables) {
24568 $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'x0');
24569 }
24570 return array($x, $w);
24571 }
24572 return array(0,0);
24573}
24574
24575function _splitTableGetWidth(&$table, $i,$j, $fh){
24576 if ($this->cacheTables) {
24577 $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
24578 }
24579 else
24580 $cell = &$table['cells'][$i][$j];
24581 if ($cell) {
24582 if (isset($cell['x0'])) return array($cell['x0'], $cell['w0']);
24583 $x = 0;
24584 $widthcols = &$table['wc'];
24585 $pg = $table['colPg'][$j];
24586 for( $k = 0 ; $k < $j ; $k++ ) {
24587 if ($table['colPg'][$k]==$pg) $x += $widthcols[$k];
24588 }
24589 $w = $widthcols[$j];
24590 if (isset($cell['colspan'])) {
24591 for ( $k = $j+$cell['colspan']-1 ; $k > $j ; $k-- ) if ($table['colPg'][$k]==$pg) $w += $widthcols[$k];
24592 }
24593 $cell['x0'] = $x;
24594 $cell['w0'] = $w;
24595 if ($this->cacheTables) {
24596 $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'x0');
24597 }
24598 return array($x, $w);
24599 }
24600 return array(0,0);
24601}
24602
24603
24604function _tableGetHeight(&$table, $i,$j, $fh){
24605 if ($this->cacheTables) {
24606 $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
24607 }
24608 else
24609 $cell = &$table['cells'][$i][$j];
24610 if ($cell){
24611 if (isset($cell['y0'])) return array($cell['y0'], $cell['h0']);
24612 $y = 0;
24613 $heightrow = &$table['hr'];
24614 for ($k=0;$k<$i;$k++) $y += $heightrow[$k];
24615 $h = $heightrow[$i];
24616 if (isset($cell['rowspan'])){
24617 for ($k=$i+$cell['rowspan']-1;$k>$i;$k--)
24618 $h += $heightrow[$k];
24619 }
24620 $cell['y0'] = $y;
24621 $cell['h0'] = $h;
24622 if ($this->cacheTables) {
24623 $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'y0');
24624 }
24625 return array($y, $h);
24626 }
24627 return array(0,0);
24628}
24629
24630function _tableGetMaxRowHeight($table, $row, $fh) {
24631 if ($row==$table['nc']-1) { return $table['hr'][$row]; }
24632 $maxrowheight = $table['hr'][$row];
24633 for ($i=$row+1;$i<$table['nr'];$i++) {
24634 $cellsset = 0;
24635 for ($j=0;$j<$table['nc'];$j++) {
24636 if ($this->cacheTables) {
24637 $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
24638 if ($cell) {
24639 if (isset($cell['colspan'])) { $cellsset += $cell['colspan']; }
24640 else $cellsset += 1;
24641 }
24642 }
24643 else {
24644 if ($table['cells'][$i][$j]) {
24645 if (isset($table['cells'][$i][$j]['colspan'])) { $cellsset += $table['cells'][$i][$j]['colspan']; }
24646 else $cellsset += 1;
24647 }
24648 }
24649 }
24650 if ($cellsset == $table['nc']) { return $maxrowheight; }
24651 else { $maxrowheight += $table['hr'][$i]; }
24652 }
24653 return $maxrowheight;
24654}
24655
24656
24657// CHANGED TO ALLOW TABLE BORDER TO BE SPECIFIED CORRECTLY - added border_details
24658function _tableRect($x, $y, $w, $h, $bord=-1, $details=array(), $buffer=false, $bSeparate=false, $cort='cell', $tablecorner='', $bsv=0, $bsh=0) {
24659 $cellBorderOverlay = array();
24660
24661 if ($bord==-1) { $this->Rect($x, $y, $w, $h); }
24662 else if ($this->simpleTables && ($cort=='cell')) {
24663 $this->SetLineWidth($details['L']['w']);
24664 if ($details['L']['c']) {
24665 $this->SetDColor($details['L']['c']);
24666 }
24667 else { $this->SetDColor($this->ConvertColor(0)); }
24668 $this->SetLineJoin(0);
24669 $this->Rect($x, $y, $w, $h);
24670 }
24671 else if ($bord){
24672 if (!$bSeparate && $buffer) {
24673 $priority = 'LRTB';
24674 for($p=0;$p<strlen($priority);$p++) {
24675 $side = $priority[$p];
24676 $details['p'] = $side ;
24677
24678 $dom = 0;
24679 if (isset($details[$side]['w'])) { $dom += ($details[$side]['w'] * 100000); }
24680 if (isset($details[$side]['style'])) { $dom += (array_search($details[$side]['style'],$this->borderstyles)*100) ; }
24681 if (isset($details[$side]['dom'])) { $dom += ($details[$side]['dom']*10); }
24682
24683 // Precedence to darker colours at joins
24684 $coldom = 0;
24685 if (isset($details[$side]['c']) && is_array($details[$side]['c'])) {
24686 if ($details[$side]['c']{0}==3) { // RGB
24687 $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);
24688 }
24689 } // 10 black - 0 white
24690 if ($coldom) { $dom += $coldom; }
24691 // Lastly precedence to RIGHT and BOTTOM cells at joins
24692 if (isset($details['cellposdom'])) { $dom += $details['cellposdom']; }
24693
24694 $save = false;
24695 if ($side == 'T' && $this->issetBorder($bord, _BORDER_TOP)) { $cbord = _BORDER_TOP; $save = true; }
24696 else if ($side == 'L' && $this->issetBorder($bord, _BORDER_LEFT)) { $cbord = _BORDER_LEFT; $save = true; }
24697 else if ($side == 'R' && $this->issetBorder($bord, _BORDER_RIGHT)) { $cbord = _BORDER_RIGHT; $save = true; }
24698 else if ($side == 'B' && $this->issetBorder($bord, _BORDER_BOTTOM)) { $cbord = _BORDER_BOTTOM; $save = true; }
24699
24700 if ($save) {
24701 $this->cellBorderBuffer[] = pack("A16nCnda6A10d14",
24702 str_pad(sprintf("%08.7f", $dom),16,"0",STR_PAD_LEFT),
24703 $cbord,
24704 ord($side),
24705 $details[$side]['s'],
24706 $details[$side]['w'],
24707 $details[$side]['c'],
24708 $details[$side]['style'],
24709 $x, $y, $w, $h,
24710 $details['mbw']['BL'],
24711 $details['mbw']['BR'],
24712 $details['mbw']['RT'],
24713 $details['mbw']['RB'],
24714 $details['mbw']['TL'],
24715 $details['mbw']['TR'],
24716 $details['mbw']['LT'],
24717 $details['mbw']['LB'],
24718 $details['cellposdom'],
24719 0
24720 );
24721 if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'groove' || $details[$side]['style'] == 'inset' || $details[$side]['style'] == 'outset' || $details[$side]['style'] == 'double' ) {
24722 $details[$side]['overlay'] = true;
24723 $this->cellBorderBuffer[] = pack("A16nCnda6A10d14",
24724 str_pad(sprintf("%08.7f", ($dom+4)),16,"0",STR_PAD_LEFT),
24725 $cbord,
24726 ord($side),
24727 $details[$side]['s'],
24728 $details[$side]['w'],
24729 $details[$side]['c'],
24730 $details[$side]['style'],
24731 $x, $y, $w, $h,
24732 $details['mbw']['BL'],
24733 $details['mbw']['BR'],
24734 $details['mbw']['RT'],
24735 $details['mbw']['RB'],
24736 $details['mbw']['TL'],
24737 $details['mbw']['TR'],
24738 $details['mbw']['LT'],
24739 $details['mbw']['LB'],
24740 $details['cellposdom'],
24741 1
24742 );
24743 }
24744 }
24745 }
24746 return;
24747 }
24748
24749 if (isset($details['p']) && strlen($details['p'])>1) { $priority = $details['p']; }
24750 else { $priority='LTRB'; }
24751 $Tw = 0;
24752 $Rw = 0;
24753 $Bw = 0;
24754 $Lw = 0;
24755 if (isset($details['T']['w'])) { $Tw = $details['T']['w']; }
24756 if (isset($details['R']['w'])) { $Rw = $details['R']['w']; }
24757 if (isset($details['B']['w'])) { $Bw = $details['B']['w']; }
24758 if (isset($details['L']['w'])) { $Lw = $details['L']['w']; }
24759
24760 $x2 = $x + $w; $y2 = $y + $h;
24761 $oldlinewidth = $this->LineWidth;
24762
24763 for($p=0;$p<strlen($priority);$p++) {
24764 $side = $priority[$p];
24765 $xadj = 0;
24766 $xadj2 = 0;
24767 $yadj = 0;
24768 $yadj2 = 0;
24769 $print = false;
24770 if ($Tw && $side=='T' && $this->issetBorder($bord, _BORDER_TOP)) { // TOP
24771 $ly1 = $y;
24772 $ly2 = $y;
24773 $lx1 = $x;
24774 $lx2 = $x2;
24775 $this->SetLineWidth($Tw);
24776 if ($cort == 'cell' || strpos($tablecorner,'L')!==false) {
24777 if ($Tw > $Lw) $xadj = ($Tw - $Lw)/2;
24778 if ($Tw < $Lw) $xadj = ($Tw + $Lw)/2;
24779 }
24780 else { $xadj = $Tw/2 - $bsh/2; }
24781 if ($cort == 'cell' || strpos($tablecorner,'R')!==false) {
24782 if ($Tw > $Rw) $xadj2 = ($Tw - $Rw)/2;
24783 if ($Tw < $Rw) $xadj2 = ($Tw + $Rw)/2;
24784 }
24785 else { $xadj2 = $Tw/2 - $bsh/2; }
24786 if (!$bSeparate && $details['mbw']['TL']) {
24787 $xadj = ($Tw - $details['mbw']['TL'])/2 ;
24788 }
24789 if (!$bSeparate && $details['mbw']['TR']) {
24790 $xadj2 = ($Tw - $details['mbw']['TR'])/2;
24791 }
24792 $print = true;
24793 }
24794 if ($Lw && $side=='L' && $this->issetBorder($bord, _BORDER_LEFT)) { // LEFT
24795 $ly1 = $y;
24796 $ly2 = $y2;
24797 $lx1 = $x;
24798 $lx2 = $x;
24799 $this->SetLineWidth($Lw);
24800 if ($cort == 'cell' || strpos($tablecorner,'T')!==false) {
24801 if ($Lw > $Tw) $yadj = ($Lw - $Tw)/2;
24802 if ($Lw < $Tw) $yadj = ($Lw + $Tw)/2;
24803 }
24804 else { $yadj = $Lw/2 - $bsv/2; }
24805 if ($cort == 'cell' || strpos($tablecorner,'B')!==false) {
24806 if ($Lw > $Bw) $yadj2 = ($Lw - $Bw)/2;
24807 if ($Lw < $Bw) $yadj2 = ($Lw + $Bw)/2;
24808 }
24809 else { $yadj2 = $Lw/2 - $bsv/2; }
24810 if (!$bSeparate && $details['mbw']['LT']) {
24811 $yadj = ($Lw - $details['mbw']['LT'])/2;
24812 }
24813 if (!$bSeparate && $details['mbw']['LB']) {
24814 $yadj2 = ($Lw - $details['mbw']['LB'])/2;
24815 }
24816 $print = true;
24817 }
24818 if ($Rw && $side=='R' && $this->issetBorder($bord, _BORDER_RIGHT)) { // RIGHT
24819 $ly1 = $y;
24820 $ly2 = $y2;
24821 $lx1 = $x2;
24822 $lx2 = $x2;
24823 $this->SetLineWidth($Rw);
24824 if ($cort == 'cell' || strpos($tablecorner,'T')!==false) {
24825 if ($Rw < $Tw) $yadj = ($Rw + $Tw)/2;
24826 if ($Rw > $Tw) $yadj = ($Rw - $Tw)/2;
24827 }
24828 else { $yadj = $Rw/2 - $bsv/2; }
24829
24830 if ($cort == 'cell' || strpos($tablecorner,'B')!==false) {
24831 if ($Rw > $Bw) $yadj2 = ($Rw - $Bw)/2;
24832 if ($Rw < $Bw) $yadj2 = ($Rw + $Bw)/2;
24833 }
24834 else { $yadj2 = $Rw/2 - $bsv/2; }
24835
24836 if (!$bSeparate && $details['mbw']['RT']) {
24837 $yadj = ($Rw - $details['mbw']['RT'])/2;
24838 }
24839 if (!$bSeparate && $details['mbw']['RB']) {
24840 $yadj2 = ($Rw - $details['mbw']['RB'])/2;
24841 }
24842 $print = true;
24843 }
24844 if ($Bw && $side=='B' && $this->issetBorder($bord, _BORDER_BOTTOM)) { // BOTTOM
24845 $ly1 = $y2;
24846 $ly2 = $y2;
24847 $lx1 = $x;
24848 $lx2 = $x2;
24849 $this->SetLineWidth($Bw);
24850 if ($cort == 'cell' || strpos($tablecorner,'L')!==false) {
24851 if ($Bw > $Lw) $xadj = ($Bw - $Lw)/2;
24852 if ($Bw < $Lw) $xadj = ($Bw + $Lw)/2;
24853 }
24854 else { $xadj = $Bw/2 - $bsh/2; }
24855 if ($cort == 'cell' || strpos($tablecorner,'R')!==false) {
24856 if ($Bw > $Rw) $xadj2 = ($Bw - $Rw)/2;
24857 if ($Bw < $Rw) $xadj2 = ($Bw + $Rw)/2;
24858 }
24859 else { $xadj2 = $Bw/2 - $bsh/2; }
24860 if (!$bSeparate && $details['mbw']['BL']) {
24861 $xadj = ($Bw - $details['mbw']['BL'])/2;
24862 }
24863 if (!$bSeparate && $details['mbw']['BR']) {
24864 $xadj2 = ($Bw - $details['mbw']['BR'])/2;
24865 }
24866 $print = true;
24867 }
24868
24869 // Now draw line
24870 if ($print) {
24871/*-- TABLES-ADVANCED-BORDERS --*/
24872 if ($details[$side]['style'] == 'double') {
24873 if (!isset($details[$side]['overlay']) || !$details[$side]['overlay'] || $bSeparate) {
24874 if ($details[$side]['c']) {
24875 $this->SetDColor($details[$side]['c']);
24876 }
24877 else { $this->SetDColor($this->ConvertColor(0)); }
24878 $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
24879 }
24880 if ((isset($details[$side]['overlay']) && $details[$side]['overlay']) || $bSeparate) {
24881 if ($bSeparate && $cort=='table') {
24882 if ($side=='T') {
24883 $xadj -= $this->LineWidth/2;
24884 $xadj2 -= $this->LineWidth;
24885 if ($this->issetBorder($bord, _BORDER_LEFT)) {
24886 $xadj += $this->LineWidth/2;
24887 }
24888 if ($this->issetBorder($bord, _BORDER_RIGHT)) {
24889 $xadj2 += $this->LineWidth;
24890 }
24891 }
24892 if ($side=='L') {
24893 $yadj -= $this->LineWidth/2;
24894 $yadj2 -= $this->LineWidth;
24895 if ($this->issetBorder($bord, _BORDER_TOP)) {
24896 $yadj += $this->LineWidth/2;
24897 }
24898 if ($this->issetBorder($bord, _BORDER_BOTTOM)) {
24899 $yadj2 += $this->LineWidth;
24900 }
24901 }
24902 if ($side=='B') {
24903 $xadj -= $this->LineWidth/2;
24904 $xadj2 -= $this->LineWidth;
24905 if ($this->issetBorder($bord, _BORDER_LEFT)) {
24906 $xadj += $this->LineWidth/2;
24907 }
24908 if ($this->issetBorder($bord, _BORDER_RIGHT)) {
24909 $xadj2 += $this->LineWidth;
24910 }
24911 }
24912 if ($side=='R') {
24913 $yadj -= $this->LineWidth/2;
24914 $yadj2 -= $this->LineWidth;
24915 if ($this->issetBorder($bord, _BORDER_TOP)) {
24916 $yadj += $this->LineWidth/2;
24917 }
24918 if ($this->issetBorder($bord, _BORDER_BOTTOM)) {
24919 $yadj2 += $this->LineWidth;
24920 }
24921 }
24922 }
24923
24924 $this->SetLineWidth($this->LineWidth/3);
24925
24926 $tbcol = $this->ConvertColor(255);
24927 for($l=0; $l <= $this->blklvl; $l++) {
24928 if ($this->blk[$l]['bgcolor']) {
24929 $tbcol = ($this->blk[$l]['bgcolorarray']); // mPDF 5.6.53
24930 }
24931 }
24932
24933 if ($bSeparate) {
24934 $cellBorderOverlay[] = array(
24935 'x' => $lx1 + $xadj,
24936 'y' => $ly1 + $yadj,
24937 'x2' => $lx2 - $xadj2,
24938 'y2' => $ly2 - $yadj2,
24939 'col' => $tbcol,
24940 'lw' => $this->LineWidth,
24941 );
24942 }
24943 else {
24944 $this->SetDColor($tbcol);
24945 $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
24946 }
24947 }
24948 }
24949
24950
24951 else if (isset($details[$side]['style']) && ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'groove' || $details[$side]['style'] == 'inset' || $details[$side]['style'] == 'outset')) {
24952 if (!isset($details[$side]['overlay']) || !$details[$side]['overlay'] || $bSeparate) {
24953 if ($details[$side]['c']) {
24954 $this->SetDColor($details[$side]['c']);
24955 }
24956 else { $this->SetDColor($this->ConvertColor(0)); }
24957 if ($details[$side]['style'] == 'outset' || $details[$side]['style'] == 'groove') {
24958 $nc = $this->_darkenColor($details[$side]['c']);
24959 $this->SetDColor($nc);
24960 }
24961 else if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'inset') {
24962 $nc = $this->_lightenColor($details[$side]['c']);
24963 $this->SetDColor($nc);
24964 }
24965 $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
24966 }
24967 if ((isset($details[$side]['overlay']) && $details[$side]['overlay']) || $bSeparate) {
24968 if ($details[$side]['c']) {
24969 $this->SetDColor($details[$side]['c']);
24970 }
24971 else { $this->SetDColor($this->ConvertColor(0)); }
24972 $doubleadj = ($this->LineWidth)/3;
24973 $this->SetLineWidth($this->LineWidth/2);
24974 $xadj3 = $yadj3 = $wadj3 = $hadj3 = 0;
24975
24976 if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'inset') {
24977 $nc = $this->_darkenColor($details[$side]['c']);
24978
24979 if ($bSeparate && $cort=='table') {
24980 if ($side=='T') {
24981 $yadj3 = $this->LineWidth/2;
24982 $xadj3 = -$this->LineWidth/2;
24983 $wadj3 = $this->LineWidth;
24984 if ($this->issetBorder($bord, _BORDER_LEFT)) {
24985 $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth;
24986 }
24987 if ($this->issetBorder($bord, _BORDER_RIGHT)) {
24988 $wadj3 -= $this->LineWidth*2;
24989 }
24990 }
24991 if ($side=='L') {
24992 $xadj3 = $this->LineWidth/2;
24993 $yadj3 = -$this->LineWidth/2;
24994 $hadj3 = $this->LineWidth;
24995 if ($this->issetBorder($bord, _BORDER_TOP)) {
24996 $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth;
24997 }
24998 if ($this->issetBorder($bord, _BORDER_BOTTOM)) {
24999 $hadj3 -= $this->LineWidth*2;
25000 }
25001 }
25002 if ($side=='B') {
25003 $yadj3 = $this->LineWidth/2;
25004 $xadj3 = -$this->LineWidth/2;
25005 $wadj3 = $this->LineWidth;
25006 }
25007 if ($side=='R') {
25008 $xadj3 = $this->LineWidth/2;
25009 $yadj3 = -$this->LineWidth/2;
25010 $hadj3 = $this->LineWidth;
25011 }
25012 }
25013
25014 else if ($side=='T') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; $wadj3 = -$this->LineWidth*2; }
25015 else if ($side=='L') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; $hadj3 = -$this->LineWidth*2; }
25016
25017 else if ($side=='B' && $bSeparate) { $yadj3 = $this->LineWidth/2; $wadj3 = $this->LineWidth/2; }
25018 else if ($side=='R' && $bSeparate) { $xadj3 = $this->LineWidth/2; $hadj3 = $this->LineWidth/2; }
25019
25020 else if ($side=='B') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; }
25021 else if ($side=='R') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; }
25022 }
25023 else {
25024 $nc = $this->_lightenColor($details[$side]['c']);
25025
25026 if ($bSeparate && $cort=='table') {
25027 if ($side=='T') {
25028 $yadj3 = $this->LineWidth/2;
25029 $xadj3 = -$this->LineWidth/2;
25030 $wadj3 = $this->LineWidth;
25031 if ($this->issetBorder($bord, _BORDER_LEFT)) {
25032 $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth;
25033 }
25034 }
25035 if ($side=='L') {
25036 $xadj3 = $this->LineWidth/2;
25037 $yadj3 = -$this->LineWidth/2;
25038 $hadj3 = $this->LineWidth;
25039 if ($this->issetBorder($bord, _BORDER_TOP)) {
25040 $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth;
25041 }
25042 }
25043 if ($side=='B') {
25044 $yadj3 = $this->LineWidth/2;
25045 $xadj3 = -$this->LineWidth/2;
25046 $wadj3 = $this->LineWidth;
25047 if ($this->issetBorder($bord, _BORDER_LEFT)) {
25048 $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth;
25049 }
25050 }
25051 if ($side=='R') {
25052 $xadj3 = $this->LineWidth/2;
25053 $yadj3 = -$this->LineWidth/2;
25054 $hadj3 = $this->LineWidth;
25055 if ($this->issetBorder($bord, _BORDER_TOP)) {
25056 $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth;
25057 }
25058 }
25059 }
25060
25061 else if ($side=='T') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; }
25062 else if ($side=='L') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; }
25063
25064 else if ($side=='B' && $bSeparate) { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; }
25065 else if ($side=='R' && $bSeparate) { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; }
25066
25067 else if ($side=='B') { $yadj3 = $this->LineWidth/2; $xadj3 = -$this->LineWidth/2; $wadj3 = $this->LineWidth; }
25068 else if ($side=='R') { $xadj3 = $this->LineWidth/2; $yadj3 = -$this->LineWidth/2; $hadj3 = $this->LineWidth; }
25069
25070 }
25071
25072 if ($bSeparate) {
25073 $cellBorderOverlay[] = array(
25074 'x' => $lx1 + $xadj + $xadj3,
25075 'y' => $ly1 + $yadj + $yadj3,
25076 'x2' => $lx2 - $xadj2 + $xadj3 + $wadj3,
25077 'y2' => $ly2 - $yadj2 + $yadj3 + $hadj3,
25078 'col' => $nc,
25079 'lw' => $this->LineWidth,
25080 );
25081 }
25082 else {
25083 $this->SetDColor($nc);
25084 $this->Line($lx1 + $xadj + $xadj3, $ly1 + $yadj + $yadj3, $lx2 - $xadj2 + $xadj3 + $wadj3, $ly2 - $yadj2 + $yadj3 + $hadj3);
25085 }
25086 }
25087 }
25088
25089
25090 else {
25091/*-- END TABLES-ADVANCED-BORDERS --*/
25092 if ($details[$side]['style'] == 'dashed') {
25093 $dashsize = 2; // final dash will be this + 1*linewidth
25094 $dashsizek = 1.5; // ratio of Dash/Blank
25095 $this->SetDash($dashsize,($dashsize/$dashsizek)+($this->LineWidth*2));
25096 }
25097 else if ($details[$side]['style'] == 'dotted') {
25098 $this->SetLineJoin(1);
25099 $this->SetLineCap(1);
25100 $this->SetDash(0.001,($this->LineWidth*2));
25101 }
25102 if ($details[$side]['c']) {
25103 $this->SetDColor($details[$side]['c']);
25104 }
25105 else { $this->SetDColor($this->ConvertColor(0)); }
25106 $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
25107/*-- TABLES-ADVANCED-BORDERS --*/
25108 }
25109/*-- END TABLES-ADVANCED-BORDERS --*/
25110
25111 // Reset Corners
25112 $this->SetDash();
25113 //BUTT style line cap
25114 $this->SetLineCap(2);
25115 }
25116 }
25117
25118 if ($bSeparate && count($cellBorderOverlay)) {
25119 foreach($cellBorderOverlay AS $cbo) {
25120 $this->SetLineWidth($cbo['lw']);
25121 $this->SetDColor($cbo['col']);
25122 $this->Line($cbo['x'], $cbo['y'], $cbo['x2'], $cbo['y2']);
25123 }
25124 }
25125
25126 // $this->SetLineWidth($oldlinewidth);
25127 // $this->SetDColor($this->ConvertColor(0));
25128 }
25129}
25130
25131
25132/*-- TABLES --*/
25133/*-- TABLES-ADVANCED-BORDERS --*/
25134function _lightenColor($c) {
25135 if (is_array($c)) { die('Color error in _lightencolor'); }
25136 if ($c{0}==3 || $c{0}==5) { // RGB
25137 list($h,$s,$l) = $this->rgb2hsl(ord($c{1})/255,ord($c{2})/255,ord($c{3})/255);
25138 $l += ((1 - $l)*0.8);
25139 list($r,$g,$b) = $this->hsl2rgb($h,$s,$l);
25140 $ret = array(3,$r,$g,$b);
25141 }
25142 else if ($c{0}==4 || $c{0}==6) { // CMYK
25143 $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)) );
25144 }
25145 else if ($c{0}==1) { // Grayscale
25146 $ret = array(1,min(255,(ord($c{1})+32)));
25147 }
25148 $c = array_pad($ret, 6, 0);
25149 $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) );
25150 return $cstr;
25151}
25152
25153
25154function _darkenColor($c) {
25155 if (is_array($c)) { die('Color error in _darkenColor'); }
25156 if ($c{0}==3 || $c{0}==5) { // RGB
25157 list($h,$s,$l) = $this->rgb2hsl(ord($c{1})/255,ord($c{2})/255,ord($c{3})/255);
25158 $s *= 0.25;
25159 $l *= 0.75;
25160 list($r,$g,$b) = $this->hsl2rgb($h,$s,$l);
25161 $ret = array(3,$r,$g,$b);
25162 }
25163 else if ($c{0}==4 || $c{0}==6) { // CMYK
25164 $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)) );
25165 }
25166 else if ($c{0}==1) { // Grayscale
25167 $ret = array(1,max(0,(ord($c{1})-32)));
25168 }
25169 $c = array_pad($ret, 6, 0);
25170 $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) );
25171 return $cstr;
25172}
25173
25174/*-- END TABLES-ADVANCED-BORDERS --*/
25175
25176
25177
25178function setBorder(&$var, $flag, $set = true) {
25179 $flag = intval($flag);
25180 if ($set) { $set = true; }
25181 $var = intval($var);
25182 $var = $set ? ($var | $flag) : ($var & ~$flag);
25183}
25184function issetBorder($var, $flag) {
25185 $flag = intval($flag);
25186 $var = intval($var);
25187 return (($var & $flag) == $flag);
25188}
25189
25190
25191function _table2cellBorder(&$tableb, &$cbdb, &$cellb, $bval) {
25192 if ($tableb && $tableb['w'] > $cbdb['w']) {
25193 $cbdb = $tableb;
25194 $this->setBorder($cellb, $bval);
25195 }
25196 else if ($tableb && $tableb['w'] == $cbdb['w']
25197 && array_search($tableb['style'],$this->borderstyles) > array_search($cbdb['style'],$this->borderstyles)) {
25198 $cbdb = $tableb;
25199 $this->setBorder($cellb, $bval);
25200 }
25201}
25202
25203// FIX BORDERS ********************************************
25204function _fixTableBorders(&$table){
25205 if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
25206 else { $fh = null; }
25207
25208 if (!$table['borders_separate'] && $table['border_details']['L']['w']) {
25209 $table['max_cell_border_width']['L'] = $table['border_details']['L']['w'];
25210 }
25211 if (!$table['borders_separate'] && $table['border_details']['R']['w']) {
25212 $table['max_cell_border_width']['R'] = $table['border_details']['R']['w'];
25213 }
25214 if (!$table['borders_separate'] && $table['border_details']['T']['w']) {
25215 $table['max_cell_border_width']['T'] = $table['border_details']['T']['w'];
25216 }
25217 if (!$table['borders_separate'] && $table['border_details']['B']['w']) {
25218 $table['max_cell_border_width']['B'] = $table['border_details']['B']['w'];
25219 }
25220 if ($this->simpleTables) { return; }
25221 $cells = &$table['cells'];
25222 $numcols = $table['nc'];
25223 $numrows = $table['nr'];
25224/*-- TABLES-ADVANCED-BORDERS --*/
25225 if (isset($table['topntail']) && $table['topntail']) { $tntborddet = $this->border_details($table['topntail']); }
25226 if (isset($table['thead-underline']) && $table['thead-underline']) { $thuborddet = $this->border_details($table['thead-underline']); }
25227/*-- END TABLES-ADVANCED-BORDERS --*/
25228
25229 for( $i = 0 ; $i < $numrows ; $i++ ) { //Rows
25230 for( $j = 0 ; $j < $numcols ; $j++ ) { //Columns
25231 if (isset($cells[$i][$j]) && $cells[$i][$j]) {
25232 if ($this->cacheTables) {
25233 $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
25234 }
25235 else
25236 $cell = &$cells[$i][$j];
25237 if ($this->packTableData) { // includes $this->cacheTables
25238 $cbord = $this->_unpackCellBorder($cell['borderbin']);
25239 }
25240 else {
25241 $cbord = &$cells[$i][$j];
25242 }
25243
25244 if (!$cbord['border'] && isset($table['border']) && $table['border'] && $this->table_border_attr_set) {
25245 $cbord['border'] = $table['border'];
25246 $cbord['border_details'] = $table['border_details'];
25247 }
25248
25249 if (isset($cell['colspan']) && $cell['colspan']>1) { $ccolsp = $cell['colspan']; }
25250 else { $ccolsp = 1; }
25251 if (isset($cell['rowspan']) && $cell['rowspan']>1) { $crowsp = $cell['rowspan']; }
25252 else { $crowsp = 1; }
25253
25254 $cbord['border_details']['cellposdom'] = ((($i+1)/$numrows) / 10000 ) + ((($j+1)/$numcols) / 10 );
25255 // Inherit Cell border from Table border
25256 if ($this->table_border_css_set && !$table['borders_separate']) {
25257 if ($i == 0) {
25258 $this->_table2cellBorder($table['border_details']['T'], $cbord['border_details']['T'], $cbord['border'], _BORDER_TOP);
25259 }
25260 if ($i == ($numrows-1) || ($i+$crowsp) == ($numrows) ) {
25261 $this->_table2cellBorder($table['border_details']['B'], $cbord['border_details']['B'], $cbord['border'], _BORDER_BOTTOM);
25262 }
25263 if ($j == 0) {
25264 $this->_table2cellBorder($table['border_details']['L'], $cbord['border_details']['L'], $cbord['border'], _BORDER_LEFT);
25265 }
25266 if ($j == ($numcols-1) || ($j+$ccolsp) == ($numcols) ) {
25267 $this->_table2cellBorder($table['border_details']['R'], $cbord['border_details']['R'], $cbord['border'], _BORDER_RIGHT);
25268 }
25269 }
25270
25271/*-- TABLES-ADVANCED-BORDERS --*/
25272 $fixbottom = true;
25273 if (isset($table['topntail']) && $table['topntail']) {
25274 if ($i == 0) {
25275 $cbord['border_details']['T'] = $tntborddet;
25276 $this->setBorder($cbord['border'], _BORDER_TOP);
25277 }
25278 if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']-1) {
25279 $cbord['border_details']['B'] = $tntborddet;
25280 $this->setBorder($cbord['border'], _BORDER_BOTTOM);
25281 $fixbottom = false;
25282 }
25283 else if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']) {
25284 if (!$table['borders_separate']) {
25285 $cbord['border_details']['T'] = $tntborddet;
25286 $this->setBorder($cbord['border'], _BORDER_TOP);
25287 }
25288 }
25289 if ($this->tableLevel==1 && $table['footernrows']>0 && $i == ($numrows-$table['footernrows']-1)) {
25290 if (!$table['borders_separate']) {
25291 $cbord['border_details']['B'] = $tntborddet;
25292 $this->setBorder($cbord['border'], _BORDER_BOTTOM);
25293 $fixbottom = false;
25294 }
25295 }
25296 else if ($this->tableLevel==1 && $table['footernrows']>0 && $i == ($numrows-$table['footernrows'])) {
25297 $cbord['border_details']['T'] = $tntborddet;
25298 $this->setBorder($cbord['border'], _BORDER_TOP);
25299 }
25300 if ($this->tabletheadjustfinished) { // $this->tabletheadjustfinished called from tableheader
25301 if (!$table['borders_separate']) {
25302 $cbord['border_details']['T'] = $tntborddet;
25303 $this->setBorder($cbord['border'], _BORDER_TOP);
25304 }
25305 }
25306 if ($i == ($numrows-1) || ($i+$crowsp) == ($numrows) ) {
25307 $cbord['border_details']['B'] = $tntborddet;
25308 $this->setBorder($cbord['border'], _BORDER_BOTTOM);
25309 }
25310 }
25311 if (isset($table['thead-underline']) && $table['thead-underline']) {
25312 if ($table['borders_separate']) {
25313 if ($i == 0) {
25314 $cbord['border_details']['B'] = $thuborddet;
25315 $this->setBorder($cbord['border'], _BORDER_BOTTOM);
25316 $fixbottom = false;
25317 }
25318 }
25319 else {
25320 if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']-1) {
25321 $cbord['border_details']['T'] = $thuborddet;
25322 $this->setBorder($cbord['border'], _BORDER_TOP);
25323 }
25324 else if ($this->tabletheadjustfinished) { // $this->tabletheadjustfinished called from tableheader
25325 $cbord['border_details']['T'] = $thuborddet;
25326 $this->setBorder($cbord['border'], _BORDER_TOP);
25327 }
25328 }
25329 }
25330
25331 // Collapse Border - Algorithm for conflicting borders
25332 // Hidden >> Width >> double>solid>dashed>dotted... >> style set on cell>table >> top/left>bottom/right
25333 // Do not turn off border which is overridden
25334 // Needed for page break for TOP/BOTTOM both to be defined in Collapsed borders
25335 // Means it is painted twice. (Left/Right can still disable overridden border)
25336 if (!$table['borders_separate']) {
25337 if (($i < ($numrows-1) || ($i+$crowsp) < $numrows ) && $fixbottom ) { // Bottom
25338 for ($cspi = 0; $cspi<$ccolsp; $cspi++) {
25339 // already defined Top for adjacent cell below
25340 if (isset($cells[($i+$crowsp)][$j+$cspi])) {
25341 if ($this->packTableData) {
25342 if ($this->cacheTables) {
25343 $adjc = $this->_uncacheCell($table['cells'][$i+$crowsp][$j+$cspi], '', $fh);
25344 }
25345 else { $adjc = $cells[($i+$crowsp)][$j+$cspi]; }
25346 $celladj = $this->_unpackCellBorder($adjc['borderbin']);
25347 }
25348 else { $celladj =& $cells[($i+$crowsp)][$j+$cspi]; }
25349 }
25350 else { $celladj = false; }
25351 if ($celladj && $celladj['border_details']['T']['s'] == 1) {
25352 $csadj = $celladj['border_details']['T']['w'];
25353 $csthis = $cbord['border_details']['B']['w'];
25354 // Hidden
25355 if ($cbord['border_details']['B']['style']=='hidden') {
25356 $celladj['border_details']['T'] = $cbord['border_details']['B'];
25357 $this->setBorder($celladj['border'] , _BORDER_TOP, false);
25358 $this->setBorder($cbord['border'] , _BORDER_BOTTOM , false);
25359 }
25360 else if ($celladj['border_details']['T']['style']=='hidden') {
25361 $cbord['border_details']['B'] = $celladj['border_details']['T'];
25362 $this->setBorder($cbord['border'] , _BORDER_BOTTOM , false);
25363 $this->setBorder($celladj['border'] , _BORDER_TOP, false);
25364 }
25365 // Width
25366 else if ($csthis > $csadj) {
25367 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
25368 $celladj['border_details']['T'] = $cbord['border_details']['B'];
25369 $this->setBorder($cbord['border'] , _BORDER_BOTTOM);
25370 }
25371 }
25372 else if ($csadj > $csthis) {
25373 if ($ccolsp < 2) { // don't overwrite this cell if it spans
25374 $cbord['border_details']['B'] = $celladj['border_details']['T'];
25375 $this->setBorder($celladj['border'] , _BORDER_TOP);
25376 }
25377 }
25378
25379 // double>solid>dashed>dotted...
25380 else if (array_search($cbord['border_details']['B']['style'],$this->borderstyles) > array_search($celladj['border_details']['T']['style'],$this->borderstyles)) {
25381 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
25382 $celladj['border_details']['T'] = $cbord['border_details']['B'];
25383 $this->setBorder($cbord['border'] , _BORDER_BOTTOM );
25384 }
25385 }
25386 else if (array_search($celladj['border_details']['T']['style'],$this->borderstyles) > array_search($cbord['border_details']['B']['style'],$this->borderstyles)) {
25387 if ($ccolsp < 2) { // don't overwrite this cell if it spans
25388 $cbord['border_details']['B'] = $celladj['border_details']['T'];
25389 $this->setBorder($celladj['border'] , _BORDER_TOP);
25390 }
25391 }
25392
25393
25394
25395 // Style set on cell vs. table
25396 else if ($celladj['border_details']['T']['dom'] > $cbord['border_details']['B']['dom']) {
25397 if ($ccolsp < 2) { // don't overwrite this cell if it spans
25398 $cbord['border_details']['B'] = $celladj['border_details']['T'];
25399 $this->setBorder($celladj['border'] , _BORDER_TOP);
25400 }
25401 }
25402 // Style set on cell vs. table - OR - LEFT/TOP (cell) in preference to BOTTOM/RIGHT
25403 else {
25404 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
25405 $celladj['border_details']['T'] = $cbord['border_details']['B'];
25406 $this->setBorder($cbord['border'] , _BORDER_BOTTOM );
25407 }
25408 }
25409 }
25410 else if ($celladj) {
25411 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
25412 $celladj['border_details']['T'] = $cbord['border_details']['B'];
25413 }
25414 }
25415 if ($celladj && $this->packTableData) {
25416 $celladj['borderbin'] = $this->_packCellBorder($celladj);
25417 unset($celladj['border']);
25418 unset($celladj['border_details']);
25419 }
25420 if ($this->cacheTables) {
25421 $this->_cacheUpdateBorder($celladj, $fh, $table['cells'][$i+$crowsp][$j+$cspi]);
25422 }
25423 unset($celladj);
25424 }
25425 }
25426
25427 if ($j < ($numcols-1) || ($j+$ccolsp) < $numcols ) { // Right-Left
25428 for ($cspi = 0; $cspi<$crowsp; $cspi++) {
25429 // already defined Left for adjacent cell to R
25430 if (isset($cells[($i+$cspi)][$j+$ccolsp])) {
25431 if ($this->packTableData) {
25432 if ($this->cacheTables) {
25433 $adjc = $this->_uncacheCell($table['cells'][$i+$cspi][$j+$ccolsp], '', $fh);
25434 }
25435 else { $adjc = $cells[($i+$cspi)][$j+$ccolsp]; }
25436 $celladj = $this->_unpackCellBorder($adjc['borderbin']);
25437 }
25438 else { $celladj =& $cells[$i+$cspi][$j+$ccolsp]; }
25439 }
25440 else { $celladj = false; }
25441 if ($celladj && $celladj['border_details']['L']['s'] == 1) {
25442 $csadj = $celladj['border_details']['L']['w'];
25443 $csthis = $cbord['border_details']['R']['w'];
25444 // Hidden
25445 if ($cbord['border_details']['R']['style']=='hidden') {
25446 $celladj['border_details']['L'] = $cbord['border_details']['R'];
25447 $this->setBorder($celladj['border'] , _BORDER_LEFT, false);
25448 $this->setBorder($cbord['border'] , _BORDER_RIGHT , false);
25449 }
25450 else if ($celladj['border_details']['L']['style']=='hidden') {
25451 $cbord['border_details']['R'] = $celladj['border_details']['L'];
25452 $this->setBorder($cbord['border'] , _BORDER_RIGHT , false);
25453 $this->setBorder($celladj['border'] , _BORDER_LEFT, false);
25454 }
25455 // Width
25456 else if ($csthis > $csadj) {
25457 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
25458 $celladj['border_details']['L'] = $cbord['border_details']['R'];
25459 $this->setBorder($cbord['border'] , _BORDER_RIGHT);
25460 $this->setBorder($celladj['border'] , _BORDER_LEFT, false);
25461 }
25462 }
25463 else if ($csadj > $csthis) {
25464 if ($crowsp < 2) { // don't overwrite this cell if it spans
25465 $cbord['border_details']['R'] = $celladj['border_details']['L'];
25466 $this->setBorder($cbord['border'] , _BORDER_RIGHT, false);
25467 $this->setBorder($celladj['border'] , _BORDER_LEFT);
25468 }
25469 }
25470
25471 // double>solid>dashed>dotted...
25472 else if (array_search($cbord['border_details']['R']['style'],$this->borderstyles) > array_search($celladj['border_details']['L']['style'],$this->borderstyles)) {
25473 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
25474 $celladj['border_details']['L'] = $cbord['border_details']['R'];
25475 $this->setBorder($celladj['border'] , _BORDER_LEFT, false);
25476 $this->setBorder($cbord['border'] , _BORDER_RIGHT);
25477 }
25478 }
25479 else if (array_search($celladj['border_details']['L']['style'],$this->borderstyles) > array_search($cbord['border_details']['R']['style'],$this->borderstyles)) {
25480 if ($crowsp < 2) { // don't overwrite this cell if it spans
25481 $cbord['border_details']['R'] = $celladj['border_details']['L'];
25482 $this->setBorder($cbord['border'] , _BORDER_RIGHT , false);
25483 $this->setBorder($celladj['border'] , _BORDER_LEFT);
25484 }
25485 }
25486
25487
25488 // Style set on cell vs. table
25489 else if ($celladj['border_details']['L']['dom'] > $cbord['border_details']['R']['dom']) {
25490 if ($crowsp < 2) { // don't overwrite this cell if it spans
25491 $cbord['border_details']['R'] = $celladj['border_details']['L'];
25492 $this->setBorder($celladj['border'] , _BORDER_LEFT);
25493 }
25494 }
25495 // Style set on cell vs. table - OR - LEFT/TOP (cell) in preference to BOTTOM/RIGHT
25496 else {
25497 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
25498 $celladj['border_details']['L'] = $cbord['border_details']['R'];
25499 $this->setBorder($cbord['border'] , _BORDER_RIGHT);
25500 }
25501 }
25502 }
25503 else if ($celladj) {
25504 // if right-cell border is not set
25505 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
25506 $celladj['border_details']['L'] = $cbord['border_details']['R'];
25507 }
25508 }
25509 if ($celladj && $this->packTableData) {
25510 $celladj['borderbin'] = $this->_packCellBorder($celladj);
25511 unset($celladj['border']);
25512 unset($celladj['border_details']);
25513 }
25514 if ($this->cacheTables) {
25515 $this->_cacheUpdateBorder($celladj, $fh, $table['cells'][$i+$cspi][$j+$ccolsp]);
25516 }
25517 unset($celladj);
25518 }
25519 }
25520 }
25521
25522
25523 // Set maximum cell border width meeting at LRTB edges of cell - used for extended cell border
25524 // ['border_details']['mbw']['LT'] = meeting border width - Left border - Top end
25525 if (!$table['borders_separate']) {
25526 $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $cbord['border_details']['L']['w']);
25527 $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $cbord['border_details']['R']['w']);
25528 $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $cbord['border_details']['T']['w']);
25529 $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $cbord['border_details']['B']['w']);
25530 $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $cbord['border_details']['L']['w']);
25531 $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $cbord['border_details']['R']['w']);
25532 $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $cbord['border_details']['T']['w']);
25533 $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $cbord['border_details']['B']['w']);
25534 if (($i+$crowsp) < $numrows && isset($cells[$i+$crowsp][$j])) { // Has Bottom adjoining cell
25535 if ($this->packTableData) {
25536 if ($this->cacheTables) {
25537 $adjc = $this->_uncacheCell($table['cells'][$i+$crowsp][$j], '', $fh);
25538 }
25539 else { $adjc = $cells[$i+$crowsp][$j]; }
25540 $celladj = $this->_unpackCellBorder($adjc['borderbin']);
25541 }
25542 else { $celladj =& $cells[$i+$crowsp][$j]; }
25543 $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $celladj['border_details']['L']['w'], $celladj['border_details']['mbw']['TL']);
25544 $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $celladj['border_details']['R']['w'], $celladj['border_details']['mbw']['TR']);
25545 $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $celladj['border_details']['mbw']['LT']);
25546 $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $celladj['border_details']['mbw']['RT']);
25547 unset($celladj);
25548 }
25549 if (($j+$ccolsp) < $numcols && isset($cells[$i][$j+$ccolsp])) { // Has Right adjoining cell
25550 if ($this->packTableData) {
25551 if ($this->cacheTables) {
25552 $adjc = $this->_uncacheCell($table['cells'][$i][$j+$ccolsp], '', $fh);
25553 }
25554 else { $adjc = $cells[$i][$j+$ccolsp]; }
25555 $celladj = $this->_unpackCellBorder($adjc['borderbin']);
25556 }
25557 else { $celladj =& $cells[$i][$j+$ccolsp]; }
25558 $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $celladj['border_details']['T']['w'], $celladj['border_details']['mbw']['LT']);
25559 $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $celladj['border_details']['B']['w'], $celladj['border_details']['mbw']['LB']);
25560 $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $celladj['border_details']['mbw']['TL']);
25561 $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $celladj['border_details']['mbw']['BL']);
25562 unset($celladj);
25563 }
25564
25565 if ($i > 0 && isset($cells[$i-1][$j]) && (($this->packTableData && $cells[$i-1][$j]['borderbin']) || $cells[$i-1][$j]['border'])) { // Has Top adjoining cell
25566 if ($this->packTableData) {
25567 if ($this->cacheTables) {
25568 $adjc = $this->_uncacheCell($table['cells'][$i-1][$j], '', $fh);
25569 }
25570 else { $adjc = $cells[$i-1][$j]; }
25571 $celladj = $this->_unpackCellBorder($adjc['borderbin']);
25572 }
25573 else { $celladj =& $cells[$i-1][$j]; }
25574 $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['L']['w'], $celladj['border_details']['mbw']['BL']);
25575 $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $celladj['border_details']['R']['w'], $celladj['border_details']['mbw']['BR']);
25576 $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $celladj['border_details']['mbw']['LB']);
25577 $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $celladj['border_details']['mbw']['RB']);
25578
25579 if ($celladj['border_details']['mbw']['BL']) {
25580 $celladj['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['mbw']['BL']);
25581 }
25582 if ($celladj['border_details']['mbw']['BR'] ) {
25583 $celladj['border_details']['mbw']['BR'] = max($celladj['border_details']['mbw']['BR'], $cbord['border_details']['mbw']['TR']);
25584 }
25585 if ($this->packTableData) { $cells[$i-1][$j]['borderbin'] = $this->_packCellBorder($celladj); }
25586 unset($celladj);
25587 }
25588 if ($j > 0 && isset($cells[$i][$j-1]) && (($this->packTableData && $cells[$i][$j-1]['borderbin']) || $cells[$i][$j-1]['border'])) { // Has Left adjoining cell
25589 if ($this->packTableData) {
25590 if ($this->cacheTables) {
25591 $adjc = $this->_uncacheCell($table['cells'][$i][$j-1], '', $fh);
25592 }
25593 else { $adjc = $cells[$i][$j-1]; }
25594 $celladj = $this->_unpackCellBorder($adjc['borderbin']);
25595 }
25596 else { $celladj =& $cells[$i][$j-1]; }
25597 $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $celladj['border_details']['T']['w'], $celladj['border_details']['mbw']['RT']);
25598 $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $celladj['border_details']['B']['w'], $celladj['border_details']['mbw']['RB']);
25599 $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $celladj['border_details']['mbw']['BR']);
25600 $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['mbw']['TR']);
25601
25602 if ($celladj['border_details']['mbw']['RT']) {
25603 $celladj['border_details']['mbw']['RT'] = max($celladj['border_details']['mbw']['RT'], $cbord['border_details']['mbw']['LT']);
25604 }
25605 if ($celladj['border_details']['mbw']['RB']) {
25606 $celladj['border_details']['mbw']['RB'] = max($celladj['border_details']['mbw']['RB'], $cbord['border_details']['mbw']['LB']);
25607 }
25608 if ($this->packTableData) { $cells[$i][$j-1]['borderbin'] = $this->_packCellBorder($celladj); }
25609 unset($celladj);
25610 }
25611
25612
25613 // Update maximum cell border width at LRTB edges of table - used for overall table width
25614 if ($j == 0 && $cbord['border_details']['L']['w']) {
25615 $table['max_cell_border_width']['L'] = max($table['max_cell_border_width']['L'],$cbord['border_details']['L']['w']);
25616 }
25617 if (($j == ($numcols-1) || ($j+$ccolsp) == $numcols ) && $cbord['border_details']['R']['w']) {
25618 $table['max_cell_border_width']['R'] = max($table['max_cell_border_width']['R'],$cbord['border_details']['R']['w']);
25619 }
25620 if ($i == 0 && $cbord['border_details']['T']['w']) {
25621 $table['max_cell_border_width']['T'] = max($table['max_cell_border_width']['T'],$cbord['border_details']['T']['w']);
25622 }
25623 if (($i == ($numrows-1) || ($i+$crowsp) == $numrows ) && $cbord['border_details']['B']['w']) {
25624 $table['max_cell_border_width']['B'] = max($table['max_cell_border_width']['B'],$cbord['border_details']['B']['w']);
25625 }
25626 }
25627/*-- END TABLES-ADVANCED-BORDERS --*/
25628
25629 if ($this->packTableData) { $cell['borderbin'] = $this->_packCellBorder($cbord); }
25630
25631 if ($this->cacheTables) {
25632 $this->_cacheUpdateBorder($cell, $fh, $table['cells'][$i][$j]);
25633 }
25634 unset($cbord );
25635 unset($cell );
25636 }
25637 }
25638 }
25639 if ($this->cacheTables) { fclose($fh); }
25640 unset($cell );
25641}
25642// END FIX BORDERS ************************************************************************************
25643
25644
25645function _reverseTableDir(&$table) {
25646 if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
25647 $cells = &$table['cells'];
25648 $numcols = $table['nc'];
25649 $numrows = $table['nr'];
25650 for( $i = 0 ; $i < $numrows ; $i++ ) { //Rows
25651 $row = array();
25652 for( $j = ($numcols-1) ; $j >= 0 ; $j-- ) { //Columns
25653 if (isset($cells[$i][$j]) && $cells[$i][$j]) {
25654 if ($this->cacheTables) {
25655 $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
25656 }
25657 else
25658 $cell = &$cells[$i][$j];
25659 $col = $numcols - $j - 1;
25660 if (isset($cell['colspan']) && $cell['colspan'] > 1) { $col -= ($cell['colspan']-1); }
25661 // Nested content
25662 for ($n=0; $n < count($cell['textbuffer']); $n++) {
25663 $t = $cell['textbuffer'][$n][0];
25664 if (substr($t,0,19) == "\xbb\xa4\xactype=nestedtable") {
25665 $objattr = $this->_getObjAttr($t);
25666 $objattr['col'] = $col;
25667 $cell['textbuffer'][$n][0] = "\xbb\xa4\xactype=nestedtable,objattr=".serialize($objattr)."\xbb\xa4\xac";
25668 $this->table[($this->tableLevel+1)][$objattr['nestedcontent']]['nestedpos'][1] = $col;
25669 if ($this->cacheTables) {
25670 $this->_cacheUpdateTxB($cell, $fh, $table['cells'][$i][$j]);
25671 }
25672 }
25673 }
25674 $row[$col] = $cells[$i][$j];
25675 unset($cell);
25676 }
25677 }
25678 for($f=0; $f < $numcols; $f++) {
25679 if (!isset($row[$f])) { $row[$f] = 0; }
25680 }
25681 $table['cells'][$i] = $row;
25682 }
25683 if ($this->cacheTables) { fclose($fh); }
25684}
25685
25686
25687function _tableWrite(&$table, $split=false, $startrow=0, $startcol=0, $splitpg=0, $rety = 0){
25688 $level = $table['level'];
25689 $levelid = $table['levelid'];
25690
25691 $cells = &$table['cells'];
25692 $numcols = $table['nc'];
25693 $numrows = $table['nr'];
25694
25695 if ($this->ColActive && $level==1) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
25696
25697 if (!$split || ($startrow==0 && $splitpg==0) || $startrow>0){
25698 // TABLE TOP MARGIN
25699 if ($table['margin']['T']) {
25700 if (!$this->table_rotate && $level==1) {
25701 $this->DivLn($table['margin']['T'],$this->blklvl,true,1); // collapsible
25702 }
25703 else {
25704 $this->y += ($table['margin']['T']);
25705 }
25706 }
25707 // Advance down page by half width of top border
25708 if ($table['borders_separate']) {
25709 if ($startrow>0 && (!isset($table['is_thead']) || count($table['is_thead'])==0))
25710 $adv = $table['border_spacing_V']/2;
25711 else
25712 $adv = $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2;
25713 }
25714 else {
25715 $adv = $table['max_cell_border_width']['T']/2;
25716 }
25717 if (!$this->table_rotate && $level==1) { $this->DivLn($adv); }
25718 else { $this->y += $adv; }
25719 }
25720
25721 if ($level==1) {
25722 $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'];
25723 $x0 = $this->x;
25724 $y0 = $this->y;
25725 $right = $x0 + $this->blk[$this->blklvl]['inner_width'];
25726 $outerfilled = $this->y; // Keep track of how far down the outer DIV bgcolor is painted (NB rowspans)
25727 $this->outerfilled = $this->y;
25728 $this->colsums = array();
25729 }
25730 else {
25731 $x0 = $this->x;
25732 $y0 = $this->y;
25733 $right = $x0 + $table['w'];
25734 }
25735
25736 if ($this->table_rotate) {
25737 $temppgwidth = $this->tbrot_maxw;
25738 $this->PageBreakTrigger = $pagetrigger = $y0 + ($this->blk[$this->blklvl]['inner_width']);
25739 if ($level==1) {
25740 $this->tbrot_y0 = $this->y - $adv - $table['margin']['T'] ;
25741 $this->tbrot_x0 = $this->x;
25742 $this->tbrot_w = $table['w'];
25743 if ($table['borders_separate']) { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2; }
25744 else { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['max_cell_border_width']['T']; }
25745 }
25746 }
25747 else {
25748 $this->PageBreakTrigger = $pagetrigger = ($this->h - $this->bMargin);
25749 if ($level==1) {
25750 $temppgwidth = $this->blk[$this->blklvl]['inner_width'];
25751 if (isset($table['a']) and ($table['w'] < $this->blk[$this->blklvl]['inner_width'])) {
25752 if ($table['a']=='C') { $x0 += ((($right-$x0) - $table['w'])/2); }
25753 else if ($table['a']=='R') { $x0 = $right - $table['w']; }
25754 }
25755 }
25756 else {
25757 $temppgwidth = $table['w'];
25758 }
25759 }
25760 if(!isset($table['overflow'])) { $table['overflow'] = null; }
25761 if ($table['overflow']=='hidden' && $level==1 && !$this->table_rotate && !$this->ColActive) {
25762 //Bounding rectangle to clip
25763 $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);
25764 $this->_out($this->tableClipPath);
25765 }
25766 else { $this->tableClipPath = ''; }
25767
25768
25769 if ($table['borders_separate']) { $indent = $table['margin']['L'] + $table['border_details']['L']['w'] + $table['padding']['L'] + $table['border_spacing_H']/2; }
25770 else { $indent = $table['margin']['L'] + $table['max_cell_border_width']['L']/2; }
25771 $x0 += $indent;
25772
25773 $returny = 0;
25774 $lastCol = 0;
25775 $tableheader = array();
25776 $tablefooter = array();
25777 $tableheaderrowheight = 0;
25778 $tablefooterrowheight = 0;
25779 $footery = 0;
25780
25781 // mPD 3.0 Set the Page & Column where table starts
25782 if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN
25783 $tablestartpage = 'EVEN';
25784 }
25785 else if (($this->mirrorMargins) && (($this->page)%2==1)) { // ODD
25786 $tablestartpage = 'ODD';
25787 }
25788 else { $tablestartpage = ''; }
25789 if ($this->ColActive) { $tablestartcolumn = $this->CurrCol; }
25790 else { $tablestartcolumn = ''; }
25791
25792 if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
25793 else { $fh = null; }
25794
25795 $y = $h = 0;
25796 for( $i = 0; $i < $numrows ; $i++ ) { //Rows
25797 if ($this->progressBar) { $this->UpdateProgressBar(7,intval(30 + ($i*40/$numrows)),' '); } // *PROGRESS-BAR*
25798 if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i] && $level==1) {
25799 $tablefooterrowheight += $table['hr'][$i];
25800 $tablefooter[$i][0]['trbackground-images'] = $table['trbackground-images'][$i];
25801 $tablefooter[$i][0]['trgradients'] = $table['trgradients'][$i];
25802 $tablefooter[$i][0]['trbgcolor'] = $table['bgcolor'][$i];
25803 for( $j = $startcol ; $j < $numcols ; $j++ ) { //Columns
25804 if (isset($cells[$i][$j]) && $cells[$i][$j]) {
25805 if ($this->cacheTables) {
25806 $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
25807 }
25808 else
25809 $cell = &$cells[$i][$j];
25810 if ($split) {
25811 if ($table['colPg'][$j] != $splitpg) { continue; }
25812 list($x,$w) = $this->_splitTableGetWidth($table, $i, $j, $fh);
25813 $js = $j - $startcol;
25814 }
25815 else {
25816 list($x,$w) = $this->_tableGetWidth($table, $i, $j, $fh);
25817 $js = $j;
25818 }
25819
25820 list($y,$h) = $this->_tableGetHeight($table, $i, $j, $fh);
25821 $x += $x0;
25822 $y += $y0;
25823 //Get info of tfoot ==>> table footer
25824 $tablefooter[$i][$js]['x'] = $x;
25825 $tablefooter[$i][$js]['y'] = $y;
25826 $tablefooter[$i][$js]['h'] = $h;
25827 $tablefooter[$i][$js]['w'] = $w;
25828 if (isset($cell['textbuffer'])) { $tablefooter[$i][$js]['textbuffer'] = $cell['textbuffer']; }
25829 else { $tablefooter[$i][$js]['textbuffer'] = ''; }
25830 $tablefooter[$i][$js]['a'] = $cell['a'];
25831 $tablefooter[$i][$js]['R'] = $cell['R'];
25832 $tablefooter[$i][$js]['va'] = $cell['va'];
25833 $tablefooter[$i][$js]['mih'] = $cell['mih'];
25834 $tablefooter[$i][$js]['gradient'] = $cell['gradient']; // *BACKGROUNDS*
25835 $tablefooter[$i][$js]['background-image'] = $cell['background-image']; // *BACKGROUNDS*
25836 //CELL FILL BGCOLOR
25837 if (!$this->simpleTables){
25838 if ($this->packTableData) {
25839 $c = $this->_unpackCellBorder($cell['borderbin']);
25840 $tablefooter[$i][$js]['border'] = $c['border'];
25841 $tablefooter[$i][$js]['border_details'] = $c['border_details'];
25842 }
25843 else {
25844 $tablefooter[$i][$js]['border'] = $cell['border'];
25845 $tablefooter[$i][$js]['border_details'] = $cell['border_details'];
25846 }
25847 }
25848 else if ($this->simpleTables){
25849 $tablefooter[$i][$js]['border'] = $table['simple']['border'];
25850 $tablefooter[$i][$js]['border_details'] = $table['simple']['border_details'];
25851 }
25852 $tablefooter[$i][$js]['bgcolor'] = $cell['bgcolor'];
25853 $tablefooter[$i][$js]['padding'] = $cell['padding'];
25854 $tablefooter[$i][$js]['rowspan'] = $cell['rowspan'];
25855 $tablefooter[$i][$js]['colspan'] = $cell['colspan'];
25856 }
25857 }
25858 }
25859 }
25860
25861 if ($level==1) { $this->_out('___TABLE___BACKGROUNDS'.$this->uniqstr); }
25862 $tableheaderadj = 0;
25863 $tablefooteradj = 0;
25864
25865 $tablestartpageno = $this->page;
25866
25867 //Draw Table Contents and Borders
25868 for( $i = 0; $i < $numrows ; $i++ ) { //Rows
25869 if ($split && $startrow > 0) {
25870 $thnr = (isset($table['is_thead']) ? count($table['is_thead']) : 0);
25871 if ($i >= $thnr && $i < $startrow) { continue; }
25872 if ($i == $startrow){ $returny = $rety - $tableheaderrowheight; }
25873 }
25874
25875 // Get Maximum row/cell height in row - including rowspan>1 + 1 overlapping
25876 $maxrowheight = $this->_tableGetMaxRowHeight($table, $i, $fh);
25877
25878 $skippage = false;
25879 $newpagestarted = false;
25880 for( $j = $startcol ; $j < $numcols ; $j++ ) { //Columns
25881 if ($split) {
25882 if ($table['colPg'][$j] > $splitpg) { break; }
25883 $lastCol = $j;
25884 }
25885 if (isset($cells[$i][$j]) && $cells[$i][$j]) {
25886 if ($this->cacheTables) {
25887 $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
25888 }
25889 else
25890 $cell = &$cells[$i][$j];
25891 if ($split) {
25892 $lastCol = $j + (isset($cell['colspan']) ? ($cell['colspan']-1) : 0) ;
25893 list($x,$w) = $this->_splitTableGetWidth($table, $i, $j, $fh);
25894 }
25895 else { list($x,$w) = $this->_tableGetWidth($table, $i, $j, $fh); }
25896
25897 list($y,$h) = $this->_tableGetHeight($table, $i, $j, $fh);
25898 $x += $x0;
25899 $y += $y0;
25900 $y -= $returny;
25901
25902 if ($table['borders_separate']) {
25903 if (!empty($tablefooter) || $i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows) || (!isset($cell['rowspan']) && ($i+1) == $numrows) ) {
25904 $extra = $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2;
25905 //$extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2;
25906 }
25907 else {
25908 $extra = $table['border_spacing_V']/2;
25909 }
25910 }
25911 else { $extra = $table['max_cell_border_width']['B']/2; }
25912
25913 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 ) {
25914
25915 if (!$skippage) {
25916 $finalSpread = true;
25917 $firstSpread = true;
25918 if ($split) {
25919 for($t=$startcol; $t<$numcols; $t++) {
25920 // Are there more columns to print on a next page?
25921 if ($table['colPg'][$t] > $splitpg) {
25922 $finalSpread = false;
25923 break;
25924 }
25925 }
25926 if ($startcol>0) { $firstSpread = false; }
25927 }
25928
25929 if (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && $i > 0 ) {
25930 $this->y = $y;
25931 $ya = $this->y;
25932 $this->TableHeaderFooter($tablefooter,$tablestartpage,$tablestartcolumn,'F',$level, $firstSpread, $finalSpread);
25933 if ($this->table_rotate) {
25934 $this->tbrot_h += $this->y - $ya ;
25935 }
25936 $tablefooteradj = $this->y - $ya ;
25937 }
25938 $y -= $y0;
25939 $returny += $y;
25940
25941 $oldcolumn = $this->CurrCol;
25942 if ($this->AcceptPageBreak()) {
25943 $newpagestarted = true;
25944 $this->y = $y + $y0;
25945
25946 // Move down to account for border-spacing or
25947 // extra half border width in case page breaks in middle
25948 if($i>0 && !$this->table_rotate && $level==1 && !$this->ColActive) {
25949 if ($table['borders_separate']) {
25950 $adv = $table['border_spacing_V']/2;
25951 // If table footer
25952 if (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && $i > 0 ) {
25953 $adv += ($table['padding']['B'] + $table['border_details']['B']['w']);
25954 }
25955 }
25956 else {
25957 $maxbwtop = 0;
25958 $maxbwbottom = 0;
25959 if (!$this->simpleTables){
25960 if (!empty($tablefooter)) { $maxbwbottom = $table['max_cell_border_width']['B']; }
25961 else {
25962 $brow = $i-1;
25963 for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) {
25964 if (isset($cells[$brow][$ctj]) && $cells[$brow][$ctj]) {
25965 if ($this->cacheTables) {
25966 $cadj = $this->_uncacheCell($table['cells'][$brow][$ctj], '', $fh);
25967 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cadj['borderbin']);
25968 }
25969 else if ($this->packTableData) {
25970 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$brow][$ctj]['borderbin']);
25971 }
25972 else {
25973 $bb = $cells[$brow][$ctj]['border_details']['B']['w'];
25974 }
25975 $maxbwbottom = max($maxbwbottom , $bb);
25976 }
25977 }
25978 }
25979 if (!empty($tableheader)) { $maxbwtop = $table['max_cell_border_width']['T']; }
25980 else {
25981 $trow = $i-1;
25982 for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) {
25983 if (isset($cells[$trow][$ctj]) && $cells[$trow][$ctj]) {
25984 if ($this->cacheTables) {
25985 $cadj = $this->_uncacheCell($table['cells'][$trow][$ctj], '', $fh);
25986 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cadj['borderbin']);
25987 }
25988 else if ($this->packTableData) {
25989 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$trow][$ctj]['borderbin']);
25990 }
25991 else {
25992 $bt = $cells[$trow][$ctj]['border_details']['T']['w'];
25993 }
25994 $maxbwtop = max($maxbwtop , $bt);
25995 }
25996 }
25997 }
25998 }
25999 else if ($this->simpleTables){
26000 $maxbwtop = $table['simple']['border_details']['T']['w'];
26001 $maxbwbottom = $table['simple']['border_details']['B']['w'];
26002 }
26003 $adv = $maxbwbottom /2;
26004 }
26005 $this->y += $adv;
26006 }
26007
26008 // Rotated table split over pages - needs this->y for borders/backgrounds
26009 if($i>0 && $this->table_rotate && $level==1) {
26010 // $this->y = $y0 + $this->tbrot_w;
26011 }
26012
26013 if ($this->tableClipPath ) { $this->_out("Q"); }
26014
26015 $bx = $x0;
26016 $by = $y0;
26017
26018 if ($table['borders_separate']) {
26019 $bx -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']/2);
26020 if ($tablestartpageno != $this->page) { // IF already broken across a previous pagebreak
26021 $by += $table['max_cell_border_width']['T']/2;
26022 if (empty($tableheader)) { $by -= ($table['border_spacing_V']/2); }
26023 }
26024 else {
26025 $by -= ($table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2);
26026 }
26027 }
26028
26029 else if ($tablestartpageno != $this->page && !empty($tableheader)) { $by += $maxbwtop /2; }
26030
26031 $by -= $tableheaderadj;
26032 $bh = $this->y - $by + $tablefooteradj;
26033 if (!$table['borders_separate']) { $bh -= $adv ; }
26034 if ($split) {
26035 $bw = 0;
26036 for($t=$startcol; $t<$numcols; $t++) {
26037 if ($table['colPg'][$t] == $splitpg) { $bw += $table['wc'][$t]; }
26038 if ($table['colPg'][$t] > $splitpg) { break; }
26039 }
26040 if ($table['borders_separate']) {
26041 if ($firstSpread) {
26042 $bw += $table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H'];
26043 }
26044 else {
26045 $bx += ($table['padding']['L'] + $table['border_details']['L']['w']);
26046 $bw += $table['border_spacing_H'];
26047 }
26048 if ($finalSpread) {
26049 $bw += $table['padding']['R'] + $table['border_details']['R']['w']/2 + $table['border_spacing_H'];
26050 }
26051 }
26052 }
26053 else {
26054 $bw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
26055 }
26056
26057 // mPDF 5.4.16
26058 if ($this->splitTableBorderWidth && ($this->keepColumns || !$this->ColActive) && empty($tablefooter) && $i > 0 && $table['border_details']['B']['w']) {
26059 $prevDrawColor = $this->DrawColor;
26060 $lw = $this->LineWidth;
26061 $this->SetLineWidth($this->splitTableBorderWidth);
26062 $this->SetDColor($table['border_details']['B']['c']);
26063 $this->SetLineJoin(0);
26064 $this->SetLineCap(0);
26065 $blx = $bx;
26066 $blw = $bw;
26067 if (!$table['borders_separate']) {
26068 $blx -= ($table['max_cell_border_width']['L']/2);
26069 $blw += ($table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2);
26070 }
26071 $this->Line($blx,$this->y+($this->splitTableBorderWidth/2),$blx+$blw,$this->y+($this->splitTableBorderWidth/2));
26072 $this->DrawColor = $prevDrawColor;
26073 $this->_out($this->DrawColor);
26074 $this->SetLineWidth($lw);
26075 $this->SetLineJoin(2);
26076 $this->SetLineCap(2);
26077 }
26078
26079 if (!$this->ColActive && ($i > 0 || $j > 0)) {
26080 if (isset($table['bgcolor'][-1])) {
26081 $color = $this->ConvertColor($table['bgcolor'][-1]);
26082 if ($color) {
26083 if (!$table['borders_separate']) { $bh -= $table['max_cell_border_width']['B']/2; }
26084 $this->tableBackgrounds[$level*9][] = array('gradient'=>false, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'col'=>$color);
26085 }
26086 }
26087
26088/*-- BACKGROUNDS --*/
26089 if (isset($table['gradient'])) {
26090 $g = $this->grad->parseBackgroundGradient($table['gradient']);
26091 if ($g) {
26092 $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'=>'');
26093 }
26094 }
26095
26096 if (isset($table['background-image'])) {
26097 if ($table['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['background-image']['gradient'] )) {
26098 $g = $this->grad->parseMozGradient( $table['background-image']['gradient'] );
26099 if ($g) {
26100 $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'=>'');
26101 }
26102 }
26103 else {
26104 $image_id = $table['background-image']['image_id'];
26105 $orig_w = $table['background-image']['orig_w'];
26106 $orig_h = $table['background-image']['orig_h'];
26107 $x_pos = $table['background-image']['x_pos'];
26108 $y_pos = $table['background-image']['y_pos'];
26109 $x_repeat = $table['background-image']['x_repeat'];
26110 $y_repeat = $table['background-image']['y_repeat'];
26111 $resize = $table['background-image']['resize'];
26112 $opacity = $table['background-image']['opacity'];
26113 $itype = $table['background-image']['itype'];
26114 $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);
26115 }
26116 }
26117/*-- END BACKGROUNDS --*/
26118 }
26119
26120 // $this->AcceptPageBreak() has moved tablebuffer to $this->pages content
26121 if ($this->tableBackgrounds) {
26122 $s = $this->PrintTableBackgrounds();
26123 if ($this->bufferoutput) {
26124 $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->headerbuffer);
26125 $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->headerbuffer );
26126 }
26127 else {
26128 $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
26129 $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->pages[$this->page]);
26130 }
26131 $this->tableBackgrounds = array();
26132 }
26133
26134 if ($split) {
26135 if ($i == 0 && $j == 0) { $y0 = -1; }
26136 else if ($finalSpread) {
26137 $splitpg = 0;
26138 $startcol = 0;
26139 $startrow = $i;
26140 }
26141 else {
26142 $splitpg++;
26143 $startcol = $t;
26144 $returny -= $y;
26145 }
26146 return array(false, $startrow, $startcol, $splitpg, $returny, $y0);
26147 }
26148
26149 $this->AddPage($this->CurOrientation);
26150
26151 $this->_out('___TABLE___BACKGROUNDS'.$this->uniqstr);
26152
26153
26154 if ($this->tableClipPath ) { $this->_out($this->tableClipPath); }
26155
26156 // Added to correct for OddEven Margins
26157 $x= $x + $this->MarginCorrection;
26158 $x0= $x0 + $this->MarginCorrection;
26159
26160 // mPDF 5.4.16
26161 if ($this->splitTableBorderWidth && ($this->keepColumns || !$this->ColActive) && empty($tableheader) && $i > 0 && $table['border_details']['T']['w'] ) {
26162 $prevDrawColor = $this->DrawColor;
26163 $lw = $this->LineWidth;
26164 $this->SetLineWidth($this->splitTableBorderWidth);
26165 $this->SetDColor($table['border_details']['T']['c']);
26166 $this->SetLineJoin(0);
26167 $this->SetLineCap(0);
26168 $blx += $this->MarginCorrection;
26169 $this->Line($blx,$this->y-($this->splitTableBorderWidth/2),$blx+$blw,$this->y-($this->splitTableBorderWidth/2));
26170 $this->DrawColor = $prevDrawColor;
26171 $this->_out($this->DrawColor);
26172 $this->SetLineWidth($lw);
26173 $this->SetLineJoin(2);
26174 $this->SetLineCap(2);
26175 }
26176
26177 // Move down to account for half of top border-spacing or
26178 // extra half border width in case page was broken in middle
26179 if($i>0 && !$this->table_rotate && $level==1 && $table['headernrows']==0) {
26180 if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2; }
26181 else {
26182 $maxbwtop = 0;
26183 for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) {
26184 if (isset($cells[$i][$ctj]) && $cells[$i][$ctj]) {
26185 if (!$this->simpleTables){
26186 if ($this->cacheTables) {
26187 $celltj = $this->_uncacheCell($table['cells'][$i][$ctj], '', $fh);
26188 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($celltj['borderbin']);
26189 }
26190 else if ($this->packTableData) {
26191 list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$i][$ctj]['borderbin']);
26192 }
26193 else {
26194 $bt = $cells[$i][$ctj]['border_details']['T']['w'];
26195 }
26196 $maxbwtop = max($maxbwtop, $bt);
26197 }
26198 else if ($this->simpleTables){
26199 $maxbwtop = max($maxbwtop, $table['simple']['border_details']['T']['w']);
26200 }
26201 }
26202 }
26203 $adv = $maxbwtop /2;
26204 }
26205 $this->y += $adv;
26206 }
26207
26208
26209 if ($this->table_rotate) {
26210 $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'];
26211 if ($table['borders_separate']) { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2; }
26212 else { $this->tbrot_h = $table['margin']['T'] + $table['max_cell_border_width']['T'] ; }
26213 $this->tbrot_y0 = $this->y;
26214 $pagetrigger = $y0 - $tableheaderadj + ($this->blk[$this->blklvl]['inner_width']);
26215 }
26216 else {
26217 $pagetrigger = $this->PageBreakTrigger;
26218 }
26219
26220 if ($this->kwt_saved && $level==1) {
26221 $this->kwt_moved = true;
26222 }
26223
26224
26225 // Disable Table header repeat if Keep Block together
26226 if (!$this->keep_block_together && !empty($tableheader)) {
26227 $ya = $this->y;
26228 $this->TableHeaderFooter($tableheader,$tablestartpage,$tablestartcolumn,'H',$level);
26229 if ($this->table_rotate) {
26230 $this->tbrot_h = $this->y - $ya ;
26231 }
26232 $tableheaderadj = $this->y - $ya ;
26233 }
26234
26235 else if ($i==0 && !$this->keep_block_together && !$this->table_rotate && $level==1 && !$this->ColActive) {
26236 // Advance down page
26237 if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2 + $table['border_details']['T']['w'] + $table['padding']['T']; }
26238 else { $adv = $table['max_cell_border_width']['T'] /2 ; }
26239 if ($adv) {
26240 if ($this->table_rotate) {
26241 $this->y += ($adv);
26242 }
26243 else {
26244 $this->DivLn($adv,$this->blklvl,true);
26245 }
26246 }
26247 }
26248
26249 $outerfilled = 0;
26250 $y = $y0 = $this->y;
26251 }
26252
26253/*-- COLUMNS --*/
26254 // COLS
26255 // COLUMN CHANGE
26256 if ($this->CurrCol != $oldcolumn) {
26257 // Added to correct for Columns
26258 $x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
26259 $x0 += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
26260 if ($this->CurrCol == 0) { // just added a page - possibly with tableheader
26261 $y0 = $this->y; // this->y0 is global used by Columns - $y0 is internal to tablewrite
26262 }
26263 else {
26264 $y0 = $this->y0; // this->y0 is global used by Columns - $y0 is internal to tablewrite
26265 }
26266 $y = $y0;
26267 $outerfilled = 0;
26268 if ($this->CurrCol != 0 && ($this->keepColumns && $this->ColActive) && !empty($tableheader) && $i > 0 ) {
26269 $this->x = $x;
26270 $this->y = $y;
26271 $this->TableHeaderFooter($tableheader,$tablestartpage,$tablestartcolumn,'H',$level);
26272 $y0 = $y=$this->y;
26273 }
26274 }
26275/*-- END COLUMNS --*/
26276 }
26277 $skippage = true;
26278 }
26279
26280 $this->x = $x;
26281 $this->y = $y;
26282
26283 if ($this->kwt_saved && $level==1) {
26284 $this->printkwtbuffer();
26285 $x0 = $x = $this->x;
26286 $y0 = $y = $this->y;
26287 $this->kwt_moved = false;
26288 $this->kwt_saved = false;
26289 }
26290
26291
26292 // Set the Page & Column where table actually starts
26293 if ($i==0 && $j==0 && $level==1) {
26294 if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN
26295 $tablestartpage = 'EVEN';
26296 }
26297 else if (($this->mirrorMargins) && (($this->page)%2==1)) { // ODD
26298 $tablestartpage = 'ODD';
26299 }
26300 else { $tablestartpage = ''; }
26301 $tablestartpageno = $this->page;
26302 if ($this->ColActive) { $tablestartcolumn = $this->CurrCol; } // *COLUMNS*
26303 }
26304
26305
26306 //ALIGN
26307 $align = $cell['a'];
26308
26309
26310/*-- COLUMNS --*/
26311 // If outside columns, this is done in PaintDivBB
26312 if ($this->ColActive) {
26313 //OUTER FILL BGCOLOR of DIVS
26314 if ($this->blklvl > 0 && ($j==0) && !$this->table_rotate && $level==1) {
26315 $firstblockfill = $this->GetFirstBlockFill();
26316 if ($firstblockfill && $this->blklvl >= $firstblockfill) {
26317 $divh = $maxrowheight;
26318 // Last row
26319 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
26320 if ($table['borders_separate']) {
26321 $adv = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2;
26322 }
26323 else {
26324 $adv = $table['margin']['B'] + $table['max_cell_border_width']['B']/2;
26325 }
26326 $divh += $adv; //last row: fill bottom half of bottom border (y advanced at end)
26327 }
26328
26329 if (($this->y + $divh) > $outerfilled ) { // if not already painted by previous rowspan
26330 $bak_x = $this->x;
26331 $bak_y = $this->y;
26332 if ($outerfilled > $this->y) {
26333 $divh = ($this->y + $divh) - $outerfilled;
26334 $this->y = $outerfilled;
26335 }
26336
26337 $this->DivLn($divh,-3,false);
26338 $outerfilled = $this->y + $divh;
26339 // Reset current block fill
26340 $bcor = $this->blk[$this->blklvl]['bgcolorarray'];
26341 if ($bcor ) $this->SetFColor($bcor);
26342 $this->x = $bak_x;
26343 $this->y = $bak_y;
26344 }
26345 }
26346 }
26347 }
26348
26349
26350 //TABLE BACKGROUND FILL BGCOLOR - for cellSpacing
26351 if ($this->ColActive) {
26352 if ($table['borders_separate']) {
26353 $fill = isset($table['bgcolor'][-1]) ? $table['bgcolor'][-1] : 0;
26354 if ($fill) {
26355 $color = $this->ConvertColor($fill);
26356 if ($color) {
26357 $xadj = ($table['border_spacing_H']/2);
26358 $yadj = ($table['border_spacing_V']/2);
26359 $wadj = $table['border_spacing_H'];
26360 $hadj = $table['border_spacing_V'];
26361 if ($i == 0) { // Top
26362 $yadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
26363 $hadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
26364 }
26365 if ($j == 0) { // Left
26366 $xadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
26367 $wadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
26368 }
26369 if ($i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows) || (!isset($cell['rowspan']) && ($i+1) == $numrows)) { // Bottom
26370 $hadj += $table['padding']['B'] + $table['border_details']['B']['w'] ;
26371 }
26372 if ($j == ($numcols-1) || (isset($cell['colspan']) && ($j+$cell['colspan']) == $numcols) || (!isset($cell['colspan']) && ($j+1) == $numcols)) { // Right
26373 $wadj += $table['padding']['R'] + $table['border_details']['R']['w'] ;
26374 }
26375 $this->SetFColor($color);
26376 $this->Rect($x - $xadj, $y - $yadj, $w + $wadj, $h + $hadj, 'F');
26377 }
26378 }
26379 }
26380 }
26381/*-- END COLUMNS --*/
26382
26383 if ($table['empty_cells']!='hide' || !empty($cell['textbuffer']) || (isset($cell['nestedcontent']) && $cell['nestedcontent']) || !$table['borders_separate'] ) { $paintcell = true; }
26384 else { $paintcell = false; }
26385
26386 //Set Borders
26387 $bord = 0;
26388 $bord_det = array();
26389
26390 if (!$this->simpleTables){
26391 if ($this->packTableData) {
26392 if ($cell['borderbin']) {
26393 $c = $this->_unpackCellBorder($cell['borderbin']);
26394 $bord = $c['border'];
26395 $bord_det = $c['border_details'];
26396 }
26397 }
26398 else if ($cell['border']) {
26399 $bord = $cell['border'];
26400 $bord_det = $cell['border_details'];
26401 }
26402 }
26403 else if ($this->simpleTables){
26404 if ($table['simple']['border']) {
26405 $bord = $table['simple']['border'];
26406 $bord_det = $table['simple']['border_details'];
26407 }
26408 }
26409
26410 //TABLE ROW OR CELL FILL BGCOLOR
26411 $fill = 0;
26412 if (isset($cell['bgcolor']) && $cell['bgcolor'] && $cell['bgcolor']!='transparent') {
26413 $fill = $cell['bgcolor'];
26414 $leveladj = 6;
26415 }
26416 else if (isset($table['bgcolor'][$i]) && $table['bgcolor'][$i] && $table['bgcolor'][$i]!='transparent') { // Row color
26417 $fill = $table['bgcolor'][$i];
26418 $leveladj = 3;
26419 }
26420 if ($fill && $paintcell) {
26421 $color = $this->ConvertColor($fill);
26422 if ($color) {
26423 if ($table['borders_separate']) {
26424 if ($this->ColActive) {
26425 $this->SetFColor($color);
26426 $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');
26427 }
26428 else {
26429 $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);
26430 }
26431 }
26432 else {
26433 if ($this->ColActive) {
26434 $this->SetFColor($color);
26435 $this->Rect($x, $y, $w, $h, 'F');
26436 }
26437 else {
26438 $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>$x, 'y'=>$y, 'w'=>$w, 'h'=>$h, 'col'=>$color);
26439 }
26440 }
26441 }
26442 }
26443
26444/*-- BACKGROUNDS --*/
26445 if (isset($cell['gradient']) && $cell['gradient'] && $paintcell){
26446 $g = $this->grad->parseBackgroundGradient($cell['gradient']);
26447 if ($g) {
26448 if ($table['borders_separate']) {
26449 $px = $x+ ($table['border_spacing_H']/2);
26450 $py = $y+ ($table['border_spacing_V']/2);
26451 $pw = $w- $table['border_spacing_H'];
26452 $ph = $h- $table['border_spacing_V'];
26453 }
26454 else {
26455 $px = $x;
26456 $py = $y;
26457 $pw = $w;
26458 $ph = $h;
26459 }
26460 if ($this->ColActive) {
26461 $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
26462 }
26463 else {
26464 $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'=>'');
26465 }
26466 }
26467 }
26468
26469 if (isset($cell['background-image']) && $paintcell) {
26470 if ($cell['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $cell['background-image']['gradient'] )) {
26471 $g = $this->grad->parseMozGradient( $cell['background-image']['gradient'] );
26472 if ($g) {
26473 if ($table['borders_separate']) {
26474 $px = $x+ ($table['border_spacing_H']/2);
26475 $py = $y+ ($table['border_spacing_V']/2);
26476 $pw = $w- $table['border_spacing_H'];
26477 $ph = $h- $table['border_spacing_V'];
26478 }
26479 else {
26480 $px = $x;
26481 $py = $y;
26482 $pw = $w;
26483 $ph = $h;
26484 }
26485 if ($this->ColActive) {
26486 $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
26487 }
26488 else {
26489 $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'=>'');
26490 }
26491 }
26492 }
26493 else if ($cell['background-image']['image_id']) { // Background pattern
26494 $n = count($this->patterns)+1;
26495 if ($table['borders_separate']) {
26496 $px = $x+ ($table['border_spacing_H']/2);
26497 $py = $y+ ($table['border_spacing_V']/2);
26498 $pw = $w- $table['border_spacing_H'];
26499 $ph = $h- $table['border_spacing_V'];
26500 }
26501 else {
26502 $px = $x;
26503 $py = $y;
26504 $pw = $w;
26505 $ph = $h;
26506 }
26507 if ($this->ColActive) {
26508 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']);
26509 $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);
26510 if ($cell['background-image']['opacity']>0 && $cell['background-image']['opacity']<1) { $opac = $this->SetAlpha($cell['background-image']['opacity'],'Normal',true); }
26511 else { $opac = ''; }
26512 $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));
26513 }
26514 else {
26515 $image_id = $cell['background-image']['image_id'];
26516 $orig_w = $cell['background-image']['orig_w'];
26517 $orig_h = $cell['background-image']['orig_h'];
26518 $x_pos = $cell['background-image']['x_pos'];
26519 $y_pos = $cell['background-image']['y_pos'];
26520 $x_repeat = $cell['background-image']['x_repeat'];
26521 $y_repeat = $cell['background-image']['y_repeat'];
26522 $resize = $cell['background-image']['resize'];
26523 $opacity = $cell['background-image']['opacity'];
26524 $itype = $cell['background-image']['itype'];
26525 $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);
26526 }
26527 }
26528 }
26529/*-- END BACKGROUNDS --*/
26530
26531 if (isset($cell['colspan']) && $cell['colspan']>1) { $ccolsp = $cell['colspan']; }
26532 else { $ccolsp = 1; }
26533 if (isset($cell['rowspan']) && $cell['rowspan']>1) { $crowsp = $cell['rowspan']; }
26534 else { $crowsp = 1; }
26535
26536
26537 // but still need to do this for repeated headers...
26538 if (!$table['borders_separate'] && $this->tabletheadjustfinished && !$this->simpleTables){
26539 if (isset($table['topntail']) && $table['topntail']) {
26540 $bord_det['T'] = $this->border_details($table['topntail']);
26541 $bord_det['T']['w'] /= $this->shrin_k;
26542 $this->setBorder($bord, _BORDER_TOP);
26543 }
26544 if (isset($table['thead-underline']) && $table['thead-underline']) {
26545 $bord_det['T'] = $this->border_details($table['thead-underline']);
26546 $bord_det['T']['w'] /= $this->shrin_k;
26547 $this->setBorder($bord, _BORDER_TOP);
26548 }
26549 }
26550
26551
26552 //Get info of first row ==>> table header
26553 //Use > 1 row if THEAD
26554 if (isset($table['is_thead'][$i]) && $table['is_thead'][$i] && $level==1) {
26555 if ($j==0) $tableheaderrowheight += $table['hr'][$i];
26556 $tableheader[$i][0]['trbackground-images'] = (isset($table['trbackground-images'][$i]) ? $table['trbackground-images'][$i] : null);
26557 $tableheader[$i][0]['trgradients'] = (isset($table['trgradients'][$i]) ? $table['trgradients'][$i] : null);
26558 $tableheader[$i][0]['trbgcolor'] = (isset($table['bgcolor'][$i]) ? $table['bgcolor'][$i] : null);
26559 $tableheader[$i][$j]['x'] = $x;
26560 $tableheader[$i][$j]['y'] = $y;
26561 $tableheader[$i][$j]['h'] = $h;
26562 $tableheader[$i][$j]['w'] = $w;
26563 if (isset($cell['textbuffer'])) { $tableheader[$i][$j]['textbuffer'] = $cell['textbuffer']; }
26564 else { $tableheader[$i][$j]['textbuffer'] = ''; }
26565 $tableheader[$i][$j]['a'] = $cell['a'];
26566 $tableheader[$i][$j]['R'] = $cell['R'];
26567
26568 $tableheader[$i][$j]['va'] = $cell['va'];
26569 $tableheader[$i][$j]['mih'] = $cell['mih'];
26570 $tableheader[$i][$j]['gradient'] = (isset($cell['gradient']) ? $cell['gradient'] : null); // *BACKGROUNDS*
26571 $tableheader[$i][$j]['background-image'] = (isset($cell['background-image']) ? $cell['background-image'] : null); // *BACKGROUNDS*
26572 $tableheader[$i][$j]['rowspan'] = (isset($cell['rowspan']) ? $cell['rowspan'] : null);
26573 $tableheader[$i][$j]['colspan'] = (isset($cell['colspan']) ? $cell['colspan'] : null);
26574 $tableheader[$i][$j]['bgcolor'] = $cell['bgcolor'];
26575
26576 if (!$this->simpleTables){
26577 $tableheader[$i][$j]['border'] = $bord;
26578 $tableheader[$i][$j]['border_details'] = $bord_det;
26579 }
26580 else if ($this->simpleTables){
26581 $tableheader[$i][$j]['border'] = $table['simple']['border'];
26582 $tableheader[$i][$j]['border_details'] = $table['simple']['border_details'];
26583 }
26584 $tableheader[$i][$j]['padding'] = $cell['padding'];
26585 }
26586
26587 // CELL BORDER
26588 if ($bord || $bord_det) {
26589 if ($table['borders_separate'] && $paintcell) {
26590 $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']);
26591 }
26592 else if (!$table['borders_separate']) {
26593 $this->_tableRect($x, $y, $w, $h, $bord, $bord_det, true, $table['borders_separate']); // true causes buffer
26594 }
26595
26596 }
26597
26598 //VERTICAL ALIGN
26599 if ($cell['R'] && INTVAL($cell['R']) > 0 && INTVAL($cell['R']) < 90 && isset($cell['va']) && $cell['va']!='B') { $cell['va']='B';}
26600 if (!isset($cell['va']) || $cell['va']=='M') $this->y += ($h-$cell['mih'])/2;
26601 elseif (isset($cell['va']) && $cell['va']=='B') $this->y += $h-$cell['mih'];
26602
26603 // NESTED CONTENT
26604
26605 // TEXT (and nested tables)
26606 $this->divalign=$align;
26607
26608 $this->divwidth=$w;
26609 if (!empty($cell['textbuffer'])) {
26610 if ($level==1) {
26611 if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i]) {
26612 if (preg_match('/{colsum([0-9]*)[_]*}/', $cell['textbuffer'][0][0], $m)) {
26613 $rep = sprintf("%01.".intval($m[1])."f", $this->colsums[$j]);
26614 $cell['textbuffer'][0][0] = preg_replace('/{colsum[0-9_]*}/', $rep ,$cell['textbuffer'][0][0]);
26615 }
26616 }
26617 else if (!isset($table['is_thead'][$i])) { $this->colsums[$j] += floatval(preg_replace('/^[^0-9\.\,]*/','',$cell['textbuffer'][0][0])); } // mPDF 5.6.66
26618 }
26619 $opy = $this->y;
26620 // mPDF ITERATION
26621 if ($this->iterationCounter) {
26622 foreach($cell['textbuffer'] AS $k=>$t) {
26623 if (preg_match('/{iteration ([a-zA-Z0-9_]+)}/',$t[0], $m)) {
26624 $vname = '__'.$m[1].'_';
26625 if (!isset($this->$vname)) { $this->$vname = 1; }
26626 else { $this->$vname++; }
26627 $cell['textbuffer'][$k][0] = preg_replace('/{iteration '.$m[1].'}/', $this->$vname, $cell['textbuffer'][$k][0]);
26628 }
26629 }
26630 }
26631
26632
26633 if ($cell['R']) {
26634 $cellPtSize = $cell['textbuffer'][0][11] / $this->shrin_k;
26635 if (!$cellPtSize) { $cellPtSize = $this->default_font_size; }
26636 $cellFontHeight = ($cellPtSize/_MPDFK);
26637 $opx = $this->x;
26638 $angle = INTVAL($cell['R']);
26639 // Only allow 45 to 89 degrees (when bottom-aligned) or exactly 90 or -90
26640 if ($angle > 90) { $angle = 90; }
26641 else if ($angle > 0 && $angle <45) { $angle = 45; }
26642 else if ($angle < 0) { $angle = -90; }
26643 $offset = ((sin(deg2rad($angle))) * 0.37 * $cellFontHeight);
26644 if (isset($cell['a']) && $cell['a']=='R') {
26645 $this->x += ($w) + ($offset) - ($cellFontHeight/3) - ($cell['padding']['R'] + ($table['border_spacing_H']/2));
26646 }
26647 else if (!isset($cell['a']) || $cell['a']=='C') {
26648 $this->x += ($w/2) + ($offset);
26649 }
26650 else {
26651 $this->x += ($offset) + ($cellFontHeight/3)+($cell['padding']['L'] +($table['border_spacing_H']/2));
26652 }
26653 $str = '';
26654 foreach($cell['textbuffer'] AS $t) { $str .= $t[0].' '; }
26655 $str = trim($str);
26656 if (!isset($cell['va']) || $cell['va']=='M') {
26657 $this->y -= ($h-$cell['mih'])/2; //Undo what was added earlier VERTICAL ALIGN
26658 if ($angle > 0) { $this->y += (($h-$cell['mih'])/2) + $cell['padding']['T'] + ($cell['mih']-($cell['padding']['T'] + $cell['padding']['B'])); }
26659 else if ($angle < 0) { $this->y += (($h-$cell['mih'])/2)+ ($cell['padding']['T'] + ($table['border_spacing_V']/2)); }
26660 }
26661 elseif (isset($cell['va']) && $cell['va']=='B') {
26662 $this->y -= $h-$cell['mih']; //Undo what was added earlier VERTICAL ALIGN
26663 if ($angle > 0) { $this->y += $h-($cell['padding']['B'] + ($table['border_spacing_V']/2)); }
26664 else if ($angle < 0) { $this->y += $h-$cell['mih'] + ($cell['padding']['T'] + ($table['border_spacing_V']/2)); }
26665 }
26666 elseif (isset($cell['va']) && $cell['va']=='T') {
26667 if ($angle > 0) { $this->y += $cell['mih']-($cell['padding']['B'] + ($table['border_spacing_V']/2)); }
26668 else if ($angle < 0) { $this->y += ($cell['padding']['T'] + ($table['border_spacing_V']/2)); }
26669 }
26670 $this->Rotate($angle,$this->x,$this->y);
26671 $s_fs = $this->FontSizePt;
26672 $s_f = $this->FontFamily;
26673 $s_st = $this->FontStyle;
26674 if (!empty($cell['textbuffer'][0][3])) { //Font Color
26675 $cor = $cell['textbuffer'][0][3];
26676 $this->SetTColor($cor);
26677 }
26678 $s_str = $this->strike;
26679 $this->strike = $cell['textbuffer'][0][8]; //Strikethrough
26680 $this->SetFont($cell['textbuffer'][0][4],$cell['textbuffer'][0][2],$cellPtSize,true,true);
26681 $this->Text($this->x,$this->y,$str);
26682 $this->Rotate(0);
26683 $this->SetFont($s_f,$s_st,$s_fs,true,true);
26684 $this->SetTColor(0);
26685 $this->strike = $s_str;
26686 $this->x = $opx;
26687 }
26688 else {
26689
26690 if (!$this->simpleTables){
26691 if ($bord_det) {
26692 $btlw = $bord_det['L']['w'];
26693 $btrw = $bord_det['R']['w'];
26694 $bttw = $bord_det['T']['w'];
26695 }
26696 else {
26697 $btlw = 0;
26698 $btrw = 0;
26699 $bttw = 0;
26700 }
26701 if ($table['borders_separate']) {
26702 $xadj = $btlw + $cell['padding']['L'] +($table['border_spacing_H']/2);
26703 $wadj = $btlw + $btrw + $cell['padding']['L'] +$cell['padding']['R'] + $table['border_spacing_H'];
26704 $yadj = $bttw + $cell['padding']['T'] + ($table['border_spacing_H']/2);
26705 }
26706 else {
26707 $xadj = $btlw/2 + $cell['padding']['L'];
26708 $wadj = ($btlw + $btrw)/2 + $cell['padding']['L'] + $cell['padding']['R'];
26709 $yadj = $bttw/2 + $cell['padding']['T'];
26710 }
26711 }
26712 else if ($this->simpleTables){
26713 if ($table['borders_separate']) { // NB twice border width
26714 $xadj = $table['simple']['border_details']['L']['w'] + $cell['padding']['L'] +($table['border_spacing_H']/2);
26715 $wadj = $table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'] + $cell['padding']['L'] +$cell['padding']['R'] + $table['border_spacing_H'];
26716 $yadj = $table['simple']['border_details']['T']['w'] + $cell['padding']['T'] + ($table['border_spacing_H']/2);
26717 }
26718 else {
26719 $xadj = $table['simple']['border_details']['L']['w']/2 + $cell['padding']['L'];
26720 $wadj = ($table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'])/2 + $cell['padding']['L'] + $cell['padding']['R'];
26721 $yadj = $table['simple']['border_details']['T']['w']/2 + $cell['padding']['T'];
26722 }
26723 }
26724 // mPDF 5.6.13
26725 $this->decimal_offset = 0;
26726 if(substr($cell['a'],0,1) == 'D') {
26727 if ($cell['colspan'] > 1) { $this->divalign = $c['a'] = substr($cell['a'],2,1); }
26728 else {
26729 $smax = $table['decimal_align'][$j]['maxs0'];
26730 $d_content = $table['decimal_align'][$j]['maxs0'] + $table['decimal_align'][$j]['maxs1'];
26731 $this->decimal_offset = $smax;
26732 $extra = ($w - $d_content - $wadj);
26733 if ($extra > 0) {
26734 if(substr($cell['a'],2,1) == 'R') { $this->decimal_offset += $extra; }
26735 else if(substr($cell['a'],2,1) == 'C') { $this->decimal_offset += ($extra)/2; }
26736 }
26737 }
26738 }
26739 $this->divwidth=$w-$wadj;
26740 if ($this->divwidth == 0) { $this->divwidth = 0.0001; }
26741 $this->x += $xadj;
26742 $this->y += $yadj;
26743 $this->printbuffer($cell['textbuffer'],'',true);
26744 }
26745 $this->y = $opy;
26746 }
26747
26748/*-- BACKGROUNDS --*/
26749 if (!$this->ColActive) {
26750 if (isset($table['trgradients'][$i]) && ($j==0 || $table['borders_separate'])) {
26751 $g = $this->grad->parseBackgroundGradient($table['trgradients'][$i]);
26752 if ($g) {
26753 $gx = $x0;
26754 $gy = $y;
26755 $gh = $h;
26756 $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
26757 if ($table['borders_separate']) {
26758 $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']);
26759 $s = '';
26760 $clx = $x+ ($table['border_spacing_H']/2);
26761 $cly = $y+ ($table['border_spacing_V']/2);
26762 $clw = $w- $table['border_spacing_H'];
26763 $clh = $h- $table['border_spacing_V'];
26764 // Set clipping path
26765 $s = ' q 0 w '; // Line width=0
26766 $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
26767 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BL
26768 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BR
26769 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TR
26770 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
26771 $s .= ' W n '; // Ends path no-op & Sets the clipping path
26772 $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);
26773 }
26774 else {
26775 $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'=>'');
26776 }
26777 }
26778 }
26779 if (isset($table['trbackground-images'][$i]) && ($j==0 || $table['borders_separate'])) {
26780 if ($table['trbackground-images'][$i]['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['trbackground-images'][$i]['gradient'] )) {
26781 $g = $this->grad->parseMozGradient( $table['trbackground-images'][$i]['gradient'] );
26782 if ($g) {
26783 $gx = $x0;
26784 $gy = $y;
26785 $gh = $h;
26786 $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
26787 if ($table['borders_separate']) {
26788 $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']);
26789 $s = '';
26790 $clx = $x+ ($table['border_spacing_H']/2);
26791 $cly = $y+ ($table['border_spacing_V']/2);
26792 $clw = $w- $table['border_spacing_H'];
26793 $clh = $h- $table['border_spacing_V'];
26794 // Set clipping path
26795 $s = ' q 0 w '; // Line width=0
26796 $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
26797 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BL
26798 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BR
26799 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TR
26800 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
26801 $s .= ' W n '; // Ends path no-op & Sets the clipping path
26802 $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);
26803 }
26804 else {
26805 $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'=>'');
26806 }
26807 }
26808 }
26809 else {
26810 $image_id = $table['trbackground-images'][$i]['image_id'];
26811 $orig_w = $table['trbackground-images'][$i]['orig_w'];
26812 $orig_h = $table['trbackground-images'][$i]['orig_h'];
26813 $x_pos = $table['trbackground-images'][$i]['x_pos'];
26814 $y_pos = $table['trbackground-images'][$i]['y_pos'];
26815 $x_repeat = $table['trbackground-images'][$i]['x_repeat'];
26816 $y_repeat = $table['trbackground-images'][$i]['y_repeat'];
26817 $resize = $table['trbackground-images'][$i]['resize'];
26818 $opacity = $table['trbackground-images'][$i]['opacity'];
26819 $itype = $table['trbackground-images'][$i]['itype'];
26820 $clippath = '';
26821 $gx = $x0;
26822 $gy = $y;
26823 $gh = $h;
26824 $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
26825 if ($table['borders_separate']) {
26826 $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']);
26827 $s = '';
26828 $clx = $x + ($table['border_spacing_H']/2);
26829 $cly = $y + ($table['border_spacing_V']/2);
26830 $clw = $w - $table['border_spacing_H'];
26831 $clh = $h - $table['border_spacing_V'];
26832 // Set clipping path
26833 $s = ' q 0 w '; // Line width=0
26834 $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL
26835 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BL
26836 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BR
26837 $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TR
26838 $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
26839 $s .= ' W n '; // Ends path no-op & Sets the clipping path
26840 $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);
26841 }
26842 else {
26843 $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);
26844 }
26845 }
26846 }
26847 }
26848
26849/*-- END BACKGROUNDS --*/
26850
26851 // TABLE BORDER - if separate
26852 if (($table['borders_separate'] || ($this->simpleTables && !$table['simple']['border'])) && $table['border']) {
26853 $halfspaceL = $table['padding']['L'] + ($table['border_spacing_H']/2);
26854 $halfspaceR = $table['padding']['R'] + ($table['border_spacing_H']/2);
26855 $halfspaceT = $table['padding']['T'] + ($table['border_spacing_V']/2);
26856 $halfspaceB = $table['padding']['B'] + ($table['border_spacing_V']/2);
26857 $tbx = $x;
26858 $tby = $y;
26859 $tbw = $w;
26860 $tbh = $h;
26861 $tab_bord = 0;
26862
26863 $corner = '';
26864 if ($i == 0) { // Top
26865 $tby -= $halfspaceT + ($table['border_details']['T']['w']/2);
26866 $tbh += $halfspaceT + ($table['border_details']['T']['w']/2);
26867 $this->setBorder($tab_bord , _BORDER_TOP);
26868 $corner .= 'T';
26869 }
26870 if ($i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows)) { // Bottom
26871 $tbh += $halfspaceB + ($table['border_details']['B']['w']/2);
26872 $this->setBorder($tab_bord , _BORDER_BOTTOM);
26873 $corner .= 'B';
26874 }
26875 if ($j == 0) { // Left
26876 $tbx -= $halfspaceL + ($table['border_details']['L']['w']/2);
26877 $tbw += $halfspaceL + ($table['border_details']['L']['w']/2);
26878 $this->setBorder($tab_bord , _BORDER_LEFT);
26879 $corner .= 'L';
26880 }
26881 if ($j == ($numcols-1) || (isset($cell['colspan']) && ($j+$cell['colspan']) == $numcols)) { // Right
26882 $tbw += $halfspaceR + ($table['border_details']['R']['w']/2);
26883 $this->setBorder($tab_bord , _BORDER_RIGHT);
26884 $corner .= 'R';
26885 }
26886 $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'] );
26887 }
26888
26889 unset($cell );
26890 //Reset values
26891 $this->Reset();
26892
26893 }//end of (if isset(cells)...)
26894 }// end of columns
26895
26896 $newpagestarted = false;
26897 $this->tabletheadjustfinished = false;
26898
26899 if ($this->ColActive && $i < $numrows-1 && $level==1) { $this->breakpoints[$this->CurrCol][] = $y + $h; } // *COLUMNS*
26900
26901/*-- COLUMNS --*/
26902 if ($this->ColActive) {
26903 if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); }
26904 }
26905/*-- END COLUMNS --*/
26906
26907 if ($i == $numrows-1) { $this->y = $y + $h; } //last row jump (update this->y position)
26908 if ($this->table_rotate && $level==1) {
26909 $this->tbrot_h += $h;
26910 }
26911
26912
26913
26914 }// end of rows
26915
26916 if ($this->progressBar) { $this->UpdateProgressBar(7,70,' '); } // *PROGRESS-BAR*
26917
26918 if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); }
26919
26920
26921 if ($this->tableClipPath ) { $this->_out("Q"); }
26922 $this->tableClipPath = '';
26923
26924 // Advance down page by half width of bottom border
26925 if ($table['borders_separate']) { $this->y += $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; }
26926 else { $this->y += $table['max_cell_border_width']['B']/2; }
26927
26928 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; }
26929 else if ($level==1) { $this->tbrot_h += $table['margin']['B'] + $table['max_cell_border_width']['B']/2; }
26930
26931 $bx = $x0;
26932 $by = $y0;
26933 if ($table['borders_separate']) {
26934 $bx -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']/2);
26935 if ($tablestartpageno != $this->page) { // IF broken across page
26936 $by += $table['max_cell_border_width']['T']/2;
26937 if (empty($tableheader)) { $by -= ($table['border_spacing_V']/2); }
26938 }
26939 else if ($split && $startrow > 0 && empty($tableheader)) {
26940 $by -= ($table['border_spacing_V']/2);
26941 }
26942 else {
26943 $by -= ($table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2);
26944 }
26945 }
26946 else if ($tablestartpageno != $this->page && !empty($tableheader)) { $by += $maxbwtop /2; }
26947 $by -= $tableheaderadj;
26948 $bh = $this->y - $by;
26949 if (!$table['borders_separate']) { $bh -= $table['max_cell_border_width']['B']/2; }
26950
26951 if ($split) {
26952 $bw = 0;
26953 $finalSpread = true;
26954 for($t=$startcol; $t<$numcols; $t++) {
26955 if ($table['colPg'][$t] == $splitpg) { $bw += $table['wc'][$t]; }
26956 if ($table['colPg'][$t] > $splitpg) { $finalSpread = false; break; }
26957 }
26958 if ($startcol==0) { $firstSpread = true; }
26959 else { $firstSpread = false; }
26960 if ($table['borders_separate']) {
26961 $bw += $table['border_spacing_H'];
26962 if ($firstSpread) {
26963 $bw += $table['padding']['L'] + $table['border_details']['L']['w'];
26964 }
26965 else {
26966 $bx += ($table['padding']['L'] + $table['border_details']['L']['w']);
26967 }
26968 if ($finalSpread) {
26969 $bw += $table['padding']['R'] + $table['border_details']['R']['w'];
26970 }
26971 }
26972 }
26973 else {
26974 $bw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
26975 }
26976
26977 if (!$this->ColActive) {
26978 if (isset($table['bgcolor'][-1])) {
26979 $color = $this->ConvertColor($table['bgcolor'][-1]);
26980 if ($color) {
26981 $this->tableBackgrounds[$level*9][] = array('gradient'=>false, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'col'=>$color);
26982 }
26983 }
26984
26985/*-- BACKGROUNDS --*/
26986 if (isset($table['gradient'])) {
26987 $g = $this->grad->parseBackgroundGradient($table['gradient']);
26988 if ($g) {
26989 $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'=>'');
26990 }
26991 }
26992
26993 if (isset($table['background-image'])) {
26994 if ($table['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['background-image']['gradient'] )) {
26995 $g = $this->grad->parseMozGradient( $table['background-image']['gradient'] );
26996 if ($g) {
26997 $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'=>'');
26998 }
26999 }
27000 else {
27001 $image_id = $table['background-image']['image_id'];
27002 $orig_w = $table['background-image']['orig_w'];
27003 $orig_h = $table['background-image']['orig_h'];
27004 $x_pos = $table['background-image']['x_pos'];
27005 $y_pos = $table['background-image']['y_pos'];
27006 $x_repeat = $table['background-image']['x_repeat'];
27007 $y_repeat = $table['background-image']['y_repeat'];
27008 $resize = $table['background-image']['resize'];
27009 $opacity = $table['background-image']['opacity'];
27010 $itype = $table['background-image']['itype'];
27011 $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);
27012 }
27013 }
27014/*-- END BACKGROUNDS --*/
27015 }
27016
27017 if ($this->tableBackgrounds && $level == 1) {
27018 $s = $this->PrintTableBackgrounds();
27019 if ($this->table_rotate && !$this->processingHeader && !$this->processingFooter) {
27020 $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->tablebuffer);
27021 if ($level == 1) { $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->tablebuffer); }
27022 }
27023 else if ($this->bufferoutput) {
27024 $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->headerbuffer);
27025 if ($level == 1) { $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->headerbuffer ); }
27026 }
27027 else {
27028 $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
27029 if ($level == 1) { $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->pages[$this->page]); }
27030 }
27031 $this->tableBackgrounds = array();
27032 }
27033
27034
27035 // TABLE BOTTOM MARGIN
27036 if ($table['margin']['B']) {
27037 if (!$this->table_rotate && $level==1) {
27038 $this->DivLn($table['margin']['B'],$this->blklvl,true); // collapsible
27039 }
27040 else {
27041 $this->y += ($table['margin']['B']);
27042 }
27043 }
27044
27045 if ($this->ColActive && $level==1) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
27046
27047 if ($this->cacheTables) { fclose($fh); }
27048
27049 if ($split) {
27050 // Are there more columns to print on a next page?
27051 if ($lastCol < $numcols-1) {
27052 $splitpg++;
27053 $startcol = $lastCol + 1;
27054 return array(false, $startrow, $startcol, $splitpg, $returny, $y0);
27055 }
27056 else {
27057 if ($this->cacheTables) {
27058 unlink($table['cache']);
27059 @unlink($table['cache'].'.bak');
27060 }
27061 return array(true,0,0,0);
27062 }
27063 }
27064 if ($this->cacheTables) {
27065 unlink($table['cache']);
27066 @unlink($table['cache'].'.bak');
27067 }
27068
27069}//END OF FUNCTION _tableWrite()
27070
27071
27072/////////////////////////END OF TABLE CODE//////////////////////////////////
27073/*-- END TABLES --*/
27074
27075function _putextgstates() {
27076 for ($i = 1; $i <= count($this->extgstates); $i++) {
27077 $this->_newobj();
27078 $this->extgstates[$i]['n'] = $this->n;
27079 $this->_out('<</Type /ExtGState');
27080 foreach ($this->extgstates[$i]['parms'] as $k=>$v)
27081 $this->_out('/'.$k.' '.$v);
27082 $this->_out('>>');
27083 $this->_out('endobj');
27084 }
27085}
27086
27087function _putocg() {
27088 if ($this->hasOC) { // mPDF 5.6.01
27089 $this->_newobj();
27090 $this->n_ocg_print=$this->n;
27091 $this->_out('<</Type /OCG /Name '.$this->_textstring('Print only'));
27092 $this->_out('/Usage <</Print <</PrintState /ON>> /View <</ViewState /OFF>>>>>>');
27093 $this->_out('endobj');
27094 $this->_newobj();
27095 $this->n_ocg_view=$this->n;
27096 $this->_out('<</Type /OCG /Name '.$this->_textstring('Screen only'));
27097 $this->_out('/Usage <</Print <</PrintState /OFF>> /View <</ViewState /ON>>>>>>');
27098 $this->_out('endobj');
27099 $this->_newobj();
27100 $this->n_ocg_hidden=$this->n;
27101 $this->_out('<</Type /OCG /Name '.$this->_textstring('Hidden'));
27102 $this->_out('/Usage <</Print <</PrintState /OFF>> /View <</ViewState /OFF>>>>>>');
27103 $this->_out('endobj');
27104 }
27105 // mPDF 5.6.01 Add Layers
27106 if (count($this->layers)) {
27107 ksort($this->layers);
27108 foreach($this->layers as $id=>$layer) {
27109 $this->_newobj();
27110 $this->layers[$id]['n'] = $this->n;
27111 // mPDF 5.6.28
27112 if (isset($this->layerDetails[$id]['name']) && $this->layerDetails[$id]['name']) {
27113 $name = $this->layerDetails[$id]['name'];
27114 }
27115 else { $name = $layer['name']; }
27116 $this->_out('<</Type /OCG /Name '.$this->_UTF16BEtextstring($name).'>>');
27117 $this->_out('endobj');
27118 }
27119 }
27120}
27121
27122
27123/*-- IMPORTS --*/
27124
27125 // from mPDFI
27126 function _putimportedobjects() {
27127 if (is_array($this->parsers) && count($this->parsers) > 0) {
27128 foreach($this->parsers AS $filename => $p) {
27129 $this->current_parser =& $this->parsers[$filename];
27130 if (is_array($this->_obj_stack[$filename])) {
27131 while($n = key($this->_obj_stack[$filename])) {
27132 $nObj = $this->current_parser->pdf_resolve_object($this->current_parser->c,$this->_obj_stack[$filename][$n][1]);
27133 $this->_newobj($this->_obj_stack[$filename][$n][0]);
27134 if ($nObj[0] == PDF_TYPE_STREAM) {
27135 $this->pdf_write_value($nObj);
27136 }
27137 else {
27138 $this->pdf_write_value($nObj[1]);
27139 }
27140 $this->_out('endobj');
27141 $this->_obj_stack[$filename][$n] = null; // free memory
27142 unset($this->_obj_stack[$filename][$n]);
27143 reset($this->_obj_stack[$filename]);
27144 }
27145 }
27146 }
27147 }
27148 }
27149
27150
27151 function _putformxobjects() {
27152 $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
27153 reset($this->tpls);
27154 foreach($this->tpls AS $tplidx => $tpl) {
27155 $p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer'];
27156 $this->_newobj();
27157 $this->tpls[$tplidx]['n'] = $this->n;
27158 $this->_out('<<'.$filter.'/Type /XObject');
27159 $this->_out('/Subtype /Form');
27160 $this->_out('/FormType 1');
27161 // Left/Bottom/Right/Top
27162 $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]',
27163 $tpl['box']['x']*_MPDFK,
27164 $tpl['box']['y']*_MPDFK,
27165 ($tpl['box']['x'] + $tpl['box']['w'])*_MPDFK,
27166 ($tpl['box']['y'] + $tpl['box']['h'])*_MPDFK )
27167 );
27168
27169
27170 if (isset($tpl['box']))
27171 $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]',-$tpl['box']['x']*_MPDFK, -$tpl['box']['y']*_MPDFK));
27172 $this->_out('/Resources ');
27173
27174 if (isset($tpl['resources'])) {
27175 $this->current_parser =& $tpl['parser'];
27176 $this->pdf_write_value($tpl['resources']);
27177 } else {
27178 $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
27179 if (isset($this->_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) {
27180 $this->_out('/Font <<');
27181 foreach($this->_res['tpl'][$tplidx]['fonts'] as $font)
27182 $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
27183 $this->_out('>>');
27184 }
27185 if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) ||
27186 isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls']))
27187 {
27188 $this->_out('/XObject <<');
27189 if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) {
27190 foreach($this->_res['tpl'][$tplidx]['images'] as $image)
27191 $this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
27192 }
27193 if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) {
27194 foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $itpl)
27195 $this->_out($this->tplprefix.$i.' '.$itpl['n'].' 0 R');
27196 }
27197 $this->_out('>>');
27198 }
27199 $this->_out('>>');
27200 }
27201
27202 $this->_out('/Length '.strlen($p).' >>');
27203 $this->_putstream($p);
27204 $this->_out('endobj');
27205 }
27206 }
27207
27208/*-- END IMPORTS --*/
27209
27210
27211function _putpatterns() {
27212 for ($i = 1; $i <= count($this->patterns); $i++) {
27213 $x = $this->patterns[$i]['x'];
27214 $y = $this->patterns[$i]['y'];
27215 $w = $this->patterns[$i]['w'];
27216 $h = $this->patterns[$i]['h'];
27217 $pgh = $this->patterns[$i]['pgh'];
27218 $orig_w = $this->patterns[$i]['orig_w'];
27219 $orig_h = $this->patterns[$i]['orig_h'];
27220 $image_id = $this->patterns[$i]['image_id'];
27221 $itype = $this->patterns[$i]['itype'];
27222 $bpa = $this->patterns[$i]['bpa']; // mPDF 5.6.10 background positioning area
27223
27224 if ($this->patterns[$i]['x_repeat']) { $x_repeat = true; }
27225 else { $x_repeat = false; }
27226 if ($this->patterns[$i]['y_repeat']) { $y_repeat = true; }
27227 else { $y_repeat = false; }
27228 $x_pos = $this->patterns[$i]['x_pos'];
27229 if (stristr($x_pos ,'%') ) {
27230 $x_pos += 0;
27231 $x_pos /= 100;
27232 if (isset($bpa['w']) && $bpa['w']) $x_pos = ($bpa['w'] * $x_pos) - ($orig_w/_MPDFK * $x_pos); // mPDF 5.6.10
27233 else $x_pos = ($w * $x_pos) - ($orig_w/_MPDFK * $x_pos);
27234 }
27235 $y_pos = $this->patterns[$i]['y_pos'];
27236 if (stristr($y_pos ,'%') ) {
27237 $y_pos += 0;
27238 $y_pos /= 100;
27239 if (isset($bpa['h']) && $bpa['h']) $y_pos = ($bpa['h'] * $y_pos) - ($orig_h/_MPDFK * $y_pos); // mPDF 5.6.10
27240 else $y_pos = ($h * $y_pos) - ($orig_h/_MPDFK * $y_pos);
27241 }
27242 if (isset($bpa['x']) && $bpa['x']) $adj_x = ($x_pos + $bpa['x']) *_MPDFK; // mPDF 5.6.10
27243 else $adj_x = ($x_pos + $x) *_MPDFK;
27244 if (isset($bpa['y']) && $bpa['y']) $adj_y = (($pgh - $y_pos - $bpa['y'])*_MPDFK) - $orig_h ; // mPDF 5.6.10
27245 else $adj_y = (($pgh - $y_pos - $y)*_MPDFK) - $orig_h ;
27246 $img_obj = false;
27247 if ($itype == 'svg' || $itype == 'wmf') {
27248 foreach($this->formobjects AS $fo) {
27249 if ($fo['i'] == $image_id) {
27250 $img_obj = $fo['n'];
27251 $fo_w = $fo['w'];
27252 $fo_h = -$fo['h'];
27253 $wmf_x = $fo['x'];
27254 $wmf_y = $fo['y'];
27255 break;
27256 }
27257 }
27258 }
27259 else {
27260 foreach($this->images AS $img) {
27261 if ($img['i'] == $image_id) { $img_obj = $img['n']; break; }
27262 }
27263 }
27264 if (!$img_obj ) { echo "Problem: Image object not found for background pattern ".$img['i']; exit; }
27265
27266 $this->_newobj();
27267 $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
27268 if ($itype == 'svg' || $itype == 'wmf') {
27269 $this->_out('/XObject <</FO'.$image_id.' '.$img_obj.' 0 R >>');
27270 // ******* ADD ANY ExtGStates, Shading AND Fonts needed for the FormObject
27271 // Set in classes/svg array['fo'] = true
27272 // Required that _putshaders comes before _putpatterns in _putresources
27273 // This adds any resources associated with any FormObject to every Formobject - overkill but works!
27274 if (count($this->extgstates)) {
27275 $this->_out('/ExtGState <<');
27276 foreach($this->extgstates as $k=>$extgstate)
27277 if (isset($extgstate['fo']) && $extgstate['fo']) {
27278 if (isset($extgstate['trans'])) $this->_out('/'.$extgstate['trans'].' '.$extgstate['n'].' 0 R');
27279 else $this->_out('/GS'.$k.' '.$extgstate['n'].' 0 R');
27280 }
27281 $this->_out('>>');
27282 }
27283/*-- BACKGROUNDS --*/
27284 if (isset($this->gradients) AND (count($this->gradients) > 0)) {
27285 $this->_out('/Shading <<');
27286 foreach ($this->gradients as $id => $grad) {
27287 if (isset($grad['fo']) && $grad['fo']) {
27288 $this->_out('/Sh'.$id.' '.$grad['id'].' 0 R');
27289 }
27290 }
27291 $this->_out('>>');
27292 }
27293/*-- END BACKGROUNDS --*/
27294 $this->_out('/Font <<');
27295 foreach($this->fonts as $font) {
27296 if (!$font['used'] && $font['type']=='TTF') { continue; }
27297 if (isset($font['fo']) && $font['fo']) {
27298 if ($font['type']=='TTF' && ($font['sip'] || $font['smp'])) {
27299 foreach($font['n'] AS $k => $fid) {
27300 $this->_out('/F'.$font['subsetfontids'][$k].' '.$font['n'][$k].' 0 R');
27301 }
27302 }
27303 else {
27304 $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
27305 }
27306 }
27307 }
27308 $this->_out('>>');
27309 }
27310 else {
27311 $this->_out('/XObject <</I'.$image_id.' '.$img_obj.' 0 R >>');
27312 }
27313 $this->_out('>>');
27314 $this->_out('endobj');
27315
27316 $this->_newobj();
27317 $this->patterns[$i]['n'] = $this->n;
27318 $this->_out('<< /Type /Pattern /PatternType 1 /PaintType 1 /TilingType 2');
27319 $this->_out('/Resources '. ($this->n-1) .' 0 R');
27320
27321 $this->_out(sprintf('/BBox [0 0 %.3F %.3F]',$orig_w,$orig_h));
27322 if ($x_repeat) { $this->_out(sprintf('/XStep %.3F',$orig_w)); }
27323 else { $this->_out(sprintf('/XStep %d',99999)); }
27324 if ($y_repeat) { $this->_out(sprintf('/YStep %.3F',$orig_h)); }
27325 else { $this->_out(sprintf('/YStep %d',99999)); }
27326
27327 if ($itype == 'svg' || $itype == 'wmf') {
27328 $this->_out(sprintf('/Matrix [1 0 0 -1 %.3F %.3F]', $adj_x, ($adj_y+$orig_h)));
27329 $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);
27330 }
27331 else {
27332 $this->_out(sprintf('/Matrix [1 0 0 1 %.3F %.3F]',$adj_x,$adj_y));
27333 $s = sprintf("q %.3F 0 0 %.3F 0 0 cm /I%d Do Q",$orig_w,$orig_h,$image_id);
27334 }
27335
27336 if ($this->compress) {
27337 $this->_out('/Filter /FlateDecode');
27338 $s = gzcompress($s);
27339 }
27340 $this->_out('/Length '.strlen($s).'>>');
27341 $this->_putstream($s);
27342 $this->_out('endobj');
27343 }
27344}
27345
27346/*-- BACKGROUNDS --*/
27347function _putshaders() {
27348 $maxid = count($this->gradients); //index for transparency gradients
27349 foreach ($this->gradients as $id => $grad) {
27350 if (($grad['type'] == 2 || $grad['type'] == 3) && empty($grad['is_mask'])) {
27351 $this->_newobj();
27352 $this->_out('<<');
27353 $this->_out('/FunctionType 3');
27354 $this->_out('/Domain [0 1]');
27355 $fn = array();
27356 $bd = array();
27357 $en = array();
27358 for($i=0; $i<(count($grad['stops'])-1); $i++) {
27359 $fn[] = ($this->n+1+$i).' 0 R';
27360 $en[] = '0 1';
27361 if ($i>0) { $bd[] = sprintf('%.3F', $grad['stops'][$i]['offset']); }
27362 }
27363 $this->_out('/Functions ['.implode(' ',$fn).']');
27364 $this->_out('/Bounds ['.implode(' ',$bd).']');
27365 $this->_out('/Encode ['.implode(' ',$en).']');
27366 $this->_out('>>');
27367 $this->_out('endobj');
27368 $f1 = $this->n;
27369 for($i=0; $i<(count($grad['stops'])-1); $i++) {
27370 $this->_newobj();
27371 $this->_out('<<');
27372 $this->_out('/FunctionType 2');
27373 $this->_out('/Domain [0 1]');
27374 $this->_out('/C0 ['.$grad['stops'][$i]['col'].']');
27375 $this->_out('/C1 ['.$grad['stops'][$i+1]['col'].']');
27376 $this->_out('/N 1');
27377 $this->_out('>>');
27378 $this->_out('endobj');
27379 }
27380 }
27381 if ($grad['type'] == 2 || $grad['type'] == 3) {
27382 if (isset($grad['trans']) && $grad['trans']) {
27383 $this->_newobj();
27384 $this->_out('<<');
27385 $this->_out('/FunctionType 3');
27386 $this->_out('/Domain [0 1]');
27387 $fn = array();
27388 $bd = array();
27389 $en = array();
27390 for($i=0; $i<(count($grad['stops'])-1); $i++) {
27391 $fn[] = ($this->n+1+$i).' 0 R';
27392 $en[] = '0 1';
27393 if ($i>0) { $bd[] = sprintf('%.3F', $grad['stops'][$i]['offset']); }
27394 }
27395 $this->_out('/Functions ['.implode(' ',$fn).']');
27396 $this->_out('/Bounds ['.implode(' ',$bd).']');
27397 $this->_out('/Encode ['.implode(' ',$en).']');
27398 $this->_out('>>');
27399 $this->_out('endobj');
27400 $f2 = $this->n;
27401 for($i=0; $i<(count($grad['stops'])-1); $i++) {
27402 $this->_newobj();
27403 $this->_out('<<');
27404 $this->_out('/FunctionType 2');
27405 $this->_out('/Domain [0 1]');
27406 $this->_out(sprintf('/C0 [%.3F]', $grad['stops'][$i]['opacity']));
27407 $this->_out(sprintf('/C1 [%.3F]', $grad['stops'][$i+1]['opacity']));
27408 $this->_out('/N 1');
27409 $this->_out('>>');
27410 $this->_out('endobj');
27411 }
27412 }
27413 }
27414
27415 if (empty($grad['is_mask'])) {
27416 $this->_newobj();
27417 $this->_out('<<');
27418 $this->_out('/ShadingType '.$grad['type']);
27419 if (isset($grad['colorspace'])) {
27420 $this->_out('/ColorSpace /Device'.$grad['colorspace']); // Can use CMYK if all C0 and C1 above have 4 values
27421 } else {
27422 $this->_out('/ColorSpace /DeviceRGB');
27423 }
27424 if ($grad['type'] == 2) {
27425 $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3]));
27426 $this->_out('/Function '.$f1.' 0 R');
27427 $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
27428 $this->_out('>>');
27429 }
27430 else if ($grad['type'] == 3) {
27431 //x0, y0, r0, x1, y1, r1
27432 //at this this time radius of inner circle is 0
27433 $ir = 0;
27434 if (isset($grad['coords'][5]) && $grad['coords'][5]) { $ir = $grad['coords'][5]; }
27435 $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]));
27436 $this->_out('/Function '.$f1.' 0 R');
27437 $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
27438 $this->_out('>>');
27439 }
27440 else if ($grad['type']==6) {
27441 $this->_out('/BitsPerCoordinate 16');
27442 $this->_out('/BitsPerComponent 8');
27443 if ($grad['colorspace'] == 'CMYK') { $this->_out('/Decode[0 1 0 1 0 1 0 1 0 1 0 1]'); }
27444 else if ($grad['colorspace'] == 'Gray') { $this->_out('/Decode[0 1 0 1 0 1]'); }
27445 else { $this->_out('/Decode[0 1 0 1 0 1 0 1 0 1]'); }
27446 $this->_out('/BitsPerFlag 8');
27447 $this->_out('/Length '.strlen($grad['stream']));
27448 $this->_out('>>');
27449 $this->_putstream($grad['stream']);
27450 }
27451 $this->_out('endobj');
27452 }
27453
27454 $this->gradients[$id]['id'] = $this->n;
27455
27456 // set pattern object
27457 $this->_newobj();
27458 $out = '<< /Type /Pattern /PatternType 2';
27459 $out .= ' /Shading '.$this->gradients[$id]['id'].' 0 R';
27460 $out .= ' >>';
27461 $out .= "\n".'endobj';
27462 $this->_out($out);
27463
27464
27465 $this->gradients[$id]['pattern'] = $this->n;
27466
27467 if (isset($grad['trans']) && $grad['trans']) {
27468 // luminosity pattern
27469 $transid = $id + $maxid;
27470 $this->_newobj();
27471 $this->_out('<<');
27472 $this->_out('/ShadingType '.$grad['type']);
27473 $this->_out('/ColorSpace /DeviceGray');
27474 if ($grad['type'] == 2) {
27475 $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3]));
27476 $this->_out('/Function '.$f2.' 0 R');
27477 $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
27478 $this->_out('>>');
27479 }
27480 else if ($grad['type'] == 3) {
27481 //x0, y0, r0, x1, y1, r1
27482 //at this this time radius of inner circle is 0
27483 $ir = 0;
27484 if (isset($grad['coords'][5]) && $grad['coords'][5]) { $ir = $grad['coords'][5]; }
27485 $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]));
27486 $this->_out('/Function '.$f2.' 0 R');
27487 $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
27488 $this->_out('>>');
27489 }
27490 else if ($grad['type']==6) {
27491 $this->_out('/BitsPerCoordinate 16');
27492 $this->_out('/BitsPerComponent 8');
27493 $this->_out('/Decode[0 1 0 1 0 1]');
27494 $this->_out('/BitsPerFlag 8');
27495 $this->_out('/Length '.strlen($grad['stream_trans']));
27496 $this->_out('>>');
27497 $this->_putstream($grad['stream_trans']);
27498 }
27499 $this->_out('endobj');
27500
27501 $this->gradients[$transid]['id'] = $this->n;
27502 $this->_newobj();
27503 $this->_out('<< /Type /Pattern /PatternType 2');
27504 $this->_out('/Shading '.$this->gradients[$transid]['id'].' 0 R');
27505 $this->_out('>>');
27506 $this->_out('endobj');
27507 $this->gradients[$transid]['pattern'] = $this->n;
27508 $this->_newobj();
27509 // Need to extend size of viewing box in case of transformations
27510 $str = 'q /a0 gs /Pattern cs /p'.$transid.' scn -'.($this->wPt/2).' -'.($this->hPt/2).' '.(2*$this->wPt).' '.(2*$this->hPt).' re f Q';
27511 $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
27512 $p=($this->compress) ? gzcompress($str) : $str;
27513 $this->_out('<< /Type /XObject /Subtype /Form /FormType 1 '.$filter);
27514 $this->_out('/Length '.strlen($p));
27515 $this->_out('/BBox [-'.($this->wPt/2).' -'.($this->hPt/2).' '.(2*$this->wPt).' '.(2*$this->hPt).']');
27516 $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceGray >>');
27517 $this->_out('/Resources <<');
27518 $this->_out('/ExtGState << /a0 << /ca 1 /CA 1 >> >>');
27519 $this->_out('/Pattern << /p'.$transid.' '.$this->gradients[$transid]['pattern'].' 0 R >>');
27520 $this->_out('>>');
27521 $this->_out('>>');
27522 $this->_putstream($p);
27523 $this->_out('endobj');
27524 $this->_newobj();
27525 $this->_out('<< /Type /Mask /S /Luminosity /G '.($this->n - 1).' 0 R >>'."\n".'endobj');
27526 $this->_newobj();
27527 $this->_out('<< /Type /ExtGState /SMask '.($this->n - 1).' 0 R /AIS false >>'."\n".'endobj');
27528 if ($grad['fo']) { $this->extgstates[] = array('n' => $this->n, 'trans' => 'TGS'.$id, 'fo'=>true); }
27529 else { $this->extgstates[] = array('n' => $this->n, 'trans' => 'TGS'.$id); }
27530 }
27531 }
27532}
27533/*-- END BACKGROUNDS --*/
27534
27535function _putspotcolors() {
27536 foreach($this->spotColors as $name=>$color) {
27537 $this->_newobj();
27538 $this->_out('[/Separation /'.str_replace(' ','#20',$name));
27539 $this->_out('/DeviceCMYK <<');
27540 $this->_out('/Range [0 1 0 1 0 1 0 1] /C0 [0 0 0 0] ');
27541 $this->_out(sprintf('/C1 [%.3F %.3F %.3F %.3F] ',$color['c']/100,$color['m']/100,$color['y']/100,$color['k']/100));
27542 $this->_out('/FunctionType 2 /Domain [0 1] /N 1>>]');
27543 $this->_out('endobj');
27544 $this->spotColors[$name]['n']=$this->n;
27545 }
27546}
27547
27548
27549function _putresources() {
27550 if ($this->hasOC || count($this->layers)) // mPDF 5.6.01
27551 $this->_putocg();
27552 $this->_putextgstates();
27553 $this->_putspotcolors();
27554 if ($this->progressBar) { $this->UpdateProgressBar(2,'40','Compiling Fonts'); } // *PROGRESS-BAR*
27555 $this->_putfonts();
27556 if ($this->progressBar) { $this->UpdateProgressBar(2,'50','Compiling Images'); } // *PROGRESS-BAR*
27557 $this->_putimages();
27558 $this->_putformobjects(); // *IMAGES-CORE*
27559
27560/*-- IMPORTS --*/
27561 if ($this->enableImports) {
27562 $this->_putformxobjects();
27563 $this->_putimportedobjects();
27564 }
27565/*-- END IMPORTS --*/
27566
27567/*-- BACKGROUNDS --*/
27568 $this->_putshaders();
27569 $this->_putpatterns();
27570/*-- END BACKGROUNDS --*/
27571
27572
27573 //Resource dictionary
27574 $this->offsets[2]=strlen($this->buffer);
27575 $this->_out('2 0 obj');
27576 $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
27577
27578 $this->_out('/Font <<');
27579 foreach($this->fonts as $font) {
27580 if (!$font['used'] && $font['type']=='TTF') { continue; }
27581 if ($font['type']=='TTF' && ($font['sip'] || $font['smp'])) {
27582 foreach($font['n'] AS $k => $fid) {
27583 $this->_out('/F'.$font['subsetfontids'][$k].' '.$font['n'][$k].' 0 R');
27584 }
27585 }
27586 else {
27587 $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
27588 }
27589 }
27590 $this->_out('>>');
27591
27592 if (count($this->spotColors)) {
27593 $this->_out('/ColorSpace <<');
27594 foreach($this->spotColors as $color)
27595 $this->_out('/CS'.$color['i'].' '.$color['n'].' 0 R');
27596 $this->_out('>>');
27597 }
27598
27599 if (count($this->extgstates)) {
27600 $this->_out('/ExtGState <<');
27601 foreach($this->extgstates as $k=>$extgstate)
27602 if (isset($extgstate['trans'])) $this->_out('/'.$extgstate['trans'].' '.$extgstate['n'].' 0 R');
27603 else $this->_out('/GS'.$k.' '.$extgstate['n'].' 0 R');
27604 $this->_out('>>');
27605 }
27606
27607/*-- BACKGROUNDS --*/
27608 if (isset($this->gradients) AND (count($this->gradients) > 0)) {
27609 $this->_out('/Shading <<');
27610 foreach ($this->gradients as $id => $grad) {
27611 $this->_out('/Sh'.$id.' '.$grad['id'].' 0 R');
27612 }
27613 $this->_out('>>');
27614
27615/*
27616 // ??? Not needed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
27617 $this->_out('/Pattern <<');
27618 foreach ($this->gradients as $id => $grad) {
27619 $this->_out('/P'.$id.' '.$grad['pattern'].' 0 R');
27620 }
27621 $this->_out('>>');
27622*/
27623 }
27624/*-- END BACKGROUNDS --*/
27625
27626 if(count($this->images) || count($this->formobjects) || ($this->enableImports && count($this->tpls))) {
27627 $this->_out('/XObject <<');
27628 foreach($this->images as $image)
27629 $this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
27630 foreach($this->formobjects as $formobject)
27631 $this->_out('/FO'.$formobject['i'].' '.$formobject['n'].' 0 R');
27632/*-- IMPORTS --*/
27633 if ($this->enableImports && count($this->tpls)) {
27634 foreach($this->tpls as $tplidx => $tpl) {
27635 $this->_out($this->tplprefix.$tplidx.' '.$tpl['n'].' 0 R');
27636 }
27637 }
27638/*-- END IMPORTS --*/
27639 $this->_out('>>');
27640 }
27641
27642/*-- BACKGROUNDS --*/
27643
27644 if (count($this->patterns)) {
27645 $this->_out('/Pattern <<');
27646 foreach($this->patterns as $k=>$patterns)
27647 $this->_out('/P'.$k.' '.$patterns['n'].' 0 R');
27648 $this->_out('>>');
27649 }
27650/*-- END BACKGROUNDS --*/
27651
27652 // mPDF 5.6.01
27653 if ($this->hasOC || count($this->layers)) {
27654 $this->_out('/Properties <<');
27655 if ($this->hasOC) {
27656 $this->_out('/OC1 '.$this->n_ocg_print.' 0 R /OC2 '.$this->n_ocg_view.' 0 R /OC3 '.$this->n_ocg_hidden.' 0 R ');
27657 }
27658 if (count($this->layers)) {
27659 foreach($this->layers as $id=>$layer)
27660 $this->_out('/ZI'.$id.' '.$layer['n'].' 0 R');
27661 }
27662 $this->_out('>>');
27663 }
27664
27665 $this->_out('>>');
27666 $this->_out('endobj'); // end resource dictionary
27667
27668 $this->_putbookmarks(); // *BOOKMARKS*
27669
27670 if (isset($this->js) && $this->js) {
27671 $this->_putjavascript();
27672 }
27673
27674/*-- ENCRYPTION --*/
27675 if ($this->encrypted) {
27676 $this->_newobj();
27677 $this->enc_obj_id = $this->n;
27678 $this->_out('<<');
27679 $this->_putencryption();
27680 $this->_out('>>');
27681 $this->_out('endobj');
27682 }
27683/*-- END ENCRYPTION --*/
27684}
27685
27686
27687function _putjavascript() {
27688 $this->_newobj();
27689 $this->n_js = $this->n;
27690 $this->_out('<<');
27691 $this->_out('/Names [(EmbeddedJS) '.(1 + $this->n).' 0 R ]');
27692 $this->_out('>>');
27693 $this->_out('endobj');
27694
27695 $this->_newobj();
27696 $this->_out('<<');
27697 $this->_out('/S /JavaScript');
27698 $this->_out('/JS '.$this->_textstring($this->js));
27699 $this->_out('>>');
27700 $this->_out('endobj');
27701}
27702
27703
27704
27705
27706/*-- ENCRYPTION --*/
27707function _putencryption() {
27708 $this->_out('/Filter /Standard');
27709 if ($this->useRC128encryption) {
27710 $this->_out('/V 2');
27711 $this->_out('/R 3');
27712 $this->_out('/Length 128');
27713 }
27714 else {
27715 $this->_out('/V 1');
27716 $this->_out('/R 2');
27717 }
27718 $this->_out('/O ('.$this->_escape($this->Ovalue).')');
27719 $this->_out('/U ('.$this->_escape($this->Uvalue).')');
27720 $this->_out('/P '.$this->Pvalue);
27721}
27722/*-- END ENCRYPTION --*/
27723
27724function _puttrailer() {
27725 $this->_out('/Size '.($this->n+1));
27726 $this->_out('/Root '.$this->n.' 0 R');
27727 $this->_out('/Info '.$this->InfoRoot.' 0 R');
27728/*-- ENCRYPTION --*/
27729 if ($this->encrypted) {
27730 $this->_out('/Encrypt '.$this->enc_obj_id.' 0 R');
27731 $this->_out('/ID [<'.$this->uniqid.'> <'.$this->uniqid.'>]');
27732 }
27733 else {
27734/*-- END ENCRYPTION --*/
27735 $uniqid = md5(time() . $this->buffer);
27736 $this->_out('/ID [<'.$uniqid.'> <'.$uniqid.'>]');
27737/*-- ENCRYPTION --*/
27738 }
27739/*-- END ENCRYPTION --*/
27740}
27741
27742/*-- ENCRYPTION --*/
27743function SetProtection($permissions=array(),$user_pass='',$owner_pass=null, $length=40) {
27744 $this->encrypted=false;
27745 if (is_string($permissions) && strlen($permissions)>0) { $permissions = array($permissions); }
27746 else if (!is_array($permissions)) { return 0; }
27747 $this->last_rc4_key='';
27748 $this->padding="\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08".
27749 "\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A";
27750
27751 $options = array(
27752 'print' => 4, // bit 3
27753 'modify' => 8, // bit 4
27754 'copy' => 16, // bit 5
27755 'annot-forms' => 32, // bit 6
27756 'fill-forms' => 256, // bit 9
27757 'extract' => 512, // bit 10
27758 'assemble' => 1024,// bit 11
27759 'print-highres' => 2048 // bit 12
27760 );
27761 // bit 31 = 1073741824
27762 // bit 32 = 2147483648
27763 // bits 13-31 = 2147479552
27764 // bits 13-32 = 4294963200 + 192 = 4294963392
27765 $protection = 4294963392; // bits 7,8,13-32
27766 foreach ($permissions as $permission) {
27767 if (!isset($options[$permission]))
27768 $this->Error('Incorrect permission: '.$permission);
27769 if ($options[$permission] > 32) { $this->useRC128encryption = true; }
27770 if (isset($options[$permission])) $protection += $options[$permission];
27771 }
27772 if ($length==128) { $this->useRC128encryption = true; }
27773 if ($owner_pass === null)
27774 $owner_pass = uniqid(rand());
27775 $this->encrypted = true;
27776 $this->_generateencryptionkey($user_pass, $owner_pass, $protection);
27777}
27778
27779
27780// Compute key depending on object number where the encrypted data is stored
27781function _objectkey($n) {
27782 if ($this->useRC128encryption)
27783 $len = 16;
27784 else
27785 $len = 10;
27786 return substr($this->_md5_16($this->encryption_key.pack('VXxx',$n)),0,$len);
27787}
27788
27789// RC4 is the standard encryption algorithm used in PDF format
27790function _RC4($key, $text) {
27791 if ($this->last_rc4_key != $key) {
27792 $k = str_repeat($key, 256/strlen($key)+1);
27793 $rc4 = range(0,255);
27794 $j = 0;
27795 for ($i=0; $i<256; $i++){
27796 $t = $rc4[$i];
27797 $j = ($j + $t + ord($k[$i])) % 256;
27798 $rc4[$i] = $rc4[$j];
27799 $rc4[$j] = $t;
27800 }
27801 $this->last_rc4_key = $key;
27802 $this->last_rc4_key_c = $rc4;
27803 } else {
27804 $rc4 = $this->last_rc4_key_c;
27805 }
27806
27807 $len = strlen($text);
27808 $a = 0;
27809 $b = 0;
27810 $out = '';
27811 for ($i=0; $i<$len; $i++){
27812 $a = ($a+1)%256;
27813 $t= $rc4[$a];
27814 $b = ($b+$t)%256;
27815 $rc4[$a] = $rc4[$b];
27816 $rc4[$b] = $t;
27817 $k = $rc4[($rc4[$a]+$rc4[$b])%256];
27818 $out.= chr(ord($text[$i]) ^ $k);
27819 }
27820 return $out;
27821}
27822
27823// Get MD5 as binary string
27824function _md5_16($string) {
27825 return pack('H*',md5($string));
27826}
27827
27828// Compute O value
27829function _Ovalue($user_pass, $owner_pass) {
27830 $tmp = $this->_md5_16($owner_pass);
27831 if ($this->useRC128encryption) {
27832 for ($i = 0; $i < 50; ++$i) {
27833 $tmp = $this->_md5_16($tmp);
27834 }
27835 }
27836 if ($this->useRC128encryption)
27837 $keybytelen = (128 / 8);
27838 else
27839 $keybytelen = (40 / 8);
27840 $owner_RC4_key = substr($tmp,0,$keybytelen);
27841 $enc = $this->_RC4($owner_RC4_key, $user_pass);
27842 if ($this->useRC128encryption) {
27843 $len = strlen($owner_RC4_key);
27844 for ($i = 1; $i <= 19; ++$i) {
27845 $key = '';
27846 for ($j = 0; $j < $len; ++$j) {
27847 $key .= chr(ord($owner_RC4_key{$j}) ^ $i);
27848 }
27849 $enc = $this->_RC4($key, $enc);
27850 }
27851 }
27852 return $enc;
27853}
27854
27855// Compute U value
27856function _Uvalue() {
27857 if ($this->useRC128encryption) {
27858 $tmp = $this->_md5_16($this->padding.$this->_hexToString($this->uniqid));
27859 $enc = $this->_RC4($this->encryption_key, $tmp);
27860 $len = strlen($tmp);
27861 for ($i=1; $i<=19; ++$i) {
27862 $key = '';
27863 for ($j=0; $j<$len; ++$j) {
27864 $key .= chr(ord($this->encryption_key{$j}) ^ $i);
27865 }
27866 $enc = $this->_RC4($key, $enc);
27867 }
27868 $enc .= str_repeat("\x00", 16);
27869 return substr($enc, 0, 32);
27870 }
27871 else {
27872 return $this->_RC4($this->encryption_key, $this->padding);
27873 }
27874}
27875
27876// Compute encryption key
27877function _generateencryptionkey($user_pass, $owner_pass, $protection) {
27878 // Pad passwords
27879 $user_pass = substr($user_pass.$this->padding,0,32);
27880 $owner_pass = substr($owner_pass.$this->padding,0,32);
27881 $chars = 'ABCDEF1234567890';
27882 $id = '';
27883 for ($i=0; $i<32; $i++) { $id .= $chars{rand(0, 15)}; }
27884 $this->uniqid = md5($id);
27885 // Compute O value
27886 $this->Ovalue = $this->_Ovalue($user_pass,$owner_pass);
27887 // Compute encyption key
27888 if ($this->useRC128encryption)
27889 $keybytelen = (128/8);
27890 else
27891 $keybytelen = (40/8);
27892 $prot = sprintf('%032b', $protection);
27893 $perms = chr(bindec(substr($prot,24,8)));
27894 $perms .= chr(bindec(substr($prot,16,8)));
27895 $perms .= chr(bindec(substr($prot,8,8)));
27896 $perms .= chr(bindec(substr($prot,0,8)));
27897 $tmp = $this->_md5_16($user_pass.$this->Ovalue.$perms.$this->_hexToString($this->uniqid));
27898 if ($this->useRC128encryption) {
27899 for ($i=0; $i<50; ++$i) {
27900 $tmp = $this->_md5_16(substr($tmp, 0, $keybytelen));
27901 }
27902 }
27903 $this->encryption_key = substr($tmp,0,$keybytelen);
27904 // Compute U value
27905 $this->Uvalue = $this->_Uvalue();
27906 // Compute P value
27907 $this->Pvalue = $protection;
27908}
27909
27910
27911function _hexToString($hs) {
27912 $s = '';
27913 $len = strlen($hs);
27914 if (($len % 2) != 0) {
27915 $hs .= '0';
27916 ++$len;
27917 }
27918 for ($i = 0; $i < $len; $i += 2) {
27919 $s .= chr(hexdec($hs{$i}.$hs{($i + 1)}));
27920 }
27921 return $s;
27922}
27923
27924/*-- END ENCRYPTION --*/
27925
27926//=========================================
27927/*-- BOOKMARKS --*/
27928// FROM class PDF_Bookmark
27929
27930function Bookmark($txt,$level=0,$y=0) {
27931 $txt = $this->purify_utf8_text($txt);
27932 if ($this->text_input_as_HTML) {
27933 $txt = $this->all_entities_to_utf8($txt);
27934 }
27935 if($y==-1) {
27936 if (!$this->ColActive){ $y=$this->y; }
27937 else { $y = $this->y0; } // If columns are on - mark top of columns
27938 }
27939 // else y is used as set, or =0 i.e. top of page
27940 // DIRECTIONALITY RTL
27941 $bmo = array('t'=>$txt,'l'=>$level,'y'=>$y,'p'=>$this->page);
27942 if ($this->keep_block_together) {
27943 $this->ktBMoutlines[]= $bmo;
27944 }
27945/*-- TABLES --*/
27946 else if ($this->table_rotate) {
27947 $this->tbrot_BMoutlines[]= $bmo;
27948 }
27949 else if ($this->kwt) {
27950 $this->kwt_BMoutlines[]= $bmo;
27951 }
27952/*-- END TABLES --*/
27953 else if ($this->ColActive) { // *COLUMNS*
27954 $this->col_BMoutlines[]= $bmo; // *COLUMNS*
27955 } // *COLUMNS*
27956 else {
27957 $this->BMoutlines[]= $bmo;
27958 }
27959}
27960
27961
27962function _putbookmarks()
27963{
27964 $nb=count($this->BMoutlines);
27965 if($nb==0)
27966 return;
27967
27968 // mPDF 5.6.36
27969 $bmo = $this->BMoutlines;
27970 $this->BMoutlines = array();
27971 $lastlevel = -1;
27972 for($i=0;$i<count($bmo);$i++) {
27973 if ($bmo[$i]['l']>0) {
27974 while($bmo[$i]['l']-$lastlevel > 1) { // If jump down more than one level, insert a new entry
27975 $new = $bmo[$i];
27976 $new['t']="[".$new['t']."]"; // Put [] around text/title to highlight
27977 $new['l']=$lastlevel+1;
27978 $lastlevel++;
27979 $this->BMoutlines[] = $new;
27980 }
27981 }
27982 $this->BMoutlines[] = $bmo[$i];
27983 $lastlevel = $bmo[$i]['l'];
27984 }
27985 $nb=count($this->BMoutlines);
27986
27987 $lru=array();
27988 $level=0;
27989 foreach($this->BMoutlines as $i=>$o) {
27990 if($o['l']>0) {
27991 $parent=$lru[$o['l']-1];
27992 //Set parent and last pointers
27993 $this->BMoutlines[$i]['parent']=$parent;
27994 $this->BMoutlines[$parent]['last']=$i;
27995 if($o['l']>$level) {
27996 //Level increasing: set first pointer
27997 $this->BMoutlines[$parent]['first']=$i;
27998 }
27999 }
28000 else {
28001 $this->BMoutlines[$i]['parent']=$nb;
28002 }
28003 if($o['l']<=$level and $i>0) {
28004 //Set prev and next pointers
28005 $prev=$lru[$o['l']];
28006 $this->BMoutlines[$prev]['next']=$i;
28007 $this->BMoutlines[$i]['prev']=$prev;
28008 }
28009 $lru[$o['l']]=$i;
28010 $level=$o['l'];
28011 }
28012
28013
28014 //Outline items
28015 $n=$this->n+1;
28016 foreach($this->BMoutlines as $i=>$o) {
28017 $this->_newobj();
28018 $this->_out('<</Title '.$this->_UTF16BEtextstring($o['t']));
28019 $this->_out('/Parent '.($n+$o['parent']).' 0 R');
28020 if(isset($o['prev']))
28021 $this->_out('/Prev '.($n+$o['prev']).' 0 R');
28022 if(isset($o['next']))
28023 $this->_out('/Next '.($n+$o['next']).' 0 R');
28024 if(isset($o['first']))
28025 $this->_out('/First '.($n+$o['first']).' 0 R');
28026 if(isset($o['last']))
28027 $this->_out('/Last '.($n+$o['last']).' 0 R');
28028
28029
28030 if (isset($this->pageDim[$o['p']]['h'])) { $h=$this->pageDim[$o['p']]['h']; }
28031 else { $h = 0; }
28032
28033 $this->_out(sprintf('/Dest [%d 0 R /XYZ 0 %.3F null]',1+2*($o['p']),($h-$o['y'])*_MPDFK));
28034 if (isset($this->bookmarkStyles) && isset($this->bookmarkStyles[$o['l']])) {
28035 // font style
28036 $bms = $this->bookmarkStyles[$o['l']]['style'];
28037 $style = 0;
28038 if (strpos($bms,'B') !== false) { $style += 2; }
28039 if (strpos($bms,'I') !== false) { $style += 1; }
28040 $this->_out(sprintf('/F %d', $style));
28041 // Colour
28042 $col = $this->bookmarkStyles[$o['l']]['color'];
28043 if (isset($col) && is_array($col) && count($col)==3) {
28044 $this->_out(sprintf('/C [%.3F %.3F %.3F]', ($col[0]/255), ($col[1]/255), ($col[2]/255)));
28045 }
28046 }
28047
28048 $this->_out('/Count 0>>');
28049 $this->_out('endobj');
28050 }
28051 //Outline root
28052 $this->_newobj();
28053 $this->OutlineRoot=$this->n;
28054 $this->_out('<</Type /BMoutlines /First '.$n.' 0 R');
28055 $this->_out('/Last '.($n+$lru[0]).' 0 R>>');
28056 $this->_out('endobj');
28057}
28058/*-- END BOOKMARKS --*/
28059
28060
28061
28062//======================================================
28063
28064
28065// DEPRACATED but included for backwards compatability
28066function startPageNums() {
28067}
28068
28069//======================================================
28070/*-- TOC --*/
28071// ToC TABLE OF CONTENTS
28072
28073// Initiate, and Mark a place for the Table of Contents to be inserted
28074function TOC($tocfont='', $tocfontsize=0, $tocindent=0, $resetpagenum='', $pagenumstyle='', $suppress='', $toc_orientation='', $TOCusePaging=true, $TOCuseLinking=false, $toc_id=0, $tocoutdent='') { // mPDF 5.6.19
28075 if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
28076 if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
28077 $this->tocontents->TOC($tocfont, $tocfontsize, $tocindent, $resetpagenum, $pagenumstyle, $suppress, $toc_orientation, $TOCusePaging, $TOCuseLinking, $toc_id, $tocoutdent); // mPDF 5.6.19
28078}
28079
28080
28081function TOCpagebreakByArray($a) {
28082 if (!is_array($a)) { $a = array(); }
28083 if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
28084 if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
28085 $tocoutdent = (isset($a['tocoutdent']) ? $a['tocoutdent'] : (isset($a['outdent']) ? $a['outdent'] : ''));
28086 $TOCusePaging = (isset($a['TOCusePaging']) ? $a['TOCusePaging'] : (isset($a['paging']) ? $a['paging'] : true));
28087 $TOCuseLinking = (isset($a['TOCuseLinking']) ? $a['TOCuseLinking'] : (isset($a['links']) ? $a['links'] : ''));
28088 $toc_orientation = (isset($a['toc_orientation']) ? $a['toc_orientation'] : (isset($a['toc-orientation']) ? $a['toc-orientation'] : ''));
28089 $toc_mgl = (isset($a['toc_mgl']) ? $a['toc_mgl'] : (isset($a['toc-margin-left']) ? $a['toc-margin-left'] : ''));
28090 $toc_mgr = (isset($a['toc_mgr']) ? $a['toc_mgr'] : (isset($a['toc-margin-right']) ? $a['toc-margin-right'] : ''));
28091 $toc_mgt = (isset($a['toc_mgt']) ? $a['toc_mgt'] : (isset($a['toc-margin-top']) ? $a['toc-margin-top'] : ''));
28092 $toc_mgb = (isset($a['toc_mgb']) ? $a['toc_mgb'] : (isset($a['toc-margin-bottom']) ? $a['toc-margin-bottom'] : ''));
28093 $toc_mgh = (isset($a['toc_mgh']) ? $a['toc_mgh'] : (isset($a['toc-margin-header']) ? $a['toc-margin-header'] : ''));
28094 $toc_mgf = (isset($a['toc_mgf']) ? $a['toc_mgf'] : (isset($a['toc-margin-footer']) ? $a['toc-margin-footer'] : ''));
28095 $toc_ohname = (isset($a['toc_ohname']) ? $a['toc_ohname'] : (isset($a['toc-odd-header-name']) ? $a['toc-odd-header-name'] : ''));
28096 $toc_ehname = (isset($a['toc_ehname']) ? $a['toc_ehname'] : (isset($a['toc-even-header-name']) ? $a['toc-even-header-name'] : ''));
28097 $toc_ofname = (isset($a['toc_ofname']) ? $a['toc_ofname'] : (isset($a['toc-odd-footer-name']) ? $a['toc-odd-footer-name'] : ''));
28098 $toc_efname = (isset($a['toc_efname']) ? $a['toc_efname'] : (isset($a['toc-even-footer-name']) ? $a['toc-even-footer-name'] : ''));
28099 $toc_ohvalue = (isset($a['toc_ohvalue']) ? $a['toc_ohvalue'] : (isset($a['toc-odd-header-value']) ? $a['toc-odd-header-value'] : 0));
28100 $toc_ehvalue = (isset($a['toc_ehvalue']) ? $a['toc_ehvalue'] : (isset($a['toc-even-header-value']) ? $a['toc-even-header-value'] : 0));
28101 $toc_ofvalue = (isset($a['toc_ofvalue']) ? $a['toc_ofvalue'] : (isset($a['toc-odd-footer-value']) ? $a['toc-odd-footer-value'] : 0));
28102 $toc_efvalue = (isset($a['toc_efvalue']) ? $a['toc_efvalue'] : (isset($a['toc-even-footer-value']) ? $a['toc-even-footer-value'] : 0));
28103 $toc_preHTML = (isset($a['toc_preHTML']) ? $a['toc_preHTML'] : (isset($a['toc-preHTML']) ? $a['toc-preHTML'] : ''));
28104 $toc_postHTML = (isset($a['toc_postHTML']) ? $a['toc_postHTML'] : (isset($a['toc-postHTML']) ? $a['toc-postHTML'] : ''));
28105 $toc_bookmarkText = (isset($a['toc_bookmarkText']) ? $a['toc_bookmarkText'] : (isset($a['toc-bookmarkText']) ? $a['toc-bookmarkText'] : ''));
28106 $resetpagenum = (isset($a['resetpagenum']) ? $a['resetpagenum'] : '');
28107 $pagenumstyle = (isset($a['pagenumstyle']) ? $a['pagenumstyle'] : '');
28108 $suppress = (isset($a['suppress']) ? $a['suppress'] : '');
28109 $orientation = (isset($a['orientation']) ? $a['orientation'] : '');
28110 $mgl = (isset($a['mgl']) ? $a['mgl'] : (isset($a['margin-left']) ? $a['margin-left'] : ''));
28111 $mgr = (isset($a['mgr']) ? $a['mgr'] : (isset($a['margin-right']) ? $a['margin-right'] : ''));
28112 $mgt = (isset($a['mgt']) ? $a['mgt'] : (isset($a['margin-top']) ? $a['margin-top'] : ''));
28113 $mgb = (isset($a['mgb']) ? $a['mgb'] : (isset($a['margin-bottom']) ? $a['margin-bottom'] : ''));
28114 $mgh = (isset($a['mgh']) ? $a['mgh'] : (isset($a['margin-header']) ? $a['margin-header'] : ''));
28115 $mgf = (isset($a['mgf']) ? $a['mgf'] : (isset($a['margin-footer']) ? $a['margin-footer'] : ''));
28116 $ohname = (isset($a['ohname']) ? $a['ohname'] : (isset($a['odd-header-name']) ? $a['odd-header-name'] : ''));
28117 $ehname = (isset($a['ehname']) ? $a['ehname'] : (isset($a['even-header-name']) ? $a['even-header-name'] : ''));
28118 $ofname = (isset($a['ofname']) ? $a['ofname'] : (isset($a['odd-footer-name']) ? $a['odd-footer-name'] : ''));
28119 $efname = (isset($a['efname']) ? $a['efname'] : (isset($a['even-footer-name']) ? $a['even-footer-name'] : ''));
28120 $ohvalue = (isset($a['ohvalue']) ? $a['ohvalue'] : (isset($a['odd-header-value']) ? $a['odd-header-value'] : 0));
28121 $ehvalue = (isset($a['ehvalue']) ? $a['ehvalue'] : (isset($a['even-header-value']) ? $a['even-header-value'] : 0));
28122 $ofvalue = (isset($a['ofvalue']) ? $a['ofvalue'] : (isset($a['odd-footer-value']) ? $a['odd-footer-value'] : 0));
28123 $efvalue = (isset($a['efvalue']) ? $a['efvalue'] : (isset($a['even-footer-value']) ? $a['even-footer-value'] : 0));
28124 $toc_id = (isset($a['toc_id']) ? $a['toc_id'] : (isset($a['name']) ? $a['name'] : 0));
28125 $pagesel = (isset($a['pagesel']) ? $a['pagesel'] : (isset($a['pageselector']) ? $a['pageselector'] : ''));
28126 $toc_pagesel = (isset($a['toc_pagesel']) ? $a['toc_pagesel'] : (isset($a['toc-pageselector']) ? $a['toc-pageselector'] : ''));
28127 $sheetsize = (isset($a['sheetsize']) ? $a['sheetsize'] : (isset($a['sheet-size']) ? $a['sheet-size'] : ''));
28128 $toc_sheetsize = (isset($a['toc_sheetsize']) ? $a['toc_sheetsize'] : (isset($a['toc-sheet-size']) ? $a['toc-sheet-size'] : ''));
28129
28130 $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
28131
28132}
28133
28134function 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) {
28135 if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
28136 if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
28137 //Start a new page
28138 if($this->state==0) $this->AddPage();
28139 if ($this->y == $this->tMargin && (!$this->mirrorMargins ||($this->mirrorMargins && $this->page % 2==1))) {
28140 // Don't add a page
28141 if ($this->page==1 && count($this->PageNumSubstitutions)==0) {
28142 if (!$suppress) { $suppress = 'off'; }
28143 if (!$resetpagenum) { $resetpagenum= 1; }
28144 //$this->PageNumSubstitutions[] = array('from'=>1, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress);
28145 }
28146 $this->PageNumSubstitutions[] = array('from'=>$this->page, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress);
28147 }
28148 else {
28149 $this->AddPage($orientation,'NEXT-ODD', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$sheetsize);
28150 }
28151
28152 $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
28153}
28154
28155function TOC_Entry($txt, $level=0, $toc_id=0) {
28156 // mPDF 5.7.2
28157 if ($this->ColActive) { $ily = $this->y0; } else { $ily = $this->y; } // use top of columns
28158
28159 if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
28160 if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
28161 $linkn = $this->AddLink();
28162 $uid = '__mpdfinternallink_' . $linkn ;
28163 if ($this->keep_block_together) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "kt"=>true ); }
28164 else if ($this->table_rotate) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "tbrot"=>true ); }
28165 else if ($this->kwt) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "kwt"=>true ); }
28166 else if ($this->ColActive) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "col"=>$this->CurrCol ); }
28167 else $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page );
28168 $this->internallink['#'.$uid] = $linkn;
28169 $this->SetLink($linkn,$ily,$this->page);
28170
28171/*-- RTL --*/
28172 if ($this->biDirectional) {
28173 $txt = preg_replace_callback("/([".$this->pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $txt ); // mPDF 5.7+
28174 }
28175/*-- END RTL --*/
28176 if (strtoupper($toc_id)=='ALL') { $toc_id = '_mpdf_all'; }
28177 else if (!$toc_id) { $toc_id = 0; }
28178 else { $toc_id = strtolower($toc_id); }
28179 $btoc = array('t'=>$txt,'l'=>$level,'p'=>$this->page, 'link'=>$linkn, 'toc_id'=>$toc_id);
28180 if ($this->keep_block_together) {
28181 $this->_kttoc[]= $btoc;
28182 }
28183/*-- TABLES --*/
28184 else if ($this->table_rotate) {
28185 $this->tbrot_toc[]= $btoc;
28186 }
28187 else if ($this->kwt) {
28188 $this->kwt_toc[]= $btoc;
28189 }
28190/*-- END TABLES --*/
28191 else if ($this->ColActive) { // *COLUMNS*
28192 $this->col_toc[]= $btoc; // *COLUMNS*
28193 } // *COLUMNS*
28194 else {
28195 $this->tocontents->_toc[]= $btoc;
28196 }
28197}
28198
28199/*-- END TOC --*/
28200
28201//======================================================
28202function MovePages($target_page, $start_page, $end_page=-1) {
28203 // move a page/pages EARLIER in the document
28204 if ($end_page<1) { $end_page = $start_page; }
28205 $n_toc = $end_page - $start_page + 1;
28206
28207 // Set/Update PageNumSubstitutions changes before moving anything
28208 if (count($this->PageNumSubstitutions)) {
28209 $tp_present = false;
28210 $sp_present = false;
28211 $ep_present = false;
28212 foreach($this->PageNumSubstitutions AS $k=>$v) {
28213 if ($this->PageNumSubstitutions[$k]['from']==$target_page) {
28214 $tp_present = true;
28215 if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) {
28216 $this->PageNumSubstitutions[$k]['suppress']='off';
28217 }
28218 }
28219 if ($this->PageNumSubstitutions[$k]['from']==$start_page) {
28220 $sp_present = true;
28221 if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) {
28222 $this->PageNumSubstitutions[$k]['suppress']='off';
28223 }
28224 }
28225 if ($this->PageNumSubstitutions[$k]['from']==($end_page+1)) {
28226 $ep_present = true;
28227 if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) {
28228 $this->PageNumSubstitutions[$k]['suppress']='off';
28229 }
28230 }
28231 }
28232
28233 if (!$tp_present) {
28234 list($tp_type, $tp_suppress, $tp_reset) = $this->docPageSettings($target_page);
28235 }
28236 if (!$sp_present) {
28237 list($sp_type, $sp_suppress, $sp_reset) = $this->docPageSettings($start_page);
28238 }
28239 if (!$ep_present) {
28240 list($ep_type, $ep_suppress, $ep_reset) = $this->docPageSettings($start_page-1);
28241 }
28242
28243 }
28244
28245 $last = array();
28246 //store pages
28247 for($i = $start_page;$i <= $end_page ;$i++)
28248 $last[]=$this->pages[$i];
28249 //move pages
28250 for($i=$start_page - 1;$i>=($target_page);$i--) {
28251 $this->pages[$i+$n_toc]=$this->pages[$i];
28252 }
28253 //Put toc pages at insert point
28254 for($i = 0;$i < $n_toc;$i++) {
28255 $this->pages[$target_page + $i]=$last[$i];
28256 }
28257
28258/*-- BOOKMARKS --*/
28259 // Update Bookmarks
28260 foreach($this->BMoutlines as $i=>$o) {
28261 if($o['p']>=$target_page) {
28262 $this->BMoutlines[$i]['p'] += $n_toc;
28263 }
28264 }
28265/*-- END BOOKMARKS --*/
28266
28267 // Update Page Links
28268 if (count($this->PageLinks)) {
28269 $newarr = array();
28270 foreach($this->PageLinks as $i=>$o) {
28271 foreach($this->PageLinks[$i] as $key => $pl) {
28272 if (strpos($pl[4],'@')===0) {
28273 $p=substr($pl[4],1);
28274 if($p>=$start_page && $p<=$end_page) {
28275 $this->PageLinks[$i][$key][4] = '@'.($p + ($target_page - $start_page));
28276 }
28277 else if($p>=$target_page && $p<$start_page) {
28278 $this->PageLinks[$i][$key][4] = '@'.($p+$n_toc);
28279 }
28280 }
28281 }
28282 if($i>=$start_page && $i<=$end_page) {
28283 $newarr[($i + ($target_page - $start_page))] = $this->PageLinks[$i];
28284 }
28285 else if($i>=$target_page && $i<$start_page) {
28286 $newarr[($i + $n_toc)] = $this->PageLinks[$i];
28287 }
28288 else {
28289 $newarr[$i] = $this->PageLinks[$i];
28290 }
28291 }
28292 $this->PageLinks = $newarr;
28293 }
28294
28295 // OrientationChanges
28296 if (count($this->OrientationChanges)) {
28297 $newarr = array();
28298 foreach($this->OrientationChanges AS $p=>$v) {
28299 if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->OrientationChanges[$p]; }
28300 else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->OrientationChanges[$p]; }
28301 else { $newarr[$p] = $this->OrientationChanges[$p]; }
28302 }
28303 ksort($newarr);
28304 $this->OrientationChanges = $newarr;
28305 }
28306
28307 // Page Dimensions
28308 if (count($this->pageDim)) {
28309 $newarr = array();
28310 foreach($this->pageDim AS $p=>$v) {
28311 if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->pageDim[$p]; }
28312 else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->pageDim[$p]; }
28313 else { $newarr[$p] = $this->pageDim[$p]; }
28314 }
28315 ksort($newarr);
28316 $this->pageDim = $newarr;
28317 }
28318
28319 // HTML Headers & Footers
28320 if (count($this->saveHTMLHeader)) {
28321 $newarr = array();
28322 foreach($this->saveHTMLHeader AS $p=>$v) {
28323 if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->saveHTMLHeader[$p]; }
28324 else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->saveHTMLHeader[$p]; }
28325 else { $newarr[$p] = $this->saveHTMLHeader[$p]; }
28326 }
28327 ksort($newarr);
28328 $this->saveHTMLHeader = $newarr;
28329 }
28330 if (count($this->saveHTMLFooter)) {
28331 $newarr = array();
28332 foreach($this->saveHTMLFooter AS $p=>$v) {
28333 if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->saveHTMLFooter[$p]; }
28334 else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->saveHTMLFooter[$p]; }
28335 else { $newarr[$p] = $this->saveHTMLFooter[$p]; }
28336 }
28337 ksort($newarr);
28338 $this->saveHTMLFooter = $newarr;
28339 }
28340
28341 // Update Internal Links
28342 if (count($this->internallink)) {
28343 foreach($this->internallink as $key=>$o) {
28344 if($o['PAGE']>=$start_page && $o['PAGE']<=$end_page) {
28345 $this->internallink[$key]['PAGE'] += ($target_page - $start_page);
28346 }
28347 else if($o['PAGE']>=$target_page && $o['PAGE']<$start_page) {
28348 $this->internallink[$key]['PAGE'] += $n_toc;
28349 }
28350 }
28351 }
28352
28353 // Update Links
28354 if (count($this->links)) {
28355 foreach($this->links as $key=>$o) {
28356 if($o[0]>=$start_page && $o[0]<=$end_page) {
28357 $this->links[$key][0] += ($target_page - $start_page);
28358 }
28359 if($o[0]>=$target_page && $o[0]<$start_page) {
28360 $this->links[$key][0] += $n_toc;
28361 }
28362 }
28363 }
28364
28365 // Update Form fields
28366 if (count($this->form->forms)) {
28367 foreach($this->form->forms as $key=>$f) {
28368 if($f['page']>=$start_page && $f['page']<=$end_page) {
28369 $this->form->forms[$key]['page'] += ($target_page - $start_page);
28370 }
28371 if($f['page']>=$target_page && $f['page']<$start_page) {
28372 $this->form->forms[$key]['page'] += $n_toc;
28373 }
28374 }
28375 }
28376
28377/*-- ANNOTATIONS --*/
28378 // Update Annotations
28379 if (count($this->PageAnnots)) {
28380 $newarr = array();
28381 foreach($this->PageAnnots as $p=>$anno) {
28382 if($p>=$start_page && $p<=$end_page) {
28383 $np = $p + ($target_page - $start_page);
28384 foreach($anno as $o) {
28385 $newarr[$np][] = $o;
28386 }
28387 }
28388 else if($p>=$target_page && $p<$start_page) {
28389 $np = $p + $n_toc;
28390 foreach($anno as $o) {
28391 $newarr[$np][] = $o;
28392 }
28393 }
28394 else {
28395 $newarr[$p] = $this->PageAnnots[$p];
28396 }
28397 }
28398 $this->PageAnnots = $newarr;
28399 unset($newarr);
28400 }
28401/*-- END ANNOTATIONS --*/
28402
28403 // Update PageNumSubstitutions
28404 if (count($this->PageNumSubstitutions)) {
28405 $newarr = array();
28406 foreach($this->PageNumSubstitutions AS $k=>$v) {
28407 if($this->PageNumSubstitutions[$k]['from']>=$start_page && $this->PageNumSubstitutions[$k]['from']<=$end_page) {
28408 $this->PageNumSubstitutions[$k]['from'] += ($target_page - $start_page);
28409 $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k];
28410 }
28411 else if($this->PageNumSubstitutions[$k]['from']>=$target_page && $this->PageNumSubstitutions[$k]['from']<$start_page) {
28412 $this->PageNumSubstitutions[$k]['from'] += $n_toc;
28413 $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k];
28414 }
28415 else {
28416 $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k];
28417 }
28418 }
28419
28420 if (!$sp_present) {
28421 $newarr[$target_page] = array('from'=>$target_page, 'suppress'=>$sp_suppress, 'reset'=>$sp_reset, 'type'=>$sp_type);
28422 }
28423 if (!$tp_present) {
28424 $newarr[($target_page + $n_toc)] = array('from'=>($target_page+$n_toc), 'suppress'=>$tp_suppress, 'reset'=>$tp_reset, 'type'=>$tp_type);
28425 }
28426 if (!$ep_present && $end_page>count($this->pages)) {
28427 $newarr[($end_page+1)] = array('from'=>($end_page+1), 'suppress'=>$ep_suppress, 'reset'=>$ep_reset, 'type'=>$ep_type);
28428 }
28429 ksort($newarr);
28430 $this->PageNumSubstitutions = array();
28431 foreach($newarr as $v) {
28432 $this->PageNumSubstitutions[] = $v;
28433 }
28434 }
28435}
28436
28437//======================================================
28438function DeletePages($start_page, $end_page=-1) {
28439 // move a page/pages EARLIER in the document
28440 if ($end_page<1) { $end_page = $start_page; }
28441 $n_tod = $end_page - $start_page + 1;
28442 $last_page = count($this->pages);
28443 $n_atend = $last_page - $end_page + 1;
28444
28445 //move pages
28446 for($i=0;$i<$n_atend;$i++) {
28447 $this->pages[$start_page+$i]=$this->pages[$end_page+1+$i];
28448 }
28449 //delete pages
28450 for($i = 0;$i < $n_tod ;$i++)
28451 unset($this->pages[$last_page-$i]);
28452
28453
28454/*-- BOOKMARKS --*/
28455 // Update Bookmarks
28456 foreach($this->BMoutlines as $i=>$o) {
28457 if($o['p']>=$end_page) { $this->BMoutlines[$i]['p'] -= $n_tod; }
28458 else if($p<$start_page) { unset($this->BMoutlines[$i]); }
28459 }
28460/*-- END BOOKMARKS --*/
28461
28462 // Update Page Links
28463 if (count($this->PageLinks)) {
28464 $newarr = array();
28465 foreach($this->PageLinks as $i=>$o) {
28466 foreach($this->PageLinks[$i] as $key => $pl) {
28467 if (strpos($pl[4],'@')===0) {
28468 $p=substr($pl[4],1);
28469 if($p>$end_page) { $this->PageLinks[$i][$key][4] = '@'.($p - $n_tod); }
28470 else if($p<$start_page) { unset($this->PageLinks[$i][$key]); }
28471 }
28472 }
28473 if($i>$end_page) { $newarr[($i - $n_tod)] = $this->PageLinks[$i]; }
28474 else if($p<$start_page) { $newarr[$i] = $this->PageLinks[$i]; }
28475 }
28476 $this->PageLinks = $newarr;
28477 }
28478
28479 // OrientationChanges
28480 if (count($this->OrientationChanges)) {
28481 $newarr = array();
28482 foreach($this->OrientationChanges AS $p=>$v) {
28483 if($p>$end_page) { $newarr[($p - $t_tod)] = $this->OrientationChanges[$p]; }
28484 else if($p<$start_page) { $newarr[$p] = $this->OrientationChanges[$p]; }
28485 }
28486 ksort($newarr);
28487 $this->OrientationChanges = $newarr;
28488 }
28489
28490 // Page Dimensions
28491 if (count($this->pageDim)) {
28492 $newarr = array();
28493 foreach($this->pageDim AS $p=>$v) {
28494 if($p>$end_page) { $newarr[($p - $n_tod)] = $this->pageDim[$p]; }
28495 else if($p<$start_page) { $newarr[$p] = $this->pageDim[$p]; }
28496 }
28497 ksort($newarr);
28498 $this->pageDim = $newarr;
28499 }
28500
28501 // HTML Headers & Footers
28502 if (count($this->saveHTMLHeader)) {
28503 foreach($this->saveHTMLHeader AS $p=>$v) {
28504 if($p>end_page) { $newarr[($p - $n_tod)] = $this->saveHTMLHeader[$p]; }
28505 else if($p<$start_page) { $newarr[$p] = $this->saveHTMLHeader[$p]; }
28506 }
28507 ksort($newarr);
28508 $this->saveHTMLHeader = $newarr;
28509 }
28510 if (count($this->saveHTMLFooter)) {
28511 $newarr = array();
28512 foreach($this->saveHTMLFooter AS $p=>$v) {
28513 if($p>$end_page) { $newarr[($p - $n_tod)] = $this->saveHTMLFooter[$p]; }
28514 else if($p<$start_page) { $newarr[$p] = $this->saveHTMLFooter[$p]; }
28515 }
28516 ksort($newarr);
28517 $this->saveHTMLFooter = $newarr;
28518 }
28519
28520 // Update Internal Links
28521 foreach($this->internallink as $key=>$o) {
28522 if($o['PAGE']>$end_page) { $this->internallink[$key]['PAGE'] -= $n_tod; }
28523 else if($o['PAGE']<$start_page) { unset($this->internallink[$key]); }
28524 }
28525
28526 // Update Links
28527 foreach($this->links as $key=>$o) {
28528 if($o[0]>$end_page) { $this->links[$key][0] -= $n_tod; }
28529 else if($o[0]<$start_page) { unset($this->links[$key]); }
28530 }
28531
28532 // Update Form fields
28533 foreach($this->form->forms as $key=>$f) {
28534 if($f['page']>$end_page) { $this->form->forms[$key]['page'] -= $n_tod; }
28535 else if($f['page']<$start_page) { unset($this->form->forms[$key]); }
28536 }
28537
28538/*-- ANNOTATIONS --*/
28539 // Update Annotations
28540 if (count($this->PageAnnots)) {
28541 $newarr = array();
28542 foreach($this->PageAnnots as $p=>$anno) {
28543 if($p>$end_page) { foreach($anno as $o) { $newarr[($p - $n_tod)][] = $o; } }
28544 else if($p<$start_page) { $newarr[$p] = $this->PageAnnots[$p]; }
28545 }
28546 ksort($newarr);
28547 $this->PageAnnots = $newarr;
28548 }
28549/*-- END ANNOTATIONS --*/
28550
28551 // Update PageNumSubstitutions
28552 foreach($this->PageNumSubstitutions AS $k=>$v) {
28553 if($this->PageNumSubstitutions[$k]['from']>$end_page) { $this->PageNumSubstitutions[$k]['from'] -= $n_tod; }
28554 else if($this->PageNumSubstitutions[$k]['from']<$start_page) { unset($this->PageNumSubstitutions[$k]); }
28555 }
28556
28557 unset($newarr);
28558 $this->page = count($this->pages);
28559}
28560
28561
28562//======================================================
28563/*-- INDEX --*/
28564// FROM class PDF_Ref == INDEX
28565
28566function Reference($txt) {
28567 $this->IndexEntry($txt);
28568}
28569
28570
28571function IndexEntry($txt, $xref='') {
28572 if ($xref) {
28573 $this->IndexEntrySee($txt,$xref);
28574 return;
28575 }
28576 $txt = strip_tags($txt);
28577 $txt = $this->purify_utf8_text($txt);
28578 if ($this->text_input_as_HTML) {
28579 $txt = $this->all_entities_to_utf8($txt);
28580 }
28581 if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
28582
28583 $Present=0;
28584 $size=sizeof($this->Reference);
28585
28586 if ($this->directionality == 'rtl') { // *RTL*
28587 $txt = str_replace(':',' - ',$txt); // *RTL*
28588 } // *RTL*
28589 else { // *RTL*
28590 $txt = str_replace(':',', ',$txt);
28591 } // *RTL*
28592
28593
28594 //Search the reference (AND Ref/PageNo) in the array
28595 for ($i=0;$i<$size;$i++){
28596 if ($this->keep_block_together) {
28597 if (isset($this->ktReference[$i]['t']) && $this->ktReference[$i]['t']==$txt){
28598 $Present=1;
28599 if ($this->page != $this->ktReference[$i]['op']) { // mPDF 5.7.2
28600 $this->ktReference[$i]['op'] = $this->page;
28601 }
28602 }
28603 }
28604/*-- TABLES --*/
28605 else if ($this->table_rotate) {
28606 if (isset($this->tbrot_Reference[$i]['t']) && $this->tbrot_Reference[$i]['t']==$txt){
28607 $Present=1;
28608 if ($this->page != $this->tbrot_Reference[$i]['op']) { // mPDF 5.7.2
28609 $this->tbrot_Reference[$i]['op'] = $this->page;
28610 }
28611 }
28612 }
28613 else if ($this->kwt) {
28614 if (isset($this->kwt_Reference[$i]['t']) && $this->kwt_Reference[$i]['t']==$txt){
28615 $Present=1;
28616 if ($this->page != $this->kwt_Reference[$i]['op']) { // mPDF 5.7.2
28617 $this->kwt_Reference[$i]['op'] = $this->page;
28618 }
28619 }
28620 }
28621/*-- END TABLES --*/
28622/*-- COLUMNS --*/
28623 else if ($this->ColActive) {
28624 if (isset($this->col_Reference[$i]['t']) && $this->col_Reference[$i]['t']==$txt){
28625 $Present=1;
28626 if ($this->page != $this->col_Reference[$i]['op']) { // mPDF 5.7.2
28627 $this->col_Reference[$i]['op'] = $this->page;
28628 }
28629 }
28630 }
28631/*-- END COLUMNS --*/
28632 else {
28633 if (isset($this->Reference[$i]['t']) && $this->Reference[$i]['t']==$txt){
28634 $Present=1;
28635 if (!in_array($this->page,$this->Reference[$i]['p'])) {
28636 $this->Reference[$i]['p'][] = $this->page;
28637 }
28638 }
28639 }
28640 }
28641 //If not found, add it
28642 if ($Present==0) {
28643 $opr = array('t'=>$txt, 'op'=>$this->page);
28644 if ($this->keep_block_together) {
28645 $this->ktReference[]= $opr;
28646 }
28647/*-- TABLES --*/
28648 else if ($this->table_rotate) {
28649 $this->tbrot_Reference[]= $opr;
28650 }
28651 else if ($this->kwt) {
28652 $this->kwt_Reference[]= $opr;
28653 }
28654/*-- END TABLES --*/
28655/*-- COLUMNS --*/
28656 else if ($this->ColActive) {
28657 $this->col_Reference[]= $opr;
28658 }
28659/*-- END COLUMNS --*/
28660 else {
28661 $this->Reference[]=array('t'=>$txt,'p'=>array($this->page));
28662 }
28663 }
28664}
28665
28666// Added function to add a reference "Elephants. See Chickens"
28667function ReferenceSee($txta,$txtb) {
28668 $this->IndexEntrySee($txta,$txtb);
28669}
28670
28671function IndexEntrySee($txta,$txtb) {
28672 $txta = strip_tags($txta);
28673 $txtb = strip_tags($txtb);
28674 $txta = $this->purify_utf8_text($txta);
28675 $txtb = $this->purify_utf8_text($txtb);
28676 if ($this->text_input_as_HTML) {
28677 $txta = $this->all_entities_to_utf8($txta);
28678 $txtb = $this->all_entities_to_utf8($txtb);
28679 }
28680 if ($this->usingCoreFont) {
28681 $txta = mb_convert_encoding($txta,$this->mb_enc,'UTF-8');
28682 $txtb = mb_convert_encoding($txtb,$this->mb_enc,'UTF-8');
28683 }
28684 if ($this->directionality == 'rtl') { // *RTL*
28685 $txta = str_replace(':',' - ',$txta); // *RTL*
28686 $txtb = str_replace(':',' - ',$txtb); // *RTL*
28687 } // *RTL*
28688 else { // *RTL*
28689 $txta = str_replace(':',', ',$txta);
28690 $txtb = str_replace(':',', ',$txtb);
28691 } // *RTL*
28692 $this->Reference[]=array('t'=>$txta.' - see '.$txtb,'p'=>array());
28693}
28694
28695function CreateReference($NbCol=1, $reffontsize='', $linespacing='', $offset=3, $usedivletters=1, $divlettfontsize='', $gap=5, $reffont='',$divlettfont='', $useLinking=false) {
28696 $this->CreateIndex($NbCol, $reffontsize, $linespacing, $offset, $usedivletters, $divlettfontsize, $gap, $reffont, $divlettfont, $useLinking);
28697}
28698
28699function CreateIndex($NbCol=1, $reffontsize='', $linespacing='', $offset=3, $usedivletters=1, $divlettfontsize='', $gap=5, $reffont='',$divlettfont='', $useLinking=false) {
28700 if (!$reffontsize) { $reffontsize = $this->default_font_size; }
28701 if (!$divlettfontsize) { $divlettfontsize = ($this->default_font_size * 1.8); }
28702 if (!$reffont) { $reffont = $this->default_font; }
28703 if (!$divlettfont) { $divlettfont = $reffont; }
28704 if (!$linespacing) { $linespacing= $this->default_lineheight_correction; }
28705 if ($this->ColActive) { $this->SetColumns(0); } // *COLUMNS*
28706 $size=sizeof($this->Reference);
28707 if ($size == 0) { return false; }
28708
28709
28710 if ($NbCol<2) {
28711 $NbCol = 1;
28712 $colWidth = $this->pgwidth;
28713 }
28714 else {
28715 $this->SetColumns($NbCol,'',$gap);
28716 $colWidth = $this->ColWidth;
28717 }
28718 if ($this->directionality == 'rtl') { $align = 'R'; }
28719 else { $align = 'L'; }
28720 $lett = '';
28721 if (!function_exists('cmp')) {
28722 function cmp ($a, $b) {
28723 return strnatcmp(strtolower($a['t']), strtolower($b['t']));
28724 }
28725 }
28726 //Alphabetic sort of the references
28727 usort($this->Reference, 'cmp');
28728 $size=sizeof($this->Reference);
28729 $this->breakpoints[$this->CurrCol][] = $this->y; // *COLUMNS*
28730
28731 $divlettjuststarted = false;
28732
28733 $this->OpenTag('DIV',array('STYLE'=>'line-height: '.$linespacing.'; font-family: '.$reffont.'; font-size: '.$reffontsize.'pt; '));
28734
28735 $last_lett = '';
28736 for ($i=0;$i<$size;$i++){
28737 if ($this->Reference[$i]['t']) {
28738 if ($usedivletters) {
28739
28740 $lett = mb_strtoupper(mb_substr($this->Reference[$i]['t'],0,1,$this->mb_enc ),$this->mb_enc );
28741 if ($lett != $last_lett) {
28742
28743 $save_bp = $this->breakpoints[$this->CurrCol]; // *COLUMNS*
28744 $divlettjuststarted = true;
28745
28746 if ($i>0) {
28747 $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; '));
28748 }
28749 else {
28750 $this->OpenTag('DIV',array('STYLE'=>'line-height: '.$linespacing.'; font-family: '.$divlettfont.'; font-size: '.$divlettfontsize.'pt; font-weight: bold; page-break-after: avoid; '));
28751 }
28752 $this->_saveTextBuffer($lett);
28753 $this->CloseTag('DIV');
28754 }
28755 }
28756
28757 $this->OpenTag('DIV',array('STYLE'=>'text-indent: -'.$offset.'mm; line-height: '.$linespacing.'; font-family: '.$reffont.'; font-size: '.$reffontsize.'pt; '));
28758
28759/*-- RTL --*/
28760 // Change Arabic + Persian. to Presentation Forms
28761 if ($this->biDirectional) {
28762 $this->Reference[$i]['t'] = preg_replace_callback("/([".$this->pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $this->Reference[$i]['t'] ); // mPDF 5.7+
28763 }
28764/*-- END RTL --*/
28765
28766 // Font-specific ligature substitution for Indic fonts
28767 if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($this->Reference[$i]['t']); // *INDIC*
28768
28769 $this->_saveTextBuffer($this->Reference[$i]['t']);
28770 $ppp = $this->Reference[$i]['p']; // = array of page numbers to point to
28771 if (count($ppp)) {
28772 sort($ppp);
28773 $newarr = array();
28774 $range_start = $ppp[0];
28775 $range_end = 0;
28776
28777 if (!$this->usingCoreFont) { $spacer = "\xc2\xa0 "; }
28778 else { $spacer = chr(160).' '; }
28779 $this->_saveTextBuffer($spacer);
28780 if ($this->directionality == 'rtl') { $sep = '.'; $joiner = '-'; }
28781 else { $sep = ', '; $joiner = '-'; }
28782 for ($zi=1;$zi<count($ppp);$zi++) {
28783 // RTL - Each number separately
28784 if ($this->directionality == 'rtl') {
28785/*-- RTL --*/
28786 if ($zi<count($ppp)-1) {
28787 $txt = $sep . $this->docPageNum($ppp[$zi]);
28788 if ($useLinking) { $href = '@'.$ppp[$zi]; }
28789 else { $href = ''; }
28790 $this->_saveTextBuffer($txt, $href);
28791 }
28792/*-- END RTL --*/
28793 }
28794
28795 else if ($ppp[$zi] == ($ppp[($zi-1)]+1)) {
28796 $range_end = $ppp[$zi];
28797 }
28798 else {
28799 if ($range_end) {
28800 if ($range_end == $range_start+1) {
28801 if ($useLinking) { $href = '@'.$range_start; }
28802 else { $href = ''; }
28803 $txt = $this->docPageNum($range_start) . $sep;
28804 $this->_saveTextBuffer($txt, $href);
28805 if ($useLinking) { $href = '@'.$ppp[$zi-1]; }
28806 else { $href = ''; }
28807 $txt = $this->docPageNum($ppp[$zi-1]) . $sep;
28808 $this->_saveTextBuffer($txt, $href);
28809 }
28810 else {
28811 if ($useLinking) { $href = '@'.$range_start; }
28812 else { $href = ''; }
28813 }
28814 }
28815 else {
28816 if ($useLinking) { $href = '@'.$ppp[$zi-1]; }
28817 else { $href = ''; }
28818 $txt = $this->docPageNum($ppp[$zi-1]) . $sep;
28819 $this->_saveTextBuffer($txt, $href);
28820 }
28821 $range_start = $ppp[$zi];
28822 $range_end = 0;
28823 }
28824 }
28825
28826 if ($range_end) {
28827 if ($range_end == $range_start+1) {
28828 if ($useLinking) { $href = '@'.$range_start; }
28829 else { $href = ''; }
28830 $txt = $this->docPageNum($range_start) . $sep;
28831 $this->_saveTextBuffer($txt, $href);
28832 if ($useLinking) { $href = '@'.$range_end; }
28833 else { $href = ''; }
28834 $txt = $this->docPageNum($range_end);
28835 $this->_saveTextBuffer($txt, $href);
28836 }
28837 else {
28838 if ($useLinking) { $href = '@'.$range_start; }
28839 else { $href = ''; }
28840 $txt = $this->docPageNum($range_start) . $joiner;
28841 $this->_saveTextBuffer($txt, $href);
28842 if ($useLinking) { $href = '@'.$range_end; }
28843 else { $href = ''; }
28844 $txt = $this->docPageNum($range_end);
28845 $this->_saveTextBuffer($txt, $href);
28846 }
28847 }
28848 else {
28849 if ($useLinking) { $href = '@'.$ppp[(count($ppp)-1)]; }
28850 else { $href = ''; }
28851 $txt = $this->docPageNum($ppp[(count($ppp)-1)]);
28852 $this->_saveTextBuffer($txt, $href);
28853 }
28854 }
28855 }
28856 $this->CloseTag('DIV');
28857
28858 if ($divlettjuststarted) { $this->breakpoints[$this->CurrCol] = $save_bp; } // *COLUMNS*
28859 $divlettjuststarted = false;
28860
28861 $this->breakpoints[$this->CurrCol][] = $this->y; // *COLUMNS*
28862 $last_lett = $lett;
28863 }
28864 $this->CloseTag('DIV');
28865 $this->breakpoints[$this->CurrCol][] = $this->y; // *COLUMNS*
28866 if ($this->ColActive) { $this->SetColumns(0); } // *COLUMNS*
28867}
28868/*-- END INDEX --*/
28869
28870
28871function AcceptPageBreak() {
28872 if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); } // *TABLES*
28873/*-- COLUMNS --*/
28874 if ($this->ColActive==1) {
28875 if($this->CurrCol<$this->NbCol-1) {
28876 //Go to the next column
28877 $this->CurrCol++;
28878 $this->SetCol($this->CurrCol);
28879 $this->y=$this->y0;
28880 $this->ChangeColumn=1; // Number (and direction) of columns changed +1, +2, -2 etc.
28881 // DIRECTIONALITY RTL
28882 if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); } // *RTL*
28883
28884 //Stay on the page
28885 return false;
28886 }
28887 else {
28888 //Go back to the first column - NEW PAGE
28889 if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
28890 $this->SetCol(0);
28891 $this->y0 = $this->tMargin;
28892 $this->ChangeColumn= -($this->NbCol-1);
28893 // DIRECTIONALITY RTL
28894 if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); } // *RTL*
28895 //Page break
28896 return true;
28897 }
28898 }
28899/*-- END COLUMNS --*/
28900/*-- TABLES --*/
28901 else if ($this->table_rotate) {
28902 if ($this->tablebuffer) { $this->printtablebuffer(); }
28903 return true;
28904 }
28905/*-- END TABLES --*/
28906 else { // *COLUMNS*
28907 $this->ChangeColumn=0;
28908 return $this->autoPageBreak;
28909 } // *COLUMNS*
28910 return $this->autoPageBreak;
28911}
28912
28913
28914//----------- COLUMNS ---------------------
28915/*-- COLUMNS --*/
28916
28917function SetColumns($NbCol,$vAlign='',$gap=5) {
28918// NbCol = number of columns
28919// CurrCol = Number of the current column starting at 0
28920// Called externally to set columns on/off and number
28921// Integer 2 upwards sets columns on to that number
28922// Anything less than 2 turns columns off
28923 if ($NbCol<2) { // SET COLUMNS OFF
28924 if ($this->ColActive) {
28925 $this->ColActive=0;
28926 if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
28927 $this->NbCol=1;
28928 $this->ResetMargins();
28929 $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
28930 $this->divwidth = 0;
28931 $this->Ln();
28932 }
28933 $this->ColActive=0;
28934 $this->columnbuffer = array();
28935 $this->ColDetails = array();
28936 $this->columnLinks = array();
28937 $this->columnAnnots = array();
28938 $this->columnForms = array();
28939 $this->col_Reference = array();
28940 $this->col_BMoutlines = array();
28941 $this->col_toc = array();
28942 $this->breakpoints = array();
28943 }
28944 else { // SET COLUMNS ON
28945 if ($this->ColActive) {
28946 $this->ColActive=0;
28947 if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
28948 $this->ResetMargins();
28949 }
28950 if (isset($this->y) && $this->y>$this->tMargin) $this->Ln();
28951 $this->NbCol=$NbCol;
28952 $this->ColGap = $gap;
28953 $this->divwidth = 0;
28954 $this->ColActive=1;
28955 $this->ColumnAdjust = true; // enables column height adjustment for the page
28956 $this->columnbuffer = array();
28957 $this->ColDetails = array();
28958 $this->columnLinks = array();
28959 $this->columnAnnots = array();
28960 $this->columnForms = array();
28961 $this->col_Reference = array();
28962 $this->col_BMoutlines = array();
28963 $this->col_toc = array();
28964 $this->breakpoints = array();
28965 if ((strtoupper($vAlign) == 'J') || (strtoupper($vAlign) == 'JUSTIFY')) { $vAlign = 'J'; }
28966 else { $vAlign = ''; }
28967 $this->colvAlign = $vAlign;
28968 //Save the ordinate
28969 $absL = $this->DeflMargin-($gap/2);
28970 $absR = $this->DefrMargin-($gap/2);
28971 $PageWidth = $this->w-$absL-$absR; // virtual pagewidth for calculation only
28972 $ColWidth = (($PageWidth - ($gap * ($NbCol)))/$NbCol);
28973 $this->ColWidth = $ColWidth;
28974/*-- RTL --*/
28975
28976 if ($this->directionality == 'rtl') {
28977 for ($i=0;$i<$this->NbCol;$i++) {
28978 $this->ColL[$i] = $absL + ($gap/2) + (($NbCol - ($i+1))*($PageWidth/$NbCol)) ;
28979 $this->ColR[$i] = $this->ColL[$i] + $ColWidth; // NB This is not R margin -> R pos
28980 }
28981 }
28982 else {
28983/*-- END RTL --*/
28984 for ($i=0;$i<$this->NbCol;$i++) {
28985 $this->ColL[$i] = $absL + ($gap/2) + ($i* ($PageWidth/$NbCol) );
28986 $this->ColR[$i] = $this->ColL[$i] + $ColWidth; // NB This is not R margin -> R pos
28987 }
28988 } // *RTL*
28989 $this->pgwidth = $ColWidth;
28990 $this->SetCol(0);
28991 $this->y0=$this->y;
28992 }
28993 $this->x = $this->lMargin;
28994}
28995
28996function SetCol($CurrCol) {
28997// Used internally to set column by number: 0 is 1st column
28998 //Set position on a column
28999 $this->CurrCol=$CurrCol;
29000 $x = $this->ColL[$CurrCol];
29001 $xR = $this->ColR[$CurrCol]; // NB This is not R margin -> R pos
29002 if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN
29003 $x += $this->MarginCorrection ;
29004 $xR += $this->MarginCorrection ;
29005 }
29006 $this->SetMargins($x,($this->w - $xR),$this->tMargin);
29007}
29008
29009function AddColumn() {
29010 $this->NewColumn();
29011 $this->ColumnAdjust = false; // disables all column height adjustment for the page.
29012}
29013function NewColumn() {
29014 if ($this->ColActive==1) {
29015 if($this->CurrCol<$this->NbCol-1) {
29016 //Go to the next column
29017 $this->CurrCol++;
29018 $this->SetCol($this->CurrCol);
29019 $this->y = $this->y0;
29020 $this->ChangeColumn=1;
29021 // DIRECTIONALITY RTL
29022 if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); } // *RTL*
29023 //Stay on the page
29024 }
29025 else {
29026 //Go back to the first column
29027 //Page break
29028 if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
29029 $this->AddPage($this->CurOrientation);
29030 $this->SetCol(0);
29031 $this->y0 = $this->tMargin;
29032 $this->ChangeColumn= -($this->NbCol-1);
29033 // DIRECTIONALITY RTL
29034 if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); } // *RTL*
29035 }
29036 $this->x = $this->lMargin;
29037 }
29038 else {
29039 $this->AddPage($this->CurOrientation);
29040 }
29041}
29042
29043function printcolumnbuffer() {
29044 // Columns ended (but page not ended) -> try to match all columns - unless disabled by using a custom column-break
29045 if (!$this->ColActive && $this->ColumnAdjust && !$this->keepColumns) { // mPDF 5.7.2
29046 // Calculate adjustment to add to each column to calculate rel_y value
29047 $this->ColDetails[0]['add_y'] = 0;
29048 $last_col = 0;
29049 // Recursively add previous column's height
29050 for($i=1;$i<$this->NbCol;$i++) {
29051 if (isset($this->ColDetails[$i]['bottom_margin']) && $this->ColDetails[$i]['bottom_margin']) { // If any entries in the column
29052 $this->ColDetails[$i]['add_y'] = ($this->ColDetails[$i-1]['bottom_margin'] - $this->y0) + $this->ColDetails[$i-1]['add_y'];
29053 $last_col = $i; // Last column actually printed
29054 }
29055 }
29056
29057 // Calculate value for each position sensitive entry as though for one column
29058 foreach($this->columnbuffer AS $key=>$s) {
29059 $t = $s['s'];
29060 if ($t == 'ACROFORM') {
29061 $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
29062 $this->columnbuffer[$key]['s'] = '';
29063 }
29064 else if (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/',$t)) {
29065 $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
29066 }
29067 else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/',$t)) {
29068 $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
29069 }
29070 else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) {
29071 $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
29072 }
29073 else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) {
29074 $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
29075 }
29076 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)) {
29077 $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
29078 }
29079 else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) {
29080 $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
29081 }
29082 }
29083 foreach($this->internallink AS $key => $f) {
29084 if (is_array($f) && isset($f['col'])) {
29085 $this->internallink[$key]['rel_y'] = $f['Y'] + $this->ColDetails[$f['col']]['add_y'] - $this->y0;
29086 }
29087 }
29088
29089 $breaks = array();
29090 foreach($this->breakpoints AS $c => $bpa) {
29091 foreach($bpa AS $rely) {
29092 $breaks[] = $rely + $this->ColDetails[$c]['add_y'] - $this->y0;
29093 }
29094 }
29095
29096 if (isset($this->ColDetails[$last_col]['bottom_margin'])) { $lcbm = $this->ColDetails[$last_col]['bottom_margin']; }
29097 else { $lcbm = 0; }
29098 $sum_h = $this->ColDetails[$last_col]['add_y'] + $lcbm - $this->y0;
29099 //$sum_h = max($this->ColDetails[$last_col]['add_y'] + $this->ColDetails[$last_col]['bottom_margin'] - $this->y0, end($breaks));
29100 $target_h = ($sum_h / $this->NbCol);
29101
29102 $cbr = array();
29103 for($i=1;$i<$this->NbCol;$i++) {
29104 $th = ($sum_h * $i / $this->NbCol);
29105 foreach($breaks AS $bk=>$val) {
29106 if ($val > $th) {
29107 if (($val-$th) < ($th-$breaks[$bk-1])) { $cbr[$i-1] = $val; }
29108 else { $cbr[$i-1] = $breaks[$bk-1]; }
29109 break;
29110 }
29111 }
29112 }
29113 $cbr[($this->NbCol-1)] = $sum_h;
29114
29115 // Now update the columns - divide into columns of approximately equal value
29116 $last_new_col = 0;
29117 $yadj = 0; // mm
29118 $xadj = 0;
29119 $last_col_bottom = 0;
29120 $lowest_bottom_y = 0;
29121 $block_bottom = 0;
29122 $newcolumn = 0;
29123 foreach($this->columnbuffer AS $key=>$s) {
29124 if (isset($s['rel_y'])) { // only process position sensitive data
29125 if ($s['rel_y'] >= $cbr[$newcolumn]) {
29126 $newcolumn++;
29127 }
29128 else {
29129 $newcolumn = $last_new_col ;
29130 }
29131
29132
29133 $block_bottom = max($block_bottom,($s['rel_y']+$s['h']));
29134
29135 if ($this->directionality == 'rtl') { // *RTL*
29136 $xadj = -(($newcolumn - $s['col']) * ($this->ColWidth + $this->ColGap)); // *RTL*
29137 } // *RTL*
29138 else { // *RTL*
29139 $xadj = ($newcolumn - $s['col']) * ($this->ColWidth + $this->ColGap);
29140 } // *RTL*
29141
29142 if ($last_new_col != $newcolumn) { // Added new column
29143 $last_col_bottom = $this->columnbuffer[$key]['rel_y'];
29144 $block_bottom = 0;
29145 }
29146 $yadj = ($s['rel_y'] - $s['y']) - ($last_col_bottom)+$this->y0;
29147 // callback function
29148 $t = $s['s'];
29149
29150 // mPDF 5.7+
29151 $t = $this->columnAdjustPregReplace('Td', $xadj, $yadj, '/BT (\d+\.\d\d+) (\d+\.\d\d+) Td/', $t);
29152 $t = $this->columnAdjustPregReplace('re', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) ([\-]{0,1}\d+\.\d\d+) re/', $t);
29153 $t = $this->columnAdjustPregReplace('l', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) l/', $t);
29154 $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);
29155 $t = $this->columnAdjustPregReplace('draw', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) m/', $t);
29156 $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);
29157
29158 $this->columnbuffer[$key]['s'] = $t;
29159 $this->columnbuffer[$key]['newcol'] = $newcolumn;
29160 $this->columnbuffer[$key]['newy'] = $s['y'] + $yadj;
29161 $last_new_col = $newcolumn;
29162 $clb = $s['y'] + $yadj + $s['h'] ; // bottom_margin of current
29163 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; }
29164 if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; }
29165 // Adjust LINKS
29166 if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
29167 $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
29168 $this->PageLinks[$this->page][$ref][0] += ($xadj*_MPDFK);
29169 $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK);
29170 unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
29171 }
29172 // Adjust FORM FIELDS
29173 if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
29174 $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
29175 $this->form->forms[$ref]['x'] += ($xadj);
29176 $this->form->forms[$ref]['y'] += ($yadj);
29177 unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
29178 }
29179/*-- ANNOTATIONS --*/
29180 if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
29181 $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
29182 if ($this->PageAnnots[$this->page][$ref]['x'] < 0) {
29183 $this->PageAnnots[$this->page][$ref]['x'] -= ($xadj);
29184 }
29185 else {
29186 $this->PageAnnots[$this->page][$ref]['x'] += ($xadj);
29187 }
29188 $this->PageAnnots[$this->page][$ref]['y'] += ($yadj); // unlike PageLinks, Page annots has y values from top in mm
29189 unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
29190 }
29191/*-- END ANNOTATIONS --*/
29192 }
29193 }
29194
29195/*-- BOOKMARKS --*/
29196 // Adjust Bookmarks
29197 foreach($this->col_BMoutlines AS $v) {
29198 $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$this->y0,'p'=>$v['p']);
29199 }
29200/*-- END BOOKMARKS --*/
29201
29202/*-- INDEX --*/
29203 // Adjust Reference (index)
29204 foreach($this->col_Reference AS $v) {
29205 $Present=0;
29206 //Search the reference (AND Ref/PageNo) in the array
29207 for ($i=0;$i<count($this->Reference);$i++){
29208 if ($this->Reference[$i]['t']==$v['t']){
29209 $Present=1;
29210 if (!in_array($v['op'],$this->Reference[$i]['p'])) {
29211 $this->Reference[$i]['p'][] = $v['op'];
29212 }
29213 }
29214 }
29215 if ($Present==0) {
29216 $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
29217 }
29218 }
29219/*-- END INDEX --*/
29220
29221/*-- TOC --*/
29222
29223 // Adjust ToC
29224 foreach($this->col_toc AS $v) {
29225 $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
29226 $this->links[$v['link']][1] = $this->y0;
29227 }
29228/*-- END TOC --*/
29229
29230 // Adjust column length to be equal
29231 if ($this->colvAlign == 'J') {
29232 foreach($this->columnbuffer AS $key=>$s) {
29233 if (isset($s['rel_y'])) { // only process position sensitive data
29234 // Set ratio to expand y values or heights
29235 if (isset($this->ColDetails[$s['newcol']]['max_bottom']) && $this->ColDetails[$s['newcol']]['max_bottom'] && $this->ColDetails[$s['newcol']]['max_bottom']!=$this->y0) {
29236 $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['newcol']]['max_bottom'] - ($this->y0));
29237 }
29238 else { $ratio = 1; }
29239 if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
29240 $yadj = ($s['newy'] - $this->y0) * ($ratio - 1);
29241
29242 // Adjust LINKS
29243 if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
29244 $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
29245 $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK); // y value
29246 $this->PageLinks[$this->page][$ref][3] *= $ratio; // height
29247 unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
29248 }
29249 // Adjust FORM FIELDS
29250 if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
29251 $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
29252 $this->form->forms[$ref]['x'] += ($xadj);
29253 $this->form->forms[$ref]['y'] += ($yadj);
29254 unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
29255 }
29256/*-- ANNOTATIONS --*/
29257 if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
29258 $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
29259 $this->PageAnnots[$this->page][$ref]['y'] += ($yadj);
29260 unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
29261 }
29262/*-- END ANNOTATIONS --*/
29263 }
29264 }
29265 }
29266 foreach($this->internallink AS $key => $f) {
29267 if (is_array($f) && isset($f['col'])) {
29268 $last_col_bottom = 0;
29269 for ($nbc=0; $nbc<$this->NbCol; $nbc++) {
29270 if ($f['rel_y'] >= $cbr[$nbc]) { $last_col_bottom = $cbr[$nbc]; }
29271 }
29272 $yadj = ($f['rel_y'] - $f['Y']) - $last_col_bottom + $this->y0;
29273 $f['Y'] += $yadj;
29274 unset($f['col']);
29275 unset($f['rel_y']);
29276 $this->internallink[$key] = $f;
29277 }
29278 }
29279
29280 $last_col = -1;
29281 $trans_on = false;
29282 foreach($this->columnbuffer AS $key=>$s) {
29283 if (isset($s['rel_y'])) { // only process position sensitive data
29284 // Set ratio to expand y values or heights
29285 if (isset($this->ColDetails[$s['newcol']]['max_bottom']) && $this->ColDetails[$s['newcol']]['max_bottom'] && $this->ColDetails[$s['newcol']]['max_bottom']!=$this->y0) {
29286 $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['newcol']]['max_bottom'] - ($this->y0));
29287 }
29288 else { $ratio = 1; }
29289 if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
29290 //Start Transformation
29291 $this->pages[$this->page] .= $this->StartTransform(true)."\n";
29292 $this->pages[$this->page] .= $this->transformScale(100, $ratio*100, $x='', $this->y0, true)."\n";
29293 $trans_on = true;
29294 }
29295 }
29296 // Now output the adjusted values
29297 $this->pages[$this->page] .= $s['s']."\n";
29298 if (isset($s['rel_y']) && ($ratio > 1) && ($ratio <= $this->max_colH_correction)) { // only process position sensitive data
29299 //Stop Transformation
29300 $this->pages[$this->page] .= $this->StopTransform(true)."\n";
29301 $trans_on = false;
29302 }
29303 }
29304 if ($trans_on) { $this->pages[$this->page] .= $this->StopTransform(true)."\n"; }
29305 }
29306 else { // if NOT $this->colvAlign == 'J'
29307 // Now output the adjusted values
29308 foreach($this->columnbuffer AS $s) {
29309 $this->pages[$this->page] .= $s['s']."\n";
29310 }
29311 }
29312 if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; }
29313 }
29314
29315 // Columns not ended but new page -> align columns (can leave the columns alone - just tidy up the height)
29316 else if ($this->colvAlign == 'J' && $this->ColumnAdjust && !$this->keepColumns) {
29317 // calculate the lowest bottom margin
29318 $lowest_bottom_y = 0;
29319 foreach($this->columnbuffer AS $key=>$s) {
29320 // Only process output data
29321 $t = $s['s'];
29322 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)) ||
29323 (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) ||
29324 (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/',$t)) ||
29325 (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) ||
29326 (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) ) {
29327
29328 $clb = $s['y'] + $s['h'];
29329 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; }
29330 if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; }
29331 $this->columnbuffer[$key]['rel_y'] = $s['y']; // Marks position sensitive data to process later
29332 if ($t == 'ACROFORM') { $this->columnbuffer[$key]['s'] = ''; }
29333 }
29334 }
29335 // Adjust column length equal
29336 foreach($this->columnbuffer AS $key=>$s) {
29337 // Set ratio to expand y values or heights
29338 if (isset($this->ColDetails[$s['col']]['max_bottom']) && $this->ColDetails[$s['col']]['max_bottom']) {
29339 $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['col']]['max_bottom'] - ($this->y0));
29340 }
29341 else { $ratio = 1; }
29342 if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
29343 $yadj = ($s['y'] - $this->y0) * ($ratio - 1);
29344
29345 // Adjust LINKS
29346 if (isset($s['rel_y'])) { // only process position sensitive data
29347 // otherwise triggers for all entries in column buffer (.e.g. formatting) and makes below adjustments more than once
29348 if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
29349 $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
29350 $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK); // y value
29351 $this->PageLinks[$this->page][$ref][3] *= $ratio; // height
29352 unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
29353 }
29354 // Adjust FORM FIELDS
29355 if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
29356 $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
29357 $this->form->forms[$ref]['x'] += ($xadj);
29358 $this->form->forms[$ref]['y'] += ($yadj);
29359 unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
29360 }
29361/*-- ANNOTATIONS --*/
29362 if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
29363 $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
29364 $this->PageAnnots[$this->page][$ref]['y'] += ($yadj);
29365 unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
29366 }
29367/*-- END ANNOTATIONS --*/
29368 }
29369 }
29370 }
29371
29372/*-- BOOKMARKS --*/
29373
29374 // Adjust Bookmarks
29375 foreach($this->col_BMoutlines AS $v) {
29376 $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$this->y0,'p'=>$v['p']);
29377 }
29378/*-- END BOOKMARKS --*/
29379
29380/*-- INDEX --*/
29381
29382 // Adjust Reference (index)
29383 foreach($this->col_Reference AS $v) {
29384 $Present=0;
29385 //Search the reference (AND Ref/PageNo) in the array
29386 for ($i=0;$i<count($this->Reference);$i++){
29387 if ($this->Reference[$i]['t']==$v['t']){
29388 $Present=1;
29389 if (!in_array($v['op'],$this->Reference[$i]['p'])) {
29390 $this->Reference[$i]['p'][] = $v['op'];
29391 }
29392 }
29393 }
29394 if ($Present==0) {
29395 $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
29396 }
29397 }
29398/*-- END INDEX --*/
29399
29400/*-- TOC --*/
29401
29402 // Adjust ToC
29403 foreach($this->col_toc AS $v) {
29404 $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
29405 $this->links[$v['link']][1] = $this->y0;
29406 }
29407/*-- END TOC --*/
29408 $trans_on = false;
29409 foreach($this->columnbuffer AS $key=>$s) {
29410 if (isset($s['rel_y'])) { // only process position sensitive data
29411 // Set ratio to expand y values or heights
29412 if ($this->ColDetails[$s['col']]['max_bottom']) {
29413 $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['col']]['max_bottom'] - ($this->y0));
29414 }
29415 else { $ratio = 1; }
29416 if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
29417 //Start Transformation
29418 $this->pages[$this->page] .= $this->StartTransform(true)."\n";
29419 $this->pages[$this->page] .= $this->transformScale(100, $ratio*100, $x='', $this->y0, true)."\n";
29420 $trans_on = true;
29421 }
29422 }
29423 // Now output the adjusted values
29424 $this->pages[$this->page] .= $s['s']."\n";
29425 if (isset($s['rel_y']) && ($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
29426 //Stop Transformation
29427 $this->pages[$this->page] .= $this->StopTransform(true)."\n";
29428 $trans_on = false; // mPDF 5.1.001
29429 }
29430 }
29431 if ($trans_on) { $this->pages[$this->page] .= $this->StopTransform(true)."\n"; }
29432
29433 if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; }
29434 }
29435
29436
29437 // Just reproduce the page as it was
29438 else {
29439 // If page has not ended but height adjustment was disabled by custom column-break - adjust y
29440 $lowest_bottom_y = 0;
29441 if (!$this->ColActive && (!$this->ColumnAdjust || $this->keepColumns)) {
29442 // calculate the lowest bottom margin
29443 foreach($this->columnbuffer AS $key=>$s) {
29444 // Only process output data
29445 $t = $s['s'];
29446 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)) ||
29447 (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) ||
29448 (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/',$t)) ||
29449 (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) ||
29450 (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) ) {
29451
29452 $clb = $s['y'] + $s['h'];
29453 if ($clb > $this->ColDetails[$s['col']]['max_bottom']) { $this->ColDetails[$s['col']]['max_bottom'] = $clb; }
29454 if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; }
29455 }
29456 }
29457 }
29458 foreach($this->columnbuffer AS $key=>$s) {
29459 if ($s['s'] != 'ACROFORM')
29460 $this->pages[$this->page] .= $s['s']."\n";
29461 }
29462 if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; }
29463/*-- INDEX --*/
29464
29465 // Output Reference (index)
29466 foreach($this->col_Reference AS $v) {
29467 $Present=0;
29468 for ($i=0;$i<count($this->Reference);$i++){
29469 if ($this->Reference[$i]['t']==$v['t']){
29470 $Present=1;
29471 if (!in_array($v['op'],$this->Reference[$i]['p'])) {
29472 $this->Reference[$i]['p'][] = $v['op'];
29473 }
29474 }
29475 }
29476 if ($Present==0) {
29477 $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
29478 }
29479 }
29480/*-- END INDEX --*/
29481/*-- BOOKMARKS --*/
29482 // Output Bookmarks
29483 foreach($this->col_BMoutlines AS $v) {
29484 $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
29485 }
29486/*-- END BOOKMARKS --*/
29487/*-- TOC --*/
29488 // Output ToC
29489 foreach($this->col_toc AS $v) {
29490 $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
29491 }
29492/*-- END TOC --*/
29493 }
29494 foreach($this->internallink AS $key => $f) {
29495 if (isset($this->internallink[$key]['col'])) unset($this->internallink[$key]['col']);
29496 if (isset($this->internallink[$key]['rel_y'])) unset($this->internallink[$key]['rel_y']);
29497 }
29498
29499 $this->columnbuffer = array();
29500 $this->ColDetails = array();
29501 $this->columnLinks = array();
29502 $this->columnAnnots = array();
29503 $this->columnForms = array();
29504
29505 $this->col_Reference = array();
29506 $this->col_BMoutlines = array();
29507 $this->col_toc = array();
29508 $this->breakpoints = array();
29509}
29510
29511// mPDF 5.7+
29512function columnAdjustPregReplace($type, $xadj, $yadj, $pattern, $subject) {
29513 preg_match($pattern, $subject, $matches);
29514 if (!isset($matches[3])) { $matches[3] = 0; }
29515 if (!isset($matches[4])) { $matches[4] = 0; }
29516 if (!isset($matches[5])) { $matches[5] = 0; }
29517 if (!isset($matches[6])) { $matches[6] = 0; }
29518 return str_replace($matches[0], $this->columnAdjustAdd($type, _MPDFK, $xadj, $yadj, $matches[1], $matches[2], $matches[3], $matches[4], $matches[5], $matches[6]), $subject);
29519}
29520
29521/*-- END COLUMNS --*/
29522
29523
29524//==================================================================
29525/*-- TABLES --*/
29526function printcellbuffer() {
29527 if (count($this->cellBorderBuffer )) {
29528 sort($this->cellBorderBuffer);
29529 foreach($this->cellBorderBuffer AS $cbb) {
29530 $cba = unpack("A16dom/nbord/A1side/ns/dbw/a6ca/A10style/dx/dy/dw/dh/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd/dover/", $cbb);
29531 $side = $cba['side'];
29532 $details = array();
29533 $details[$side]['dom'] = (float) $cba['dom'];
29534 $details[$side]['s'] = $cba['s'];
29535 $details[$side]['w'] = $cba['bw'];
29536 $details[$side]['c'] = $cba['ca'];
29537 $details[$side]['style'] = trim($cba['style']);
29538 $details['mbw']['BL'] = $cba['mbl'];
29539 $details['mbw']['BR'] = $cba['mbr'];
29540 $details['mbw']['RT'] = $cba['mrt'];
29541 $details['mbw']['RB'] = $cba['mrb'];
29542 $details['mbw']['TL'] = $cba['mtl'];
29543 $details['mbw']['TR'] = $cba['mtr'];
29544 $details['mbw']['LT'] = $cba['mlt'];
29545 $details['mbw']['LB'] = $cba['mlb'];
29546 $details['cellposdom'] = $cba['cpd'];
29547 $details['p'] = $side;
29548 if ($cba['over']==1) { $details[$side]['overlay'] = true; }
29549 else { $details[$side]['overlay'] = false; }
29550 $this->_tableRect($cba['x'],$cba['y'],$cba['w'],$cba['h'],$cba['bord'],$details, false, false);
29551
29552 }
29553 $this->cellBorderBuffer = array();
29554 }
29555}
29556//==================================================================
29557function printtablebuffer() {
29558
29559 if (!$this->table_rotate) {
29560 $this->pages[$this->page] .= $this->tablebuffer;
29561 foreach($this->tbrot_Links AS $p => $l) {
29562 foreach($l AS $v) {
29563 $this->PageLinks[$p][] = $v;
29564 }
29565 }
29566 $this->tbrot_Links = array();
29567/*-- ANNOTATIONS --*/
29568 foreach($this->tbrot_Annots AS $p => $l) {
29569 foreach($l AS $v) {
29570 $this->PageAnnots[$p][] = $v;
29571 }
29572 }
29573 $this->tbrot_Annots = array();
29574/*-- END ANNOTATIONS --*/
29575
29576/*-- INDEX --*/
29577 // Output Reference (index)
29578 foreach($this->tbrot_Reference AS $v) {
29579 $Present=0;
29580 for ($i=0;$i<count($this->Reference);$i++){
29581 if ($this->Reference[$i]['t']==$v['t']){
29582 $Present=1;
29583 if (!in_array($v['op'],$this->Reference[$i]['p'])) {
29584 $this->Reference[$i]['p'][] = $v['op'];
29585 }
29586 }
29587 }
29588 if ($Present==0) {
29589 $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
29590 }
29591 }
29592 $this->tbrot_Reference = array();
29593/*-- END INDEX --*/
29594
29595/*-- BOOKMARKS --*/
29596 // Output Bookmarks
29597 foreach($this->tbrot_BMoutlines AS $v) {
29598 $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
29599 }
29600 $this->tbrot_BMoutlines = array();
29601/*-- END BOOKMARKS --*/
29602
29603/*-- TOC --*/
29604 // Output ToC
29605 foreach($this->tbrot_toc AS $v) {
29606 $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
29607 }
29608 $this->tbrot_toc = array();
29609/*-- END TOC --*/
29610
29611 return;
29612 }
29613 // else if rotated
29614 $lm = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left'];
29615 $pw = $this->blk[$this->blklvl]['inner_width'];
29616 //Start Transformation
29617 $this->pages[$this->page] .= $this->StartTransform(true)."\n";
29618
29619 if ($this->table_rotate > 1) { // clockwise
29620 if ($this->tbrot_align == 'L') {
29621 $xadj = $this->tbrot_h ; // align L (as is)
29622 }
29623 else if ($this->tbrot_align == 'R') {
29624 $xadj = $lm-$this->tbrot_x0+($pw) ; // align R
29625 }
29626 else {
29627 $xadj = $lm-$this->tbrot_x0+(($pw + $this->tbrot_h)/2) ; // align C
29628 }
29629 $yadj = 0;
29630 }
29631 else { // anti-clockwise
29632 if ($this->tbrot_align == 'L') {
29633 $xadj = 0 ; // align L (as is)
29634 }
29635 else if ($this->tbrot_align == 'R') {
29636 $xadj = $lm-$this->tbrot_x0+($pw - $this->tbrot_h) ; // align R
29637 }
29638 else {
29639 $xadj = $lm-$this->tbrot_x0+(($pw - $this->tbrot_h)/2) ; // align C
29640 }
29641 $yadj = $this->tbrot_w;
29642 }
29643
29644
29645 $this->pages[$this->page] .= $this->transformTranslate($xadj, $yadj , true)."\n";
29646 $this->pages[$this->page] .= $this->transformRotate($this->table_rotate, $this->tbrot_x0 , $this->tbrot_y0 , true)."\n";
29647
29648 // Now output the adjusted values
29649 $this->pages[$this->page] .= $this->tablebuffer;
29650
29651
29652 foreach($this->tbrot_Links AS $p => $l) {
29653 foreach($l AS $v) {
29654 $w = $v[2]/_MPDFK;
29655 $h = $v[3]/_MPDFK;
29656 $ax = ($v[0]/_MPDFK) - $this->tbrot_x0;
29657 $ay = (($this->hPt-$v[1])/_MPDFK) - $this->tbrot_y0;
29658 if ($this->table_rotate > 1) { // clockwise
29659 $bx = $this->tbrot_x0+$xadj-$ay-$h;
29660 $by = $this->tbrot_y0+$yadj+$ax;
29661 }
29662 else {
29663 $bx = $this->tbrot_x0+$xadj+$ay;
29664 $by = $this->tbrot_y0+$yadj-$ax-$w;
29665 }
29666 $v[0] = $bx*_MPDFK;
29667 $v[1] = ($this->h-$by)*_MPDFK;
29668 $v[2] = $h*_MPDFK; // swap width and height
29669 $v[3] = $w*_MPDFK;
29670 $this->PageLinks[$p][] = $v;
29671 }
29672 }
29673 $this->tbrot_Links = array();
29674 foreach($this->internallink AS $key => $f) {
29675 if (is_array($f) && isset($f['tbrot'])) {
29676 $f['Y'] = $this->tbrot_y0;
29677 $f['PAGE'] = $this->page;
29678 unset($f['tbrot']);
29679 $this->internallink[$key] = $f;
29680 }
29681 }
29682/*-- ANNOTATIONS --*/
29683 foreach($this->tbrot_Annots AS $p => $l) {
29684 foreach($l AS $v) {
29685 $ax = abs($v['x']) - $this->tbrot_x0; // abs because -ve values are internally set and held for reference if annotMargin set
29686 $ay = $v['y'] - $this->tbrot_y0;
29687 if ($this->table_rotate > 1) { // clockwise
29688 $bx = $this->tbrot_x0+$xadj-$ay;
29689 $by = $this->tbrot_y0+$yadj+$ax;
29690 }
29691 else {
29692 $bx = $this->tbrot_x0+$xadj+$ay;
29693 $by = $this->tbrot_y0+$yadj-$ax;
29694 }
29695 if ($v['x'] < 0) {
29696 $v['x'] = -$bx;
29697 }
29698 else {
29699 $v['x'] = $bx;
29700 }
29701 $v['y'] = ($by);
29702 $this->PageAnnots[$p][] = $v;
29703 }
29704 }
29705 $this->tbrot_Annots = array();
29706/*-- END ANNOTATIONS --*/
29707
29708
29709/*-- BOOKMARKS --*/
29710
29711 // Adjust Bookmarks
29712 foreach($this->tbrot_BMoutlines AS $v) {
29713 $v['y'] = $this->tbrot_y0;
29714 $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$this->page);
29715 }
29716/*-- END BOOKMARKS --*/
29717
29718/*-- INDEX --*/
29719
29720 // Adjust Reference (index)
29721 foreach($this->tbrot_Reference AS $v) {
29722 $Present=0;
29723 //Search the reference (AND Ref/PageNo) in the array
29724 for ($i=0;$i<count($this->Reference);$i++){
29725 if ($this->Reference[$i]['t']==$v['t']){
29726 $Present=1;
29727 if (!in_array($this->page,$this->Reference[$i]['p'])) {
29728 $this->Reference[$i]['p'][] = $this->page;
29729 }
29730 }
29731 }
29732 if ($Present==0) {
29733 $this->Reference[]=array('t'=>$v['t'],'p'=>array($this->page));
29734 }
29735 }
29736/*-- END INDEX --*/
29737
29738/*-- TOC --*/
29739
29740 // Adjust ToC - uses document page number
29741 foreach($this->tbrot_toc AS $v) {
29742 $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$this->page,'link'=>$v['link'],'toc_id'=>$v['toc_id']);
29743 $this->links[$v['link']][1] = $this->tbrot_y0;
29744 }
29745/*-- END TOC --*/
29746
29747
29748
29749 $this->tbrot_Reference = array();
29750 $this->tbrot_BMoutlines = array();
29751 $this->tbrot_toc = array();
29752
29753 //Stop Transformation
29754 $this->pages[$this->page] .= $this->StopTransform(true)."\n";
29755
29756
29757 $this->y = $this->tbrot_y0 + $this->tbrot_w;
29758 $this->x = $this->lMargin;
29759
29760 $this->tablebuffer = '';
29761}
29762
29763//==================================================================
29764// Keep-with-table This buffers contents of h1-6 to keep on page with table
29765function printkwtbuffer() {
29766 if (!$this->kwt_moved) {
29767 foreach($this->kwt_buffer AS $s) { $this->pages[$this->page] .= $s['s']."\n"; }
29768 foreach($this->kwt_Links AS $p => $l) {
29769 foreach($l AS $v) {
29770 $this->PageLinks[$p][] = $v;
29771 }
29772 }
29773 $this->kwt_Links = array();
29774/*-- ANNOTATIONS --*/
29775 foreach($this->kwt_Annots AS $p => $l) {
29776 foreach($l AS $v) {
29777 $this->PageAnnots[$p][] = $v;
29778 }
29779 }
29780 $this->kwt_Annots = array();
29781/*-- END ANNOTATIONS --*/
29782
29783/*-- INDEX --*/
29784 // Output Reference (index)
29785 foreach($this->kwt_Reference AS $v) {
29786 $Present=0;
29787 for ($i=0;$i<count($this->Reference);$i++){
29788 if ($this->Reference[$i]['t']==$v['t']){
29789 $Present=1;
29790 if (!in_array($v['op'],$this->Reference[$i]['p'])) {
29791 $this->Reference[$i]['p'][] = $v['op'];
29792 }
29793 }
29794 }
29795 if ($Present==0) {
29796 $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
29797 }
29798 }
29799 $this->kwt_Reference = array();
29800/*-- END INDEX --*/
29801
29802/*-- BOOKMARKS --*/
29803 // Output Bookmarks
29804 foreach($this->kwt_BMoutlines AS $v) {
29805 $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
29806 }
29807 $this->kwt_BMoutlines = array();
29808/*-- END BOOKMARKS --*/
29809
29810/*-- TOC --*/
29811 // Output ToC
29812 foreach($this->kwt_toc AS $v) {
29813 $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
29814 }
29815 $this->kwt_toc = array();
29816/*-- END TOC --*/
29817
29818 return;
29819 }
29820
29821 //Start Transformation
29822 $this->pages[$this->page] .= $this->StartTransform(true)."\n";
29823 $xadj = $this->lMargin - $this->kwt_x0 ;
29824 //$yadj = $this->y - $this->kwt_y0 ;
29825 $yadj = $this->tMargin - $this->kwt_y0 ;
29826
29827 $this->pages[$this->page] .= $this->transformTranslate($xadj, $yadj , true)."\n";
29828
29829 // Now output the adjusted values
29830 foreach($this->kwt_buffer AS $s) { $this->pages[$this->page] .= $s['s']."\n"; }
29831
29832 // Adjust hyperLinks
29833 foreach($this->kwt_Links AS $p => $l) {
29834 foreach($l AS $v) {
29835 $bx = $this->kwt_x0+$xadj;
29836 $by = $this->kwt_y0+$yadj;
29837 $v[0] = $bx*_MPDFK;
29838 $v[1] = ($this->h-$by)*_MPDFK;
29839 $this->PageLinks[$p][] = $v;
29840 }
29841 }
29842 foreach($this->internallink AS $key => $f) {
29843 if (is_array($f) && isset($f['kwt'])) {
29844 $f['Y'] += $yadj;
29845 $f['PAGE'] = $this->page;
29846 unset($f['kwt']);
29847 $this->internallink[$key] = $f;
29848 }
29849 }
29850/*-- ANNOTATIONS --*/
29851 foreach($this->kwt_Annots AS $p => $l) {
29852 foreach($l AS $v) {
29853 $bx = $this->kwt_x0+$xadj;
29854 $by = $this->kwt_y0+$yadj;
29855 if ($v['x'] < 0) {
29856 $v['x'] = -$bx;
29857 }
29858 else {
29859 $v['x'] = $bx;
29860 }
29861 $v['y'] = $by;
29862 $this->PageAnnots[$p][] = $v;
29863 }
29864 }
29865/*-- END ANNOTATIONS --*/
29866
29867/*-- BOOKMARKS --*/
29868
29869 // Adjust Bookmarks
29870 foreach($this->kwt_BMoutlines AS $v) {
29871 if ($v['y'] != 0) { $v['y'] += $yadj; }
29872 $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$this->page);
29873 }
29874/*-- END BOOKMARKS --*/
29875
29876/*-- INDEX --*/
29877
29878 // Adjust Reference (index)
29879 foreach($this->kwt_Reference AS $v) {
29880 $Present=0;
29881 //Search the reference (AND Ref/PageNo) in the array
29882 for ($i=0;$i<count($this->Reference);$i++){
29883 if ($this->Reference[$i]['t']==$v['t']){
29884 $Present=1;
29885 if (!in_array($this->page,$this->Reference[$i]['p'])) {
29886 $this->Reference[$i]['p'][] = $this->page;
29887 }
29888 }
29889 }
29890 if ($Present==0) {
29891 $this->Reference[]=array('t'=>$v['t'],'p'=>array($this->page));
29892 }
29893 }
29894/*-- END INDEX --*/
29895
29896/*-- TOC --*/
29897
29898 // Adjust ToC
29899 foreach($this->kwt_toc AS $v) {
29900 $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$this->page,'link'=>$v['link'],'toc_id'=>$v['toc_id']);
29901 $this->links[$v['link']][0] = $this->page;
29902 $this->links[$v['link']][1] += $yadj;
29903 }
29904/*-- END TOC --*/
29905
29906
29907 $this->kwt_Links = array();
29908 $this->kwt_Annots = array();
29909
29910 $this->kwt_Reference = array();
29911 $this->kwt_BMoutlines = array();
29912 $this->kwt_toc = array();
29913 //Stop Transformation
29914 $this->pages[$this->page] .= $this->StopTransform(true)."\n";
29915
29916 $this->kwt_buffer = array();
29917
29918 $this->y += $this->kwt_height;
29919}
29920
29921/*-- END TABLES --*/
29922
29923
29924//==================================================================
29925
29926function printfloatbuffer() {
29927 if (count($this->floatbuffer)) {
29928 $this->objectbuffer = $this->floatbuffer;
29929 $this->printobjectbuffer(false);
29930 $this->objectbuffer = array();
29931 $this->floatbuffer = array();
29932 $this->floatmargins = array();
29933 }
29934}
29935//==================================================================
29936
29937function printdivbuffer() {
29938 $p1 = $this->blk[$this->blklvl]['startpage'];
29939 $p2 = $this->page;
29940 $bottom[$p1] = $this->ktBlock[$p1]['bottom_margin'];
29941 $bottom[$p2] = $this->y; // $this->ktBlock[$p2]['bottom_margin'];
29942 $top[$p1] = $this->kt_y00;
29943
29944 $top2 = $this->h;
29945 foreach($this->divbuffer AS $key=>$s) {
29946 if ($s['page'] == $p2) {
29947 $top2 = MIN($s['y'], $top2);
29948 }
29949 }
29950 $top[$p2] = $top2;
29951 $height[$p1] = ($bottom[$p1] - $top[$p1]);
29952 $height[$p2] = ($bottom[$p2] - $top[$p2]);
29953 $xadj[$p1] = $this->MarginCorrection;
29954 $yadj[$p1] = -($top[$p1] - $top[$p2]);
29955 $xadj[$p2] = 0;
29956 $yadj[$p2] = $height[$p1];
29957
29958 // Output without any transformation
29959 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) {
29960 foreach($this->divbuffer AS $s) { $this->pages[$s['page']] .= $s['s']."\n"; }
29961 foreach($this->ktLinks AS $p => $l) {
29962 foreach($l AS $v) {
29963 $this->PageLinks[$p][] = $v;
29964 }
29965 }
29966 foreach($this->ktForms AS $key => $f) {
29967 $this->form->forms[$f['n']] = $f;
29968 }
29969/*-- ANNOTATIONS --*/
29970 foreach($this->ktAnnots AS $p => $l) {
29971 foreach($l AS $v) {
29972 $this->PageAnnots[$p][] = $v;
29973 }
29974 }
29975/*-- END ANNOTATIONS --*/
29976/*-- INDEX --*/
29977 // Adjust Reference (index)
29978 foreach($this->ktReference AS $v) {
29979 $Present=0;
29980 //Search the reference (AND Ref/PageNo) in the array
29981 for ($i=0;$i<count($this->Reference);$i++){
29982 if ($this->Reference[$i]['t']==$v['t']){
29983 $Present=1;
29984 if (!in_array($p2,$this->Reference[$i]['p'])) {
29985 $this->Reference[$i]['p'][] = $p2;
29986 }
29987 }
29988 }
29989 //If not found, add it
29990 if ($Present==0) {
29991 $this->Reference[]=array('t'=>$v['t'],'p'=>array($p2));
29992 }
29993 }
29994/*-- END INDEX --*/
29995
29996/*-- BOOKMARKS --*/
29997 // Adjust Bookmarks
29998 foreach($this->ktBMoutlines AS $v) {
29999 $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
30000 }
30001/*-- END BOOKMARKS --*/
30002
30003/*-- TOC --*/
30004 // Adjust ToC
30005 foreach($this->_kttoc AS $v) {
30006 $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
30007 }
30008/*-- END TOC --*/
30009
30010 $this->divbuffer = array();
30011 $this->ktLinks = array();
30012 $this->ktAnnots = array();
30013 $this->ktForms = array();
30014 $this->ktBlock = array();
30015 $this->ktReference = array();
30016 $this->ktBMoutlines = array();
30017 $this->_kttoc = array();
30018 $this->keep_block_together = 0;
30019 return;
30020 }
30021 else {
30022 // Output with transformation
30023 // mPDF 5.6.17
30024 $np = '';
30025 $lastpage = -1;
30026 foreach($this->divbuffer AS $key=>$s) {
30027 // callback function
30028 $t = $s['s'];
30029 $p = $s['page'];
30030 if ($p != $lastpage) {
30031 $q = '';
30032 if ($lastpage != -1) { $q = ' Q'."\n"; }
30033 $t = $q . $this->StartTransform(true)."\n" . $this->transformTranslate($xadj[$p], $yadj[$p] , true)."\n" . $t;
30034 $lastpage = $p;
30035 }
30036 $np .= $t."\n";
30037 }
30038 if ($lastpage != -1) { $np .= ' Q'."\n"; }
30039
30040 $this->pages[$this->page] .= $np;
30041
30042 // Adjust hyperLinks
30043 foreach($this->ktLinks AS $p => $l) {
30044 foreach($l AS $v) {
30045 $v[0] += ($xadj[$p]*_MPDFK);
30046 $v[1] -= ($yadj[$p]*_MPDFK);
30047 $this->PageLinks[$p2][] = $v;
30048 }
30049 }
30050 foreach($this->ktForms AS $key => $f) {
30051 $p = $f['page'];
30052 $f['x'] += ($xadj[$p]);
30053 $f['y'] += ($yadj[$p]);
30054 $f['page'] = $p2;
30055 $this->form->forms[$f['n']] = $f;
30056 }
30057 foreach($this->internallink AS $key => $f) {
30058 if (is_array($f) && isset($f['kt'])) {
30059 $f['Y'] += ($yadj[$f['PAGE']]);
30060 $f['PAGE'] = $p2;
30061 unset($f['kt']);
30062 $this->internallink[$key] = $f;
30063 }
30064 }
30065/*-- ANNOTATIONS --*/
30066 foreach($this->ktAnnots AS $p => $l) {
30067 foreach($l AS $v) {
30068 if ($v['x']>0) { $v['x'] += $xadj[$p]; }
30069 else if ($v['x']<0) { $v['x'] -= $xadj[$p]; }
30070 $v['y'] += $yadj[$p];
30071 $this->PageAnnots[$p2][] = $v;
30072 }
30073 }
30074/*-- END ANNOTATIONS --*/
30075
30076/*-- BOOKMARKS --*/
30077 // Adjust Bookmarks
30078 foreach($this->ktBMoutlines AS $v) {
30079 if ($v['y'] != 0) { $v['y'] += ($yadj[$v['p']]); }
30080 $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$p2);
30081 }
30082/*-- END BOOKMARKS --*/
30083
30084/*-- INDEX --*/
30085 // Adjust Reference (index)
30086 foreach($this->ktReference AS $v) {
30087 $Present=0;
30088 //Search the reference (AND Ref/PageNo) in the array
30089 for ($i=0;$i<count($this->Reference);$i++){
30090 if ($this->Reference[$i]['t']==$v['t']){
30091 $Present=1;
30092 if (!in_array($p2,$this->Reference[$i]['p'])) {
30093 $this->Reference[$i]['p'][] = $p2;
30094 }
30095 }
30096 }
30097 //If not found, add it
30098 if ($Present==0) {
30099 $this->Reference[]=array('t'=>$v['t'],'p'=>array($p2));
30100 }
30101 }
30102/*-- END INDEX --*/
30103
30104/*-- TOC --*/
30105 // Adjust ToC
30106 foreach($this->_kttoc AS $v) {
30107 $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$p2,'link'=>$v['link'],'toc_id'=>$v['toc_id']);
30108 $this->links[$v['link']][0] = $p2;
30109 $this->links[$v['link']][1] += $yadj[$v['p']];
30110 }
30111/*-- END TOC --*/
30112
30113 $this->y = $top[$p2] + $height[$p1] + $height[$p2];
30114 $this->x = $this->lMargin;
30115
30116 $this->divbuffer = array();
30117 $this->ktLinks = array();
30118 $this->ktAnnots = array();
30119 $this->ktForms = array();
30120 $this->ktBlock = array();
30121 $this->ktReference = array();
30122 $this->ktBMoutlines = array();
30123 $this->_kttoc = array();
30124 $this->keep_block_together = 0;
30125 }
30126}
30127
30128
30129//==================================================================
30130// Added ELLIPSES and CIRCLES
30131function Circle($x,$y,$r,$style='S') {
30132 $this->Ellipse($x,$y,$r,$r,$style);
30133}
30134
30135function Ellipse($x,$y,$rx,$ry,$style='S') {
30136 if($style=='F') { $op='f'; }
30137 elseif($style=='FD' or $style=='DF') { $op='B'; }
30138 else { $op='S'; }
30139 $lx=4/3*(M_SQRT2-1)*$rx;
30140 $ly=4/3*(M_SQRT2-1)*$ry;
30141 $h=$this->h;
30142 $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));
30143 $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));
30144 $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));
30145 $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));
30146}
30147
30148/*-- DIRECTW --*/
30149// Added adaptation of shaded_box = AUTOSIZE-TEXT
30150function AutosizeText($text,$w,$font,$style,$szfont=72) {
30151 $text = $this->purify_utf8_text($text);
30152 if ($this->text_input_as_HTML) {
30153 $text = $this->all_entities_to_utf8($text);
30154 }
30155 if ($this->usingCoreFont) { $text = mb_convert_encoding($text,$this->mb_enc,'UTF-8'); }
30156 $text = ' '.$text.' ';
30157 $width = $this->ConvertSize($w);
30158 $loop = 0;
30159 while ( $loop == 0 ) {
30160 $this->SetFont($font,$style,$szfont);
30161 $sz = $this->GetStringWidth( $text );
30162 if ( $sz > $w ) { $szfont --; }
30163 else { $loop ++; }
30164 }
30165 $this->SetFont($font,$style,$szfont);
30166 $this->Cell($w, 0, $text, 0, 0, "C");
30167}
30168/*-- END DIRECTW --*/
30169
30170
30171
30172
30173
30174// ====================================================
30175// ====================================================
30176/*-- RTL --*/
30177function reverse_letters($str) {
30178 $str = strtr($str, '{}[]()', '}{][)(');
30179 return $this->mb_strrev($str, $this->mb_enc);
30180}
30181
30182// mPDF 5.7+
30183function reverse_letters_preg_callback($matches) {
30184 return $this->reverse_letters($matches[1]);
30185}
30186
30187function magic_reverse_dir(&$chunk, $join=true, $dir) {
30188 if ($this->usingCoreFont) { return 0; }
30189 if ($this->biDirectional) {
30190 // mPDF 5.4.05 Include PUA for non-indexed Arabic glyphs
30191 $pregRTLchars = $this->pregRTLchars;
30192 if ($this->CurrentFont['unAGlyphs']) { $pregRTLchars .= "\x{F500}-\x{F7FF}"; }
30193
30194 // Change Arabic + Persian. to Presentation Forms
30195 if ($join) {
30196 $chunk = preg_replace_callback("/([".$pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $chunk ); // mPDF 5.7+
30197 }
30198 $contains_rtl = false;
30199 $all_rtl = true;
30200 $initSpace = false;
30201 $endSpace = false;
30202 $nonDirchars = "\x{A0}\"\'\(\)\{\}\[\].,:\\/-="; // mPDF 5.6.32
30203 // mPDF 5.6.43
30204 $bdo=array();
30205 preg_match_all('/([\x{202A}\x{202B}])(.*?)([\x{202C}])/u',$chunk,$m);
30206 if (count($m[0])) {
30207 for($i=0;$i<count($m[0]);$i++) {
30208 if ($m[1][$i]=="\xe2\x80\xab") { // Right-to-Left Embedding [RLE] U+202B &#8235;
30209 $mark = code2utf(0xf800+$i);
30210 $bdo[$i] = $this->reverse_letters($m[2][$i]);
30211 }
30212 else if ($m[1][$i]=="\xe2\x80\xaa") { // Left-to-Right Embedding [LRE] U+202A &#8234;
30213 $mark = code2utf(0xf880+$i);
30214 $bdo[$i] = $m[2][$i];
30215 }
30216 $chunk = preg_replace('/'.preg_quote($m[0][$i],'/').'/u',$mark,$chunk);
30217 }
30218 $pregRTLchars .= "\x{F800}-\x{F87F}";
30219 }
30220 if (preg_match("/[".$pregRTLchars."]/u",$chunk)) { // Chunk contains RTL characters
30221 if (preg_match("/^[ ]/",$chunk)) { $initSpace = true; $chunk = preg_replace("/^[ ]/",'',$chunk); }
30222 if (preg_match("/[ ]$/",$chunk)) { $endSpace = true; $chunk = preg_replace("/[ ]$/",'',$chunk); }
30223
30224 if (preg_match("/[^".$pregRTLchars.$nonDirchars." ]/u",$chunk)) { // Chunk also contains LTR characters
30225 $all_rtl = false;
30226 if ($dir == 'rtl') {
30227 $chunk = preg_replace("/([^".$pregRTLchars.$nonDirchars."][".$nonDirchars."]*) ([".$nonDirchars."]*[^".$pregRTLchars.$nonDirchars."])/u","\\1\x07\\2",$chunk);
30228 }
30229 $chunk = preg_replace("/([".$pregRTLchars."][".$nonDirchars."]*) ([".$nonDirchars."]*[".$pregRTLchars."])/u","\\1\x07\\2",$chunk);
30230 $bits = explode(' ',$chunk);
30231 foreach($bits AS $bitkey=>$bit) {
30232 $bit = preg_replace("/\x07/"," ",$bit);
30233 if (preg_match("/^[".$pregRTLchars.$nonDirchars." ]*$/u",$bit)) {
30234 $bits[$bitkey] = $this->reverse_letters($bit);
30235 }
30236 else if (preg_match("/[".$pregRTLchars."]/u",$bit)) {
30237 if ($dir == 'rtl') {
30238 $bit = preg_replace("/([^".$pregRTLchars.$nonDirchars." ])([".$nonDirchars."]*[".$pregRTLchars."])/u","\\1\x07\\2",$bit );
30239 $bit = preg_replace("/([".$pregRTLchars."][".$nonDirchars."]*)([^".$pregRTLchars.$nonDirchars." ])/u","\\1\x07\\2",$bit );
30240 }
30241 else {
30242 $bit = preg_replace("/([^".$pregRTLchars." ][".$nonDirchars."]*)([".$pregRTLchars." ])/u","\\1\x07\\2",$bit );
30243 $bit = preg_replace("/([".$pregRTLchars." ])([".$nonDirchars."]*[^".$pregRTLchars." ])/u","\\1\x07\\2",$bit );
30244 }
30245 $sbits = explode("\x07",$bit );
30246 foreach($sbits AS $sbitkey=>$sbit) {
30247 $sbit = preg_replace("/\x07/","",$sbit);
30248 if (preg_match("/^[".$pregRTLchars.$nonDirchars." ]*$/u",$sbit)) {
30249 $sbits[$sbitkey] = $this->reverse_letters($sbit);
30250 }
30251 else if (preg_match("/[".$pregRTLchars."]/u",$sbit) && $dir=='rtl') {
30252 $sbits[$sbitkey] = $this->reverse_letters($sbit);
30253 }
30254 else {
30255 // Reverse numerals only to RTL
30256 $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+
30257 $sbits[$sbitkey] = $sbit;
30258 }
30259 }
30260 if ($dir == 'rtl') { $sbits = array_reverse($sbits,false); }
30261 $bits[$bitkey] = implode('',$sbits);
30262 }
30263 else if (preg_match("/[".$pregRTLchars."]/u",$bit) && $dir=='rtl') {
30264 $bits[$bitkey] = $this->reverse_letters($bit);
30265 }
30266 else {
30267 // Reverse numerals only to RTL
30268 $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+
30269 $bits[$bitkey] = $bit;
30270 }
30271 }
30272 if ($dir == 'rtl') { $bits = array_reverse($bits,false); }
30273 $chunk = implode(' ',$bits);
30274 }
30275 else { $chunk = $this->reverse_letters($chunk); }
30276 $contains_rtl = true;
30277
30278 // Un-Reverse numerals back to ltr
30279 $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+
30280 if ($dir == 'rtl') {
30281 if ($endSpace) { $chunk = ' '.$chunk; }
30282 if ($initSpace) { $chunk .= ' '; }
30283 }
30284 else {
30285 if ($initSpace) { $chunk = ' '.$chunk; }
30286 if ($endSpace) { $chunk .= ' '; }
30287 }
30288 }
30289 else { $all_rtl = false; }
30290
30291 // mPDF 5.6.43
30292 if (count($bdo)) {
30293 for($i=0;$i<count($bdo);$i++) {
30294 $chunk = preg_replace('/[\x{'.dechex(intval(0xf800+$i)).'}\x{'.dechex(intval(0xf880+$i)).'}]/u',$bdo[$i],$chunk);
30295 }
30296 }
30297
30298 if ($all_rtl) { return 2; }
30299 else if ($contains_rtl) { return 1; }
30300 else { return 0; }
30301 }
30302 return 0;
30303}
30304/*-- END RTL --*/
30305
30306//
30307// ****************************
30308// ****************************
30309
30310
30311function SetSubstitutions() {
30312 $subsarray = array();
30313 @include(_MPDF_PATH.'includes/subs_win-1252.php');
30314 $this->substitute = array();
30315 foreach($subsarray AS $key => $val) {
30316 $this->substitute[code2utf($key)] = $val;
30317 }
30318}
30319
30320
30321function SubstituteChars($html) {
30322 // only substitute characters between tags
30323 if (count($this->substitute)) {
30324 $a=preg_split('/(<.*?>)/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
30325 $html = '';
30326 foreach($a as $i => $e) {
30327 if($i%2==0) {
30328 $e = strtr($e, $this->substitute);
30329 }
30330 $html .= $e;
30331 }
30332 }
30333 return $html;
30334}
30335
30336
30337function SubstituteCharsSIP(&$writehtml_a, &$writehtml_i, &$writehtml_e) {
30338 if (preg_match("/^(.*?)([\x{20000}-\x{2FFFF}]+)(.*)/u", $writehtml_e, $m)) {
30339 if (isset($this->CurrentFont['sipext']) && $this->CurrentFont['sipext']) {
30340 $font = $this->CurrentFont['sipext'];
30341 if (!in_array($font, $this->available_unifonts)) { return 0; }
30342 $writehtml_a[$writehtml_i] = $writehtml_e = $m[1];
30343 array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
30344 $this->subPos = $writehtml_i;
30345 return 4;
30346 }
30347 }
30348 return 0;
30349}
30350
30351// If core font is selected in document which is not onlyCoreFonts - substitute with non-core font
30352function SubstituteCharsNonCore(&$writehtml_a, &$writehtml_i, &$writehtml_e) {
30353 if (mb_convert_encoding(mb_convert_encoding($writehtml_e, $this->mb_enc, "UTF-8"), "UTF-8", $this->mb_enc) == $writehtml_e) {
30354 return 0;
30355 }
30356 $cw = &$this->CurrentFont['cw'];
30357 $unicode = $this->UTF8StringToArray($writehtml_e, false);
30358 $start = -1;
30359 $end = 0;
30360 $flag = 0;
30361 $ftype = '';
30362 $u = array();
30363 if (!$this->subArrMB) {
30364 include(_MPDF_PATH.'includes/subs_core.php');
30365 $this->subArrMB['a'] = $aarr;
30366 $this->subArrMB['s'] = $sarr;
30367 $this->subArrMB['z'] = $zarr;
30368 }
30369 foreach($unicode AS $c => $char) {
30370 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)) {
30371 if ($flag==0) { $start=$c; }
30372 $flag=1;
30373 $u[] = $char;
30374 }
30375 else if ($flag>0) { $end=$c-1; break; }
30376 }
30377 if ($flag>0 && !$end) { $end=count($unicode)-1; }
30378 if ($start==-1) { return 0; }
30379 // TRY IN BACKUP SUBS FONT
30380 if (!is_array($this->backupSubsFont)) { $this->backupSubsFont = array("$this->backupSubsFont"); }
30381 foreach($this->backupSubsFont AS $bsfctr=>$bsf) {
30382 if ($this->fonttrans[$bsf] == 'chelvetica' || $this->fonttrans[$bsf] == 'ctimes' || $this->fonttrans[$bsf] == 'ccourier') { continue; }
30383 $font = $bsf;
30384 unset($cw);
30385 $cw = '';
30386 if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
30387 else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
30388 else {
30389
30390 $prevFontFamily = $this->FontFamily;
30391 $prevFontStyle = $this->currentfontstyle;
30392 $prevFontSizePt = $this->FontSizePt;
30393 $this->SetFont($bsf, '', '', false);
30394 $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
30395 $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
30396 }
30397 if (!$cw) { continue; }
30398 $l = 0;
30399 foreach($u AS $char) {
30400 if ($char == 173 || $this->_charDefined($cw,$char) || ($char>1536 && $char<1791) || ($char>2304 && $char<3455 )) {
30401 $l++;
30402 }
30403 else {
30404 if ($l==0 && $bsfctr == (count($this->backupSubsFont)-1)) { // Not found even in last backup font
30405 $cont = mb_substr($writehtml_e, $start+1);
30406 $writehtml_e = mb_substr($writehtml_e, 0, $start+1, 'UTF-8');
30407 array_splice($writehtml_a, $writehtml_i+1, 0, array('', $cont));
30408 $this->subPos = $writehtml_i+1;
30409 return 2;
30410 }
30411 else { break; }
30412 }
30413 }
30414 if ($l > 0) {
30415 $patt = mb_substr($writehtml_e, $start, $l, 'UTF-8');
30416 if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
30417 $writehtml_e = $m[1];
30418 array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
30419 $this->subPos = $writehtml_i+3;
30420 return 4;
30421 }
30422 }
30423 }
30424
30425 unset($cw);
30426 return 0;
30427}
30428
30429
30430function SubstituteCharsMB(&$writehtml_a, &$writehtml_i, &$writehtml_e) {
30431 $cw = &$this->CurrentFont['cw'];
30432 $unicode = $this->UTF8StringToArray($writehtml_e, false);
30433 $start = -1;
30434 $end = 0;
30435 $flag = 0;
30436 $ftype = '';
30437 $u = array();
30438 foreach($unicode AS $c => $char) {
30439 if (($flag == 0 || $flag==2) && (!$this->_charDefined($cw,$char) || ($flag==2 && $char==32)) && $this->checkSIP && $char > 131071) { // Unicode Plane 2 (SIP)
30440 if (in_array($this->FontFamily ,$this->available_CJK_fonts)) { return 0; }
30441 if ($flag==0) { $start=$c; }
30442 $flag=2;
30443 $u[] = $char;
30444 }
30445 //else if (($flag == 0 || $flag==1) && $char != 173 && !$this->_charDefined($cw,$char) && ($char<1423 || ($char>3583 && $char < 11263))) {
30446 else if (($flag == 0 || $flag==1) && $char != 173 && (!$this->_charDefined($cw,$char) || ($flag==1 && $char==32)) && ($char<1536 || ($char>1791 && $char < 2304) || $char>3455)) {
30447 if ($flag==0) { $start=$c; }
30448 $flag=1;
30449 $u[] = $char;
30450 }
30451 else if ($flag>0) { $end=$c-1; break; }
30452 }
30453 if ($flag>0 && !$end) { $end=count($unicode)-1; }
30454 if ($start==-1) { return 0; }
30455 if ($flag == 2) { // SIP
30456 // Check if current CJK font has a ext-B related font
30457 if (isset($this->CurrentFont['sipext']) && $this->CurrentFont['sipext']) {
30458 $font = $this->CurrentFont['sipext'];
30459 unset($cw);
30460 $cw = '';
30461 if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
30462 else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
30463 else {
30464 $prevFontFamily = $this->FontFamily;
30465 $prevFontStyle = $this->currentfontstyle;
30466 $prevFontSizePt = $this->FontSizePt;
30467 $this->SetFont($font, '', '', false);
30468 $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
30469 $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
30470 }
30471 if (!$cw) { return 0; }
30472 $l = 0;
30473 foreach($u AS $char) {
30474 if ($this->_charDefined($cw,$char) || $char > 131071) {
30475 $l++;
30476 }
30477 else { break; }
30478 }
30479 if ($l > 0) {
30480 $patt = mb_substr($writehtml_e, $start, $l);
30481 if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
30482 $writehtml_e = $m[1];
30483 array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
30484 $this->subPos = $writehtml_i+3;
30485 return 4;
30486 }
30487 }
30488 }
30489 // Check Backup SIP font (defined in config_fonts.php)
30490 if (isset($this->backupSIPFont) && $this->backupSIPFont) {
30491 if ($this->currentfontfamily != $this->backupSIPFont) { $font = $this->backupSIPFont; }
30492 else { unset($cw); return 0; }
30493 unset($cw);
30494 $cw = '';
30495 if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
30496 else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
30497 else {
30498 $prevFontFamily = $this->FontFamily;
30499 $prevFontStyle = $this->currentfontstyle;
30500 $prevFontSizePt = $this->FontSizePt;
30501 $this->SetFont($this->backupSIPFont, '', '', false);
30502 $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
30503 $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
30504 }
30505 if (!$cw) { return 0; }
30506 $l = 0;
30507 foreach($u AS $char) {
30508 if ($this->_charDefined($cw,$char) || $char > 131071) {
30509 $l++;
30510 }
30511 else { break; }
30512 }
30513 if ($l > 0) {
30514 $patt = mb_substr($writehtml_e, $start, $l);
30515 if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
30516 $writehtml_e = $m[1];
30517 array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
30518 $this->subPos = $writehtml_i+3;
30519 return 4;
30520 }
30521 }
30522 }
30523 return 0;
30524 }
30525
30526
30527 // FIRST TRY CORE FONTS
30528 if (!$this->PDFA && !$this->PDFX) {
30529 $repl = array();
30530 if (!$this->subArrMB) {
30531 include(_MPDF_PATH.'includes/subs_core.php');
30532 $this->subArrMB['a'] = $aarr;
30533 $this->subArrMB['s'] = $sarr;
30534 $this->subArrMB['z'] = $zarr;
30535 }
30536 if (isset($this->subArrMB['a'][$u[0]])) {
30537 $font = 'tta'; $ftype = 'C';
30538 foreach($u AS $char) {
30539 if ($this->subArrMB['a'][$char]) { $repl[] = $this->subArrMB['a'][$char]; }
30540 else { break; }
30541 }
30542 }
30543 else if (isset($this->subArrMB['z'][$u[0]])) {
30544 $font = 'ttz'; $ftype = 'C';
30545 foreach($u AS $char) {
30546 if ($this->subArrMB['z'][$char]) { $repl[] = $this->subArrMB['z'][$char]; }
30547 else { break; }
30548 }
30549 }
30550 else if (isset($this->subArrMB['s'][$u[0]])) {
30551 $font = 'tts'; $ftype = 'C';
30552 foreach($u AS $char) {
30553 if ($this->subArrMB['s'][$char]) { $repl[] = $this->subArrMB['s'][$char]; }
30554 else { break; }
30555 }
30556 }
30557 if ($ftype=='C') {
30558 $patt = mb_substr($writehtml_e, $start, count($repl));
30559 if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
30560 $writehtml_e = $m[1];
30561 array_splice($writehtml_a, $writehtml_i+1, 0, array($font, implode('|', $repl), '/'.$font, $m[3])); // e.g. <tts>
30562 $this->subPos = $writehtml_i+3;
30563 return 4;
30564 }
30565 return 0;
30566 }
30567 }
30568
30569 // FIND IN DEFAULT FONT - removed mPDF 5.0
30570
30571 // LASTLY TRY IN BACKUP SUBS FONT
30572 if (!is_array($this->backupSubsFont)) { $this->backupSubsFont = array("$this->backupSubsFont"); }
30573 foreach($this->backupSubsFont AS $bsfctr=>$bsf) {
30574 if ($this->currentfontfamily != $bsf) { $font = $bsf; }
30575 else { continue; }
30576 unset($cw);
30577 $cw = '';
30578 if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
30579 else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
30580 else {
30581 $prevFontFamily = $this->FontFamily;
30582 $prevFontStyle = $this->currentfontstyle;
30583 $prevFontSizePt = $this->FontSizePt;
30584 $this->SetFont($bsf, '', '', false);
30585 $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
30586 $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
30587 }
30588 if (!$cw) { continue; }
30589 $l = 0;
30590 foreach($u AS $char) {
30591 if ($char == 173 || $this->_charDefined($cw,$char) || ($char>1536 && $char<1791) || ($char>2304 && $char<3455 )) { // Arabic and Indic
30592 $l++;
30593 }
30594 else {
30595 if ($l==0 && $bsfctr == (count($this->backupSubsFont)-1)) { // Not found even in last backup font
30596 $cont = mb_substr($writehtml_e, $start+1);
30597 $writehtml_e = mb_substr($writehtml_e, 0, $start+1);
30598 array_splice($writehtml_a, $writehtml_i+1, 0, array('', $cont));
30599 $this->subPos = $writehtml_i+1;
30600 return 2;
30601 }
30602 else { break; }
30603 }
30604 }
30605 if ($l > 0) {
30606 $patt = mb_substr($writehtml_e, $start, $l);
30607 if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
30608 $writehtml_e = $m[1];
30609 array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
30610 $this->subPos = $writehtml_i+3;
30611 return 4;
30612 }
30613 }
30614 }
30615
30616 unset($cw);
30617 return 0;
30618}
30619
30620
30621function setHiEntitySubstitutions() {
30622 $entarr = array (
30623 'nbsp' => '160', 'iexcl' => '161', 'cent' => '162', 'pound' => '163', 'curren' => '164', 'yen' => '165', 'brvbar' => '166', 'sect' => '167',
30624 'uml' => '168', 'copy' => '169', 'ordf' => '170', 'laquo' => '171', 'not' => '172', 'shy' => '173', 'reg' => '174', 'macr' => '175',
30625 'deg' => '176', 'plusmn' => '177', 'sup2' => '178', 'sup3' => '179', 'acute' => '180', 'micro' => '181', 'para' => '182', 'middot' => '183',
30626 'cedil' => '184', 'sup1' => '185', 'ordm' => '186', 'raquo' => '187', 'frac14' => '188', 'frac12' => '189', 'frac34' => '190',
30627 'iquest' => '191', 'Agrave' => '192', 'Aacute' => '193', 'Acirc' => '194', 'Atilde' => '195', 'Auml' => '196', 'Aring' => '197',
30628 'AElig' => '198', 'Ccedil' => '199', 'Egrave' => '200', 'Eacute' => '201', 'Ecirc' => '202', 'Euml' => '203', 'Igrave' => '204',
30629 'Iacute' => '205', 'Icirc' => '206', 'Iuml' => '207', 'ETH' => '208', 'Ntilde' => '209', 'Ograve' => '210', 'Oacute' => '211',
30630 'Ocirc' => '212', 'Otilde' => '213', 'Ouml' => '214', 'times' => '215', 'Oslash' => '216', 'Ugrave' => '217', 'Uacute' => '218',
30631 'Ucirc' => '219', 'Uuml' => '220', 'Yacute' => '221', 'THORN' => '222', 'szlig' => '223', 'agrave' => '224', 'aacute' => '225',
30632 'acirc' => '226', 'atilde' => '227', 'auml' => '228', 'aring' => '229', 'aelig' => '230', 'ccedil' => '231', 'egrave' => '232',
30633 'eacute' => '233', 'ecirc' => '234', 'euml' => '235', 'igrave' => '236', 'iacute' => '237', 'icirc' => '238', 'iuml' => '239',
30634 'eth' => '240', 'ntilde' => '241', 'ograve' => '242', 'oacute' => '243', 'ocirc' => '244', 'otilde' => '245', 'ouml' => '246',
30635 'divide' => '247', 'oslash' => '248', 'ugrave' => '249', 'uacute' => '250', 'ucirc' => '251', 'uuml' => '252', 'yacute' => '253',
30636 'thorn' => '254', 'yuml' => '255', 'OElig' => '338', 'oelig' => '339', 'Scaron' => '352', 'scaron' => '353', 'Yuml' => '376',
30637 'fnof' => '402', 'circ' => '710', 'tilde' => '732', 'Alpha' => '913', 'Beta' => '914', 'Gamma' => '915', 'Delta' => '916',
30638 'Epsilon' => '917', 'Zeta' => '918', 'Eta' => '919', 'Theta' => '920', 'Iota' => '921', 'Kappa' => '922', 'Lambda' => '923',
30639 'Mu' => '924', 'Nu' => '925', 'Xi' => '926', 'Omicron' => '927', 'Pi' => '928', 'Rho' => '929', 'Sigma' => '931', 'Tau' => '932',
30640 'Upsilon' => '933', 'Phi' => '934', 'Chi' => '935', 'Psi' => '936', 'Omega' => '937', 'alpha' => '945', 'beta' => '946', 'gamma' => '947',
30641 'delta' => '948', 'epsilon' => '949', 'zeta' => '950', 'eta' => '951', 'theta' => '952', 'iota' => '953', 'kappa' => '954',
30642 'lambda' => '955', 'mu' => '956', 'nu' => '957', 'xi' => '958', 'omicron' => '959', 'pi' => '960', 'rho' => '961', 'sigmaf' => '962',
30643 'sigma' => '963', 'tau' => '964', 'upsilon' => '965', 'phi' => '966', 'chi' => '967', 'psi' => '968', 'omega' => '969',
30644 'thetasym' => '977', 'upsih' => '978', 'piv' => '982', 'ensp' => '8194', 'emsp' => '8195', 'thinsp' => '8201', 'zwnj' => '8204',
30645 'zwj' => '8205', 'lrm' => '8206', 'rlm' => '8207', 'ndash' => '8211', 'mdash' => '8212', 'lsquo' => '8216', 'rsquo' => '8217',
30646 'sbquo' => '8218', 'ldquo' => '8220', 'rdquo' => '8221', 'bdquo' => '8222', 'dagger' => '8224', 'Dagger' => '8225', 'bull' => '8226',
30647 'hellip' => '8230', 'permil' => '8240', 'prime' => '8242', 'Prime' => '8243', 'lsaquo' => '8249', 'rsaquo' => '8250', 'oline' => '8254',
30648 'frasl' => '8260', 'euro' => '8364', 'image' => '8465', 'weierp' => '8472', 'real' => '8476', 'trade' => '8482', 'alefsym' => '8501',
30649 'larr' => '8592', 'uarr' => '8593', 'rarr' => '8594', 'darr' => '8595', 'harr' => '8596', 'crarr' => '8629', 'lArr' => '8656',
30650 'uArr' => '8657', 'rArr' => '8658', 'dArr' => '8659', 'hArr' => '8660', 'forall' => '8704', 'part' => '8706', 'exist' => '8707',
30651 'empty' => '8709', 'nabla' => '8711', 'isin' => '8712', 'notin' => '8713', 'ni' => '8715', 'prod' => '8719', 'sum' => '8721',
30652 'minus' => '8722', 'lowast' => '8727', 'radic' => '8730', 'prop' => '8733', 'infin' => '8734', 'ang' => '8736', 'and' => '8743',
30653 'or' => '8744', 'cap' => '8745', 'cup' => '8746', 'int' => '8747', 'there4' => '8756', 'sim' => '8764', 'cong' => '8773',
30654 'asymp' => '8776', 'ne' => '8800', 'equiv' => '8801', 'le' => '8804', 'ge' => '8805', 'sub' => '8834', 'sup' => '8835', 'nsub' => '8836',
30655 'sube' => '8838', 'supe' => '8839', 'oplus' => '8853', 'otimes' => '8855', 'perp' => '8869', 'sdot' => '8901', 'lceil' => '8968',
30656 'rceil' => '8969', 'lfloor' => '8970', 'rfloor' => '8971', 'lang' => '9001', 'rang' => '9002', 'loz' => '9674', 'spades' => '9824',
30657 'clubs' => '9827', 'hearts' => '9829', 'diams' => '9830',
30658 );
30659 foreach($entarr AS $key => $val) {
30660 $this->entsearch[] = '&'.$key.';';
30661 $this->entsubstitute[] = code2utf($val);
30662 }
30663}
30664
30665function SubstituteHiEntities($html) {
30666 // converts html_entities > ASCII 127 to unicode
30667 // Leaves in particular &lt; to distinguish from tag marker
30668 if (count($this->entsearch)) {
30669 $html = str_replace($this->entsearch,$this->entsubstitute,$html);
30670 }
30671 return $html;
30672}
30673
30674
30675// Edited v1.2 Pass by reference; option to continue if invalid UTF-8 chars
30676function is_utf8(&$string) {
30677 if ($string === mb_convert_encoding(mb_convert_encoding($string, "UTF-32", "UTF-8"), "UTF-8", "UTF-32")) {
30678 return true;
30679 }
30680 else {
30681 if ($this->ignore_invalid_utf8) {
30682 $string = mb_convert_encoding(mb_convert_encoding($string, "UTF-32", "UTF-8"), "UTF-8", "UTF-32") ;
30683 return true;
30684 }
30685 else {
30686 return false;
30687 }
30688 }
30689}
30690
30691
30692function purify_utf8($html,$lo=true) {
30693 // For HTML
30694 // Checks string is valid UTF-8 encoded
30695 // converts html_entities > ASCII 127 to UTF-8
30696 // Only exception - leaves low ASCII entities e.g. &lt; &amp; etc.
30697 // Leaves in particular &lt; to distinguish from tag marker
30698 if (!$this->is_utf8($html)) {
30699 echo "<p><b>HTML contains invalid UTF-8 character(s)</b></p>";
30700 while (mb_convert_encoding(mb_convert_encoding($html, "UTF-32", "UTF-8"), "UTF-8", "UTF-32") != $html) {
30701 $a = iconv('UTF-8', 'UTF-8', $html);
30702 echo ($a);
30703 $pos = $start = strlen($a);
30704 $err = '';
30705 while ( ord(substr($html,$pos,1)) > 128 ) {
30706 $err .= '[[#'.ord(substr($html,$pos,1)).']]';
30707 $pos++;
30708 }
30709 echo '<span style="color:red; font-weight:bold">'.$err.'</span>';
30710 $html = substr($html, $pos);
30711 }
30712 echo $html;
30713 $this->Error("");
30714 }
30715 $html = preg_replace("/\r/", "", $html );
30716
30717 // converts html_entities > ASCII 127 to UTF-8
30718 // Leaves in particular &lt; to distinguish from tag marker
30719 $html = $this->SubstituteHiEntities($html);
30720
30721 // converts all &#nnn; or &#xHHH; to UTF-8 multibyte
30722 // If $lo==true then includes ASCII < 128
30723 $html = strcode2utf($html,$lo);
30724 return ($html);
30725}
30726
30727function purify_utf8_text($txt) {
30728 // For TEXT
30729 // Make sure UTF-8 string of characters
30730 if (!$this->is_utf8($txt)) { $this->Error("Text contains invalid UTF-8 character(s)"); }
30731
30732 $txt = preg_replace("/\r/", "", $txt );
30733
30734 return ($txt);
30735}
30736function all_entities_to_utf8($txt) {
30737 // converts txt_entities > ASCII 127 to UTF-8
30738 // Leaves in particular &lt; to distinguish from tag marker
30739 $txt = $this->SubstituteHiEntities($txt);
30740
30741 // converts all &#nnn; or &#xHHH; to UTF-8 multibyte
30742 $txt = strcode2utf($txt);
30743
30744 $txt = $this->lesser_entity_decode($txt);
30745 return ($txt);
30746}
30747
30748
30749// ====================================================
30750/*-- BARCODES --*/
30751// UPC/EAN barcode
30752// EAN13, EAN8, UPCA, UPCE, ISBN, ISSN
30753// Accepts 12 or 13 digits with or without - hyphens
30754function 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) {
30755 if (empty($code)) {
30756 return;
30757 }
30758 $codestr = $code;
30759 $code = preg_replace('/\-/','',$code);
30760
30761 if (!class_exists('PDFBarcode', false)) {
30762 include(_MPDF_PATH.'classes/barcode.php');
30763 }
30764 $this->barcode = new PDFBarcode();
30765 if ($btype == 'ISSN' || $btype == 'ISBN') {
30766 $arrcode = $this->barcode->getBarcodeArray($code, 'EAN13');
30767 }
30768 else { $arrcode = $this->barcode->getBarcodeArray($code, $btype); }
30769
30770 if ($arrcode === false) { $this->Error('Error in barcode string: '.$codestr); }
30771 if((($btype=='EAN13' || $btype=='ISBN' || $btype=='ISSN') && strlen($code) == 12) || ($btype=='UPCA' && strlen($code) == 11)
30772 || ($btype=='UPCE' && strlen($code) == 11) || ($btype=='EAN8' && strlen($code) == 7)) {
30773 $code .= $arrcode['checkdigit'];
30774 if (stristr($codestr,'-')) { $codestr .= '-' . $arrcode['checkdigit']; }
30775 else { $codestr .= $arrcode['checkdigit']; }
30776 }
30777 if ($btype == 'ISBN') { $codestr = 'ISBN '.$codestr; }
30778 if ($btype == 'ISSN') { $codestr = 'ISSN '.$codestr; }
30779
30780 if (empty($x)) {
30781 $x = $this->x;
30782 }
30783 if (empty($y)) {
30784 $y = $this->y;
30785 }
30786 // set foreground color
30787 $prevDrawColor = $this->DrawColor;
30788 $prevTextColor = $this->TextColor;
30789 $prevFillColor = $this->FillColor;
30790 $lw = $this->LineWidth;
30791 $this->SetLineWidth(0.01);
30792
30793 $size /= $k; // in case resized in a table
30794
30795 $xres = $arrcode['nom-X'] * $size;
30796 $llm = $arrcode['lightmL'] * $arrcode['nom-X'] * $size; // Left Light margin
30797 $rlm = $arrcode['lightmR'] * $arrcode['nom-X'] * $size; // Right Light margin
30798
30799 $bcw = ($arrcode["maxw"] * $xres); // Barcode width = Should always be 31.35mm * $size
30800
30801 $fbw = $bcw + $llm + $rlm; // Full barcode width incl. light margins
30802 $ow = $fbw + $paddingL + $paddingR; // Full overall width incl. user-defined padding
30803
30804 $fbwi = $fbw - 2; // Full barcode width incl. light margins - 2mm - for isbn string
30805
30806 // cf. http://www.gs1uk.org/downloads/bar_code/Bar coding getting it right.pdf
30807 $num_height = 3 * $size; // Height of numerals
30808 $fbh = $arrcode['nom-H'] * $size * $height; // Full barcode height incl. numerals
30809 $bch = $fbh - (1.5 * $size); // Barcode height of bars (3mm for numerals)
30810
30811 if (($btype=='EAN13' && $showtext) || $btype == 'ISSN' || $btype == 'ISBN') { // Add height for ISBN string + margin from top of bars
30812 $tisbnm = 1.5 * $size; // Top margin between isbn (if shown) & bars
30813 $codestr_fontsize = 2.1 * $size;
30814 $paddingT += $codestr_fontsize + $tisbnm ;
30815 }
30816 $oh = $fbh + $paddingT + $paddingB; // Full overall height incl. user-defined padding
30817
30818 // PRINT border background color
30819 $xpos = $x;
30820 $ypos = $y;
30821 if ($col) {
30822 $this->SetDColor($col);
30823 $this->SetTColor($col);
30824 }
30825 else {
30826 $this->SetDColor($this->ConvertColor(0));
30827 $this->SetTColor($this->ConvertColor(0));
30828 }
30829 if ($bgcol) {
30830 $this->SetFColor($bgcol);
30831 }
30832 else { $this->SetFColor($this->ConvertColor(255)); }
30833 if (!$bgcol && !$col) { // fn. called directly - not via HTML
30834 if ($border) { $fillb = 'DF'; } else { $fillb = 'F'; }
30835 $this->Rect($xpos, $ypos, $ow, $oh, $fillb);
30836 }
30837
30838
30839 // PRINT BARS
30840 $xpos = $x + $paddingL + $llm ;
30841 $ypos = $y + $paddingT;
30842 if ($col) { $this->SetFColor($col); }
30843 else { $this->SetFColor($this->ConvertColor(0)); }
30844 if ($arrcode !== false) {
30845 foreach ($arrcode["bcode"] AS $v) {
30846 $bw = ($v["w"] * $xres);
30847 if ($v["t"]) {
30848 // draw a vertical bar
30849 $this->Rect($xpos, $ypos, $bw, $bch, 'F');
30850 }
30851 $xpos += $bw;
30852 }
30853 }
30854
30855
30856 // print text
30857 $prevFontFamily = $this->FontFamily;
30858 $prevFontStyle = $this->FontStyle;
30859 $prevFontSizePt = $this->FontSizePt;
30860
30861 // ISBN string
30862 if (($btype=='EAN13' && $showtext) || $btype=='ISBN' || $btype=='ISSN') {
30863 if ($this->onlyCoreFonts) {
30864 $this->SetFont('chelvetica');
30865 }
30866 else {
30867 $this->SetFont('sans');
30868 }
30869
30870 if ($bgcol) { $this->SetFColor($bgcol); }
30871 else { $this->SetFColor($this->ConvertColor(255)); }
30872 $this->x = $x + $paddingL + 1; // 1mm left margin (cf. $fbwi above)
30873 // max width is $fbwi
30874 $loop = 0;
30875 while ( $loop == 0 ) {
30876 $this->SetFontSize($codestr_fontsize*1.4*_MPDFK, false); // don't write
30877 $sz = $this->GetStringWidth( $codestr );
30878 if ($sz > $fbwi)
30879 $codestr_fontsize -= 0.1;
30880 else
30881 $loop ++;
30882 }
30883 $this->SetFont('','',$codestr_fontsize*1.4*_MPDFK, true, true); // * 1.4 because font height is only 7/10 of given mm
30884 // WORD SPACING
30885 if ($fbwi > $sz) {
30886 $xtra = $fbwi - $sz;
30887 $charspacing = $xtra / (strlen($codestr)-1);
30888 if ($charspacing) { $this->_out(sprintf('BT %.3F Tc ET',$charspacing*_MPDFK)); }
30889 }
30890 $this->y = $y + $paddingT - ($codestr_fontsize ) - $tisbnm ;
30891 $this->Cell($fbw , $codestr_fontsize, $codestr);
30892 if ($charspacing) { $this->_out('BT 0 Tc ET'); }
30893 }
30894
30895
30896 // Bottom NUMERALS
30897 if ($this->onlyCoreFonts) {
30898 $this->SetFont('mono');
30899 }
30900 else {
30901 if (in_array('ocrb',$this->available_unifonts)) { $this->SetFont('ocrb'); }
30902 else { $this->SetFont('mono'); }
30903 }
30904 if (isset($this->CurrentFont['desc']['CapHeight'])) { $fh = (1000/$this->CurrentFont['desc']['CapHeight']); }
30905 else if (isset($this->CurrentFont['desc']['Ascent'])) { $fh = (1000/$this->CurrentFont['desc']['Ascent']); }
30906 else { $fh = 1.2; }
30907
30908 $charRO = '';
30909 if ($btype=='EAN13' || $btype=='ISBN' || $btype=='ISSN') {
30910 $outerfontsize = 3; // Inner fontsize = 3
30911 $outerp = $xres * 4;
30912 $innerp = $xres * 2.5;
30913 $textw = ($bcw*0.5) - $outerp - $innerp;
30914 $chars = 6; // number of numerals in each half
30915 $charLO = substr($code,0,1); // Left Outer
30916 $charLI = substr($code,1,6); // Left Inner
30917 $charRI = substr($code,7,6); // Right Inner
30918 if (!$supplement) $charRO = '>'; // Right Outer
30919 }
30920 else if ($btype=='UPCA') {
30921 $outerfontsize = 2.3; // Inner fontsize = 3
30922 $outerp = $xres * 10;
30923 $innerp = $xres * 2.5;
30924 $textw = ($bcw*0.5) - $outerp - $innerp;
30925 $chars = 5;
30926 $charLO = substr($code,0,1); // Left Outer
30927 $charLI = substr($code,1,5); // Left Inner
30928 $charRI = substr($code,6,5); // Right Inner
30929 $charRO = substr($code,11,1); // Right Outer
30930 }
30931 else if ($btype=='UPCE') {
30932 $outerfontsize = 2.3; // Inner fontsize = 3
30933 $outerp = $xres * 4;
30934 $innerp = 0;
30935 $textw = ($bcw*0.5) - $outerp - $innerp;
30936 $chars = 3;
30937 $upce_code = $arrcode['code'];
30938 $charLO = substr($code,0,1); // Left Outer
30939 $charLI = substr($upce_code,0,3); // Left Inner
30940 $charRI = substr($upce_code,3,3); // Right Inner
30941 $charRO = substr($code,11,1); // Right Outer
30942 }
30943 else if ($btype=='EAN8') {
30944 $outerfontsize = 3; // Inner fontsize = 3
30945 $outerp = $xres * 4;
30946 $innerp = $xres * 2.5;
30947 $textw = ($bcw*0.5) - $outerp - $innerp;
30948 $chars = 4;
30949 $charLO = '<'; // Left Outer
30950 $charLI = substr($code,0,4); // Left Inner
30951 $charRI = substr($code,4,4); // Right Inner
30952 if (!$supplement) $charRO = '>'; // Right Outer
30953 }
30954
30955 $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters)
30956
30957 if (!$this->usingCoreFont) { $cw = $this->_getCharWidth($this->CurrentFont['cw'],32)*3*$fh*$size/1000; } // character width at 3mm
30958 else { $cw = $this->_getCharWidth($this->CurrentFont['cw'],48)*3*$fh*$size/1000; } // 48 == char "0"
30959
30960 // Outer left character
30961 $y_text = $y + $paddingT + $bch - ($num_height/2);
30962 $y_text_outer = $y + $paddingT + $bch - ($num_height*($outerfontsize/3)/2);
30963
30964 $this->x = $x + $paddingL - ($cw*($outerfontsize/3)*0.1); // 0.1 is correction as char does not fill full width;
30965 $this->y = $y_text_outer;
30966 $this->Cell($cw, $num_height, $charLO );
30967
30968 // WORD SPACING for inner chars
30969 $xtra = $textw - ($cw*$chars);
30970 $charspacing = $xtra / ($chars-1);
30971 if ($charspacing) { $this->_out(sprintf('BT %.3F Tc ET',$charspacing*_MPDFK)); }
30972
30973 if ($bgcol) { $this->SetFColor($bgcol); }
30974 else { $this->SetFColor($this->ConvertColor(255)); }
30975
30976 $this->SetFontSize(3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters)
30977
30978 // Inner left half characters
30979 $this->x = $x + $paddingL + $llm + $outerp;
30980 $this->y = $y_text;
30981 $this->Cell($textw, $num_height, $charLI , 0, 0, '', 1);
30982
30983 // Inner right half characters
30984 $this->x = $x + $paddingL + $llm + ($bcw*0.5) + $innerp;
30985 $this->y = $y_text;
30986 $this->Cell($textw, $num_height, $charRI , 0, 0, '', 1);
30987
30988 if ($charspacing) { $this->_out('BT 0 Tc ET'); }
30989
30990 // Outer Right character
30991 $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters)
30992
30993 $this->x = $x + $paddingL + $llm + $bcw + $rlm - ($cw*($outerfontsize/3)*0.9); // 0.9 is correction as char does not fill full width
30994 $this->y = $y_text_outer;
30995 $this->Cell($cw*($outerfontsize/3), $num_height, $charRO , 0, 0, 'R');
30996
30997 if ($supplement) { // EAN-2 or -5 Supplement
30998 // PRINT BARS
30999 $supparrcode = $this->barcode->getBarcodeArray($supplement_code, 'EAN'.$supplement);
31000 if ($supparrcode === false) { $this->Error('Error in barcode string (supplement): '.$codestr.' '.$supplement_code); }
31001 if(strlen($supplement_code) != $supplement) {
31002 $this->Error('Barcode supplement incorrect: '.$supplement_code);
31003 }
31004 $llm = $fbw - (($arrcode['lightmR'] - $supparrcode['sepM']) * $arrcode['nom-X'] * $size); // Left Light margin
31005 $rlm = $arrcode['lightmR'] * $arrcode['nom-X'] * $size; // Right Light margin
31006
31007 $bcw = ($supparrcode["maxw"] * $xres); // Barcode width = Should always be 31.35mm * $size
31008
31009 $fbw = $bcw + $llm + $rlm; // Full barcode width incl. light margins
31010 $ow = $fbw + $paddingL + $paddingR; // Full overall width incl. user-defined padding
31011 $bch = $fbh - (1.5 * $size) - ($num_height + 0.5); // Barcode height of bars (3mm for numerals)
31012
31013 $xpos = $x + $paddingL + $llm ;
31014 $ypos = $y + $paddingT + $num_height + 0.5;
31015 if ($col) { $this->SetFColor($col); }
31016 else { $this->SetFColor($this->ConvertColor(0)); }
31017 if ($supparrcode !== false) {
31018 foreach ($supparrcode["bcode"] AS $v) {
31019 $bw = ($v["w"] * $xres);
31020 if ($v["t"]) {
31021 // draw a vertical bar
31022 $this->Rect($xpos, $ypos, $bw, $bch, 'F');
31023 }
31024 $xpos += $bw;
31025 }
31026 }
31027
31028 // Characters
31029 if ($bgcol) { $this->SetFColor($bgcol); }
31030 else { $this->SetFColor($this->ConvertColor(255)); }
31031 $this->SetFontSize(3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters)
31032 $this->x = $x + $paddingL + $llm;
31033 $this->y = $y + $paddingT;
31034 $this->Cell($bcw, $num_height, $supplement_code, 0, 0, 'C');
31035
31036 // Outer Right character (light margin)
31037 $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters)
31038 $this->x = $x + $paddingL + $llm + $bcw + $rlm - ($cw*0.9); // 0.9 is correction as char does not fill full width
31039 $this->y = $y + $paddingT;
31040 $this->Cell($cw*($outerfontsize/3), $num_height, '>', 0, 0, 'R');
31041 }
31042
31043
31044
31045 // Restore **************
31046 $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt);
31047 $this->DrawColor = $prevDrawColor;
31048 $this->TextColor = $prevTextColor;
31049 $this->FillColor = $prevFillColor;
31050 $this->SetLineWidth($lw);
31051 $this->SetY($y);
31052}
31053
31054
31055
31056// ====================================================
31057// POSTAL and OTHER barcodes
31058function WriteBarcode2($code, $x='', $y='', $size=1, $height=1, $bgcol=false, $col=false, $btype='IMB', $print_ratio='', $k=1) {
31059 if (empty($code)) { return; }
31060 if (!class_exists('PDFBarcode', false)) {
31061 include(_MPDF_PATH.'classes/barcode.php');
31062 }
31063 $this->barcode = new PDFBarcode();
31064 $arrcode = $this->barcode->getBarcodeArray($code, $btype, $print_ratio);
31065
31066 if ($arrcode === false) { $this->Error('Error in barcode string: '.$code); }
31067 if (empty($x)) { $x = $this->x; }
31068 if (empty($y)) { $y = $this->y; }
31069 $prevDrawColor = $this->DrawColor;
31070 $prevTextColor = $this->TextColor;
31071 $prevFillColor = $this->FillColor;
31072 $lw = $this->LineWidth;
31073 $this->SetLineWidth(0.01);
31074 $size /= $k; // in case resized in a table
31075 $xres = $arrcode['nom-X'] * $size;
31076
31077 if ($btype == 'IMB' || $btype == 'RM4SCC' || $btype == 'KIX' || $btype == 'POSTNET' || $btype == 'PLANET') {
31078 $llm = $arrcode['quietL'] / $k; // Left Quiet margin
31079 $rlm = $arrcode['quietR'] / $k; // Right Quiet margin
31080 $tlm = $blm = $arrcode['quietTB'] / $k;
31081 $height=1; // Overrides
31082 }
31083 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'))) {
31084 $llm = $arrcode['lightmL'] * $xres; // Left Quiet margin
31085 $rlm = $arrcode['lightmR'] * $xres; // Right Quiet margin
31086 $tlm = $blm = $arrcode['lightTB'] * $xres * $height;
31087 }
31088
31089
31090 $bcw = ($arrcode["maxw"] * $xres);
31091 $fbw = $bcw + $llm + $rlm; // Full barcode width incl. light margins
31092
31093 $bch = ($arrcode["nom-H"] * $size * $height);
31094 $fbh = $bch + $tlm + $blm; // Full barcode height
31095
31096 // PRINT border background color
31097 $xpos = $x;
31098 $ypos = $y;
31099 if ($col) {
31100 $this->SetDColor($col);
31101 $this->SetTColor($col);
31102 }
31103 else {
31104 $this->SetDColor($this->ConvertColor(0));
31105 $this->SetTColor($this->ConvertColor(0));
31106 }
31107 if ($bgcol) {
31108 $this->SetFColor($bgcol);
31109 }
31110 else { $this->SetFColor($this->ConvertColor(255)); }
31111
31112 // PRINT BARS
31113 if ($col) { $this->SetFColor($col); }
31114 else { $this->SetFColor($this->ConvertColor(0)); }
31115 $xpos = $x + $llm ;
31116
31117 if ($arrcode !== false) {
31118 foreach ($arrcode["bcode"] AS $v) {
31119 $bw = ($v["w"] * $xres);
31120 if ($v["t"]) {
31121 $ypos = $y + $tlm + ($bch * $v['p'] / $arrcode['maxh']);
31122 $this->Rect($xpos, $ypos, $bw, ($v['h'] * $bch / $arrcode['maxh']), 'F');
31123 }
31124 $xpos += $bw;
31125 }
31126 }
31127
31128 // PRINT BEARER BARS
31129 if ($btype == 'I25B' || $btype == 'I25B+') {
31130 $this->Rect($x, $y, $fbw, ($arrcode['lightTB'] * $xres * $height), 'F');
31131 $this->Rect($x, $y+$tlm+$bch, $fbw, ($arrcode['lightTB'] * $xres * $height), 'F');
31132 }
31133
31134 // Restore **************
31135 $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt);
31136 $this->DrawColor = $prevDrawColor;
31137 $this->TextColor = $prevTextColor;
31138 $this->FillColor = $prevFillColor;
31139 $this->SetLineWidth($lw);
31140 $this->SetY($y);
31141}
31142
31143/*-- END BARCODES --*/
31144
31145// ====================================================
31146// ====================================================
31147
31148function StartTransform($returnstring=false) {
31149 if ($returnstring) { return('q'); }
31150 else { $this->_out('q'); }
31151}
31152function StopTransform($returnstring=false) {
31153 if ($returnstring) { return('Q'); }
31154 else { $this->_out('Q'); }
31155}
31156function transformScale($s_x, $s_y, $x='', $y='', $returnstring=false) {
31157 if ($x === '') {
31158 $x=$this->x;
31159 }
31160 if ($y === '') {
31161 $y=$this->y;
31162 }
31163 if (($s_x == 0) OR ($s_y == 0)) {
31164 $this->Error('Please do not use values equal to zero for scaling');
31165 }
31166 $y = ($this->h - $y) * _MPDFK;
31167 $x *= _MPDFK;
31168 //calculate elements of transformation matrix
31169 $s_x /= 100;
31170 $s_y /= 100;
31171 $tm[0] = $s_x;
31172 $tm[1] = 0;
31173 $tm[2] = 0;
31174 $tm[3] = $s_y;
31175 $tm[4] = $x * (1 - $s_x);
31176 $tm[5] = $y * (1 - $s_y);
31177 //scale the coordinate system
31178 if ($returnstring) { return($this->_transform($tm, true)); }
31179 else { $this->_transform($tm); }
31180}
31181function transformTranslate($t_x, $t_y, $returnstring=false) {
31182 //calculate elements of transformation matrix
31183 $tm[0] = 1;
31184 $tm[1] = 0;
31185 $tm[2] = 0;
31186 $tm[3] = 1;
31187 $tm[4] = $t_x * _MPDFK;
31188 $tm[5] = -$t_y * _MPDFK;
31189 //translate the coordinate system
31190 if ($returnstring) { return($this->_transform($tm, true)); }
31191 else { $this->_transform($tm); }
31192}
31193function transformRotate($angle, $x='', $y='', $returnstring=false) {
31194 if ($x === '') {
31195 $x=$this->x;
31196 }
31197 if ($y === '') {
31198 $y=$this->y;
31199 }
31200 $angle = -$angle;
31201 $y = ($this->h - $y) * _MPDFK;
31202 $x *= _MPDFK;
31203 //calculate elements of transformation matrix
31204 $tm[0] = cos(deg2rad($angle));
31205 $tm[1] = sin(deg2rad($angle));
31206 $tm[2] = -$tm[1];
31207 $tm[3] = $tm[0];
31208 $tm[4] = $x + $tm[1] * $y - $tm[0] * $x;
31209 $tm[5] = $y - $tm[0] * $y - $tm[1] * $x;
31210 //rotate the coordinate system around ($x,$y)
31211 if ($returnstring) { return($this->_transform($tm, true)); }
31212 else { $this->_transform($tm); }
31213}
31214function _transform($tm, $returnstring=false) {
31215 if ($returnstring) { return(sprintf('%.4F %.4F %.4F %.4F %.4F %.4F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5])); }
31216 else { $this->_out(sprintf('%.4F %.4F %.4F %.4F %.4F %.4F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5])); }
31217}
31218
31219
31220
31221/*-- INDIC --*/
31222// INDIC ============================
31223// This conversion can only be done when font is set
31224function ConvertIndic(&$str) {
31225 if (preg_match('/^ind_([a-z]{2})_/',$this->currentfontfamily, $m)) {
31226 if (!class_exists('indic', false)) { include(_MPDF_PATH.'classes/indic.php'); }
31227 if (empty($this->indic)) { $this->indic = new indic($this); }
31228 $earr = $this->UTF8StringToArray($str, false);
31229 $str = $this->indic->substituteIndic($earr, $m[1], $this->currentfontfamily);
31230 }
31231}
31232/*-- END INDIC --*/
31233
31234// AUTOFONT =========================
31235function AutoFont($html) {
31236 if ($this->onlyCoreFonts) { return $html; }
31237 $this->useLang = true;
31238 if ($this->autoFontGroupSize == 1) { $extra = $this->pregASCIIchars1; }
31239 else if ($this->autoFontGroupSize == 3) { $extra = $this->pregASCIIchars3; }
31240 else { $extra = $this->pregASCIIchars2; }
31241 $n = '';
31242 $a=preg_split('/<(.*?)>/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
31243 foreach($a as $i => $e) {
31244 if($i%2==0) {
31245 $e = strcode2utf($e);
31246 $e = $this->lesser_entity_decode($e);
31247
31248 // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring
31249 // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag##
31250
31251/*-- CJK-FONTS --*/
31252 if ($this->autoFontGroups & AUTOFONT_CJK) {
31253 $e = preg_replace_callback("/([".$this->pregCJKchars .$extra."]*[".$this->pregCJKchars ."][".$this->pregCJKchars .$extra."]*)/u", array($this, 'replaceCJKPregCallback'), $e ); // mPDF 5.7+
31254 }
31255/*-- END CJK-FONTS --*/
31256
31257/*-- RTL --*/
31258 if ($this->autoFontGroups & AUTOFONT_RTL) {
31259 // HEBREW
31260 $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);
31261 // All Arabic
31262 $e = preg_replace_callback("/([".$this->pregARABICchars .$extra."]*[".$this->pregARABICchars ."][".$this->pregARABICchars .$extra."]*)/u", array($this, 'replaceArabicPregCallback'), $e ); // mPDF 5.7+
31263 }
31264/*-- END RTL --*/
31265
31266/*-- INDIC --*/
31267 // INDIC
31268 if ($this->autoFontGroups & AUTOFONT_INDIC) {
31269 // Bengali
31270 $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);
31271 // Devanagari (= script for Hindi, Nepali + Sindhi)
31272 $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);
31273 // Gujarati
31274 $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);
31275 // Malayalam
31276 $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);
31277 // Kannada
31278 $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);
31279 // Oriya
31280 $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);
31281 // Punjabi ?= Gurmuhki
31282 $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);
31283 // Tamil
31284 $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);
31285 // Telugu
31286 $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);
31287 }
31288/*-- END INDIC --*/
31289
31290
31291 if ($this->autoFontGroups & AUTOFONT_THAIVIET) {
31292 // THAI
31293 $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);
31294 // Vietnamese
31295 $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);
31296 }
31297
31298 $e = preg_replace('/[&]/','&amp;',$e);
31299 $e = preg_replace('/[<]/','&lt;',$e);
31300 $e = preg_replace('/[>]/','&gt;',$e);
31301 $e = preg_replace("/(\xef\xbf\xb0span lang=\"([a-z\-A-Z]{2,5})\"\xef\xbf\xb1)\s+/",' \\1',$e);
31302 $e = preg_replace("/[ ]+(\xef\xbf\xb0\/span\xef\xbf\xb1)/",'\\1 ',$e);
31303
31304 $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);
31305
31306 $e = preg_replace("/\xef\xbf\xb0/",'<',$e);
31307 $e = preg_replace("/\xef\xbf\xb1/",'>',$e);
31308
31309 $a[$i] = $e;
31310 }
31311 else {
31312 $a[$i] = '<'.$e.'>';
31313 }
31314 }
31315 $n = implode('',$a);
31316 return $n;
31317}
31318
31319
31320/*-- CJK-FONTS --*/
31321function replaceCJK($str) {
31322 // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring
31323 // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag##
31324 if (preg_match("/[".$this->pregUHCchars."]/u", $str)) {
31325 return "\xef\xbf\xb0span lang=\"ko\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
31326 }
31327 else if (preg_match("/[".$this->pregSJISchars."]/u", $str)) {
31328 return "\xef\xbf\xb0span lang=\"ja\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
31329 }
31330 // if in Unicode Plane 2, probably HKCS (incl in BIG5) if not Japanese
31331 else if (preg_match("/[\x{20000}-\x{2FFFF}]/u", $str)) {
31332 return "\xef\xbf\xb0span lang=\"zh-HK\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
31333 }
31334 else{
31335 return "\xef\xbf\xb0span lang=\"zh-CN\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
31336 }
31337 return $str;
31338}
31339
31340// mPDF 5.7+
31341function replaceCJKPregCallback($matches) {
31342 return $this->replaceCJK(stripslashes($matches[1]));
31343}
31344/*-- END CJK-FONTS --*/
31345
31346/*-- RTL --*/
31347function replaceArabic($str) {
31348 // PASHTO, SINDHI, URDU, ARABIC, PERSIAN
31349 $persian = "\x{067E}\x{0686}\x{0698}\x{06AF}";
31350
31351 $urdu = "\x{0679}\x{0688}\x{0691}\x{06BA}\x{06BE}\x{06C1}\x{06D2}";
31352 $pashto = "\x{067C}\x{0681}\x{0685}\x{0689}\x{0693}\x{0696}\x{069A}\x{06BC}\x{06D0}"; // ? and U+06AB, U+06CD
31353 $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}";
31354 // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring
31355 // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag##
31356
31357 if (preg_match("/[".$this->pregNonARABICchars ."]/u", $str) ) {
31358 if (preg_match("/[".$sindhi ."]/u", $str) ) {
31359 return "\xef\xbf\xb0span lang=\"sd\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
31360 }
31361 else if (preg_match("/[".$urdu ."]/u", $str) ) {
31362 return "\xef\xbf\xb0span lang=\"ur\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
31363 }
31364 else if (preg_match("/[".$pashto ."]/u", $str) ) {
31365 return "\xef\xbf\xb0span lang=\"ps\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
31366 }
31367 else if (preg_match("/[".$persian ."]/u", $str) ) {
31368 return "\xef\xbf\xb0span lang=\"fa\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
31369 }
31370 else {
31371 return "\xef\xbf\xb0span lang=\"ar\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
31372 }
31373 }
31374 if (preg_match("/[".$persian ."]/u", $str) ) {
31375 return "\xef\xbf\xb0span lang=\"fa\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
31376 }
31377 else {
31378 return "\xef\xbf\xb0span lang=\"ar\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
31379 }
31380 return $str;
31381}
31382
31383// mPDF 5.7+
31384function replaceArabicPregCallback($matches) {
31385 return $this->replaceArabic(stripslashes($matches[1]));
31386}
31387
31388// ARABIC ===========================
31389// mPDF 5.4.08
31390function InitArabic() {
31391
31392 // JOIN TO FOLLOWING LETTER IN LOGICAL ORDER (i.e. AS INITIAL)
31393 $this->arabPrevLink = "";
31394 // U+060c; U+061b; U+061f; U+0626; U+0628;
31395 $this->arabPrevLink .= "\xd8\x8c\xd8\x9b\xd8\x9f\xd8\xa6\xd8\xa8";
31396 // U+062a; U+062b; U+062c; U+062d; U+062e;
31397 $this->arabPrevLink .= "\xd8\xaa\xd8\xab\xd8\xac\xd8\xad\xd8\xae";
31398 // U+0633; U+0634; U+0635; U+0636; U+0637; U+0638; U+0639; U+063a;
31399 $this->arabPrevLink .= "\xd8\xb3\xd8\xb4\xd8\xb5\xd8\xb6\xd8\xb7\xd8\xb8\xd8\xb9\xd8\xba";
31400 // U+0640; U+0641; U+0642; U+0643; U+0644; U+0645; U+0646; U+0647; U+0649; U+064a;
31401 $this->arabPrevLink .= "\xd9\x80\xd9\x81\xd9\x82\xd9\x83\xd9\x84\xd9\x85\xd9\x86\xd9\x87\xd9\x89\xd9\x8a";
31402 // U+0678; U+0679; U+067a; U+067b; U+067c; U+067d; U+067e; U+067f;
31403 $this->arabPrevLink .= "\xd9\xb8\xd9\xb9\xd9\xba\xd9\xbb\xd9\xbc\xd9\xbd\xd9\xbe\xd9\xbf";
31404 // U+0680; U+0681; U+0682; U+0683; U+0684; U+0685; U+0686; U+0687;
31405 $this->arabPrevLink .= "\xda\x80\xda\x81\xda\x82\xda\x83\xda\x84\xda\x85\xda\x86\xda\x87";
31406 // U+069a; U+069b; U+069c; U+069d; U+069e; U+069f;
31407 $this->arabPrevLink .= "\xda\x9a\xda\x9b\xda\x9c\xda\x9d\xda\x9e\xda\x9f";
31408 // U+06a0; U+06a1; U+06a2; U+06a3; U+06a4; U+06a5; U+06a6; U+06A7; U+06A8;
31409 $this->arabPrevLink .= "\xda\xa0\xda\xa1\xda\xa2\xda\xa3\xda\xa4\xda\xa5\xda\xa6\xda\xa7\xda\xa8";
31410 // U+06a9; U+06aa; U+06ab; U+06ac; U+06ad; U+06ae; U+06af;
31411 $this->arabPrevLink .= "\xda\xa9\xda\xaa\xda\xab\xda\xac\xda\xad\xda\xae\xda\xaf";
31412 // U+06b0; U+06b1; U+06b2; U+06b3; U+06b4; U+06b5; U+06b6; U+06b7; U+06b8; U+06b9;
31413 $this->arabPrevLink .= "\xda\xb0\xda\xb1\xda\xb2\xda\xb3\xda\xb4\xda\xb5\xda\xb6\xda\xb7\xda\xb8\xda\xb9";
31414 // U+06ba; U+06bb; U+06bc; U+06be; U+06bf;
31415 $this->arabPrevLink .= "\xda\xba\xda\xbb\xda\xbc\xda\xbe\xda\xbf";
31416 // U+06c1; U+06cc; U+06ce; U+06d0; U+06d1;
31417 $this->arabPrevLink .= "\xdb\x81\xdb\x8c\xdb\x8e\xdb\x90\xdb\x91";
31418
31419
31420
31421
31422 // JOIN TO PREVIOUS LETTER IN LOGICAL ORDER (i.e. AS FINAL FORM)
31423 $this->arabNextLink = "";
31424 // U+0622; U+0623; U+0624; U+0625; U+0626; U+0627; U+0628; U+0629;
31425 $this->arabNextLink .= "\xd8\xa2\xd8\xa3\xd8\xa4\xd8\xa5\xd8\xa6\xd8\xa7\xd8\xa8\xd8\xa9";
31426 // U+062A; U+062B; U+062C; U+062D; U+062E; U+062F;
31427 $this->arabNextLink .= "\xd8\xaa\xd8\xab\xd8\xac\xd8\xad\xd8\xae\xd8\xaf";
31428 // U+0630; U+0631; U+0632; U+0633; U+0634; U+0635; U+0636; U+0637; U+0638; U+0639; U+063A;
31429 $this->arabNextLink .= "\xd8\xb0\xd8\xb1\xd8\xb2\xd8\xb3\xd8\xb4\xd8\xb5\xd8\xb6\xd8\xb7\xd8\xb8\xd8\xb9\xd8\xba";
31430 // U+0640; U+0641; U+0642; U+0643; U+0644; U+0645; U+0646; U+0647; U+0648; U+0649; U+064A;
31431 $this->arabNextLink .= "\xd9\x80\xd9\x81\xd9\x82\xd9\x83\xd9\x84\xd9\x85\xd9\x86\xd9\x87\xd9\x88\xd9\x89\xd9\x8a";
31432 // U+0671; U+0672; U+0675; U+0676; U+0677; U+0678; U+0679;
31433 $this->arabNextLink .= "\xd9\xb1\xd9\xb2\xd9\xb5\xd9\xb6\xd9\xb7\xd9\xb8\xd9\xb9";
31434 // U+067A; U+067B; U+067C; U+067D; U+067E; U+067F;
31435 $this->arabNextLink .= "\xd9\xba\xd9\xbb\xd9\xbc\xd9\xbd\xd9\xbe\xd9\xbf";
31436 // U+0680; U+0681; U+0682; U+0683; U+0684; U+0685; U+0686; U+0687; U+0688; U+0689;
31437 $this->arabNextLink .= "\xda\x80\xda\x81\xda\x82\xda\x83\xda\x84\xda\x85\xda\x86\xda\x87\xda\x88\xda\x89";
31438 // U+068A; U+068B; U+068C; U+068D; U+068F;U+068F;
31439 $this->arabNextLink .= "\xda\x8a\xda\x8b\xda\x8c\xda\x8d\xda\x8e\xda\x8f";
31440 // U+0690; U+0691; U+0692; U+0693; U+0694; U+0695; U+0696; U+0697; U+0698; U+0699;
31441 $this->arabNextLink .= "\xda\x90\xda\x91\xda\x92\xda\x93\xda\x94\xda\x95\xda\x96\xda\x97\xda\x98\xda\x99";
31442 // U+069A; U+069B; U+069C; U+069D; U+069E; U+069F;
31443 $this->arabNextLink .= "\xda\x9a\xda\x9b\xda\x9c\xda\x9d\xda\x9e\xda\x9f";
31444 // U+06A0; U+06A1; U+06A2; U+06A3; U+06A4; U+06A5; U+06A6; U+06A7; U+06A8; U+06A9;
31445 $this->arabNextLink .= "\xda\xa0\xda\xa1\xda\xa2\xda\xa3\xda\xa4\xda\xa5\xda\xa6\xda\xa7\xda\xa8\xda\xa9";
31446 // U+06AA; U+06AB; U+06AC; U+06AD; U+06AE; U+06AF;
31447 $this->arabNextLink .= "\xda\xaa\xda\xab\xda\xac\xda\xad\xda\xae\xda\xaf";
31448 // U+06B0; U+06B1; U+06B2; U+06B3; U+06B4; U+06B5; U+06B6; U+06B7; U+06B8; U+06B9;
31449 $this->arabNextLink .= "\xda\xb0\xda\xb1\xda\xb2\xda\xb3\xda\xb4\xda\xb5\xda\xb6\xda\xb7\xda\xb8\xda\xb9";
31450 // U+06BA; U+06BB; U+06BC; U+06BE; U+06BF;
31451 $this->arabNextLink .= "\xda\xba\xda\xbb\xda\xbc\xda\xbe\xda\xbf";
31452 // U+06C0; U+06C1; U+06C2; U+06C3; U+06C4; U+06C5; U+06C6; U+06C7; U+06C8; U+06C9;
31453 $this->arabNextLink .= "\xdb\x80\xdb\x81\xdb\x82\xdb\x83\xdb\x84\xdb\x85\xdb\x86\xdb\x87\xdb\x88\xdb\x89";
31454 // U+06CA; U+06CB; U+06CC; U+06CD; U+06CE; U+06CF;
31455 $this->arabNextLink .= "\xdb\x8a\xdb\x8b\xdb\x8c\xdb\x8d\xdb\x8e\xdb\x8f";
31456 // U+06D0; U+06d1; U+06D2; U+06D3;
31457 $this->arabNextLink .= "\xdb\x90\xdb\x91\xdb\x92\xdb\x93";
31458
31459
31460 // VOWELS ++
31461
31462 // U+064b U+064c; U+064d; U+064e; U+064f; U+0650; U+0651; U+0652;
31463 $this->arabVowels = "\xd9\x8b\xd9\x8c\xd9\x8d\xd9\x8e\xd9\x8f\xd9\x90\xd9\x91\xd9\x92";
31464
31465 // Added chars that may not be vowels but should not interrupt joining
31466 // U+0670; U+0653;
31467 $this->arabVowels .= "\xd9\xb0\xd9\x93";
31468 // ? should also add - U+615, 616, 617-61A, 653-65E, 6D6-6DC, 6DF-6E4, 6E7, 6E8, 6EA-6ED
31469
31470
31471
31472 // ISOLATED FORM :: FINAL :: INITIAL :: MEDIAL
31473 // FB** - FE** = Arabic presentation Forms
31474 // F5** F6** F7** = Private use area used by unAGlyphs in mPDF
31475 $this->arabGlyphs = array(
31476 "\xd8\x8c"=>array("\xd8\x8c", "\xd8\x8c", "\xd8\x8c", "\xd8\x8c"), /* 060C, 060C, 060C, 060C */
31477 "\xd8\x9b"=>array("\xd8\x9b", "\xd8\x9b", "\xd8\x9b", "\xd8\x9b"), /* 061B, 061B, 061B, 061B */
31478 "\xd8\x9f"=>array("\xd8\x9f", "\xd8\x9f", "\xd8\x9f", "\xd8\x9f"), /* 061F, 061F, 061F, 061F */
31479 "\xd8\xa1"=>array("\xd8\xa1", "\xd8\xa1", "\xd8\xa1", "\xd8\xa1"), /* 0621, 0621, 0621, 0621 */
31480 "\xd8\xa2"=>array("\xd8\xa2", "\xef\xba\x82", "\xd8\xa2", "\xef\xba\x82"), /* 0622, FE82, 0622, FE82 */
31481 "\xd8\xa3"=>array("\xd8\xa3", "\xef\xba\x84", "\xd8\xa3", "\xef\xba\x84"), /* 0623, FE84, 0623, FE84 */
31482 "\xd8\xa4"=>array("\xd8\xa4", "\xef\xba\x86", "\xd8\xa4", "\xef\xba\x86"), /* 0624, FE86, 0624, FE86 */
31483 "\xd8\xa5"=>array("\xd8\xa5", "\xef\xba\x88", "\xd8\xa5", "\xef\xba\x88"), /* 0625, FE88, 0625, FE88 */
31484 "\xd8\xa6"=>array("\xd8\xa6", "\xef\xba\x8a", "\xef\xba\x8b", "\xef\xba\x8c"), /* 0626, FE8A, FE8B, FE8C */
31485 "\xd8\xa7"=>array("\xd8\xa7", "\xef\xba\x8e", "\xd8\xa7", "\xef\xba\x8e"), /* 0627, FE8E, 0627, FE8E */
31486 "\xd8\xa8"=>array("\xd8\xa8", "\xef\xba\x90", "\xef\xba\x91", "\xef\xba\x92"), /* 0628, FE90, FE91, FE92 */
31487 "\xd8\xa9"=>array("\xd8\xa9", "\xef\xba\x94", "\xd8\xa9", "\xef\xba\x94"), /* 0629, FE94, 0629, FE94 */
31488 "\xd8\xaa"=>array("\xd8\xaa", "\xef\xba\x96", "\xef\xba\x97", "\xef\xba\x98"), /* 062A, FE96, FE97, FE98 */
31489 "\xd8\xab"=>array("\xd8\xab", "\xef\xba\x9a", "\xef\xba\x9b", "\xef\xba\x9c"), /* 062B, FE9A, FE9B, FE9C */
31490 "\xd8\xac"=>array("\xd8\xac", "\xef\xba\x9e", "\xef\xba\x9f", "\xef\xba\xa0"), /* 062C, FE9E, FE9F, FEA0 */
31491 "\xd8\xad"=>array("\xd8\xad", "\xef\xba\xa2", "\xef\xba\xa3", "\xef\xba\xa4"), /* 062D, FEA2, FEA3, FEA4 */
31492 "\xd8\xae"=>array("\xd8\xae", "\xef\xba\xa6", "\xef\xba\xa7", "\xef\xba\xa8"), /* 062E, FEA6, FEA7, FEA8 */
31493 "\xd8\xaf"=>array("\xd8\xaf", "\xef\xba\xaa", "\xd8\xaf", "\xef\xba\xaa"), /* 062F, FEAA, 062F, FEAA */
31494 "\xd8\xb0"=>array("\xd8\xb0", "\xef\xba\xac", "\xd8\xb0", "\xef\xba\xac"), /* 0630, FEAC, 0630, FEAC */
31495 "\xd8\xb1"=>array("\xd8\xb1", "\xef\xba\xae", "\xd8\xb1", "\xef\xba\xae"), /* 0631, FEAE, 0631, FEAE */
31496 "\xd8\xb2"=>array("\xd8\xb2", "\xef\xba\xb0", "\xd8\xb2", "\xef\xba\xb0"), /* 0632, FEB0, 0632, FEB0 */
31497 "\xd8\xb3"=>array("\xd8\xb3", "\xef\xba\xb2", "\xef\xba\xb3", "\xef\xba\xb4"), /* 0633, FEB2, FEB3, FEB4 */
31498 "\xd8\xb4"=>array("\xd8\xb4", "\xef\xba\xb6", "\xef\xba\xb7", "\xef\xba\xb8"), /* 0634, FEB6, FEB7, FEB8 */
31499 "\xd8\xb5"=>array("\xd8\xb5", "\xef\xba\xba", "\xef\xba\xbb", "\xef\xba\xbc"), /* 0635, FEBA, FEBB, FEBC */
31500 "\xd8\xb6"=>array("\xd8\xb6", "\xef\xba\xbe", "\xef\xba\xbf", "\xef\xbb\x80"), /* 0636, FEBE, FEBF, FEC0 */
31501 "\xd8\xb7"=>array("\xd8\xb7", "\xef\xbb\x82", "\xef\xbb\x83", "\xef\xbb\x84"), /* 0637, FEC2, FEC3, FEC4 */
31502 "\xd8\xb8"=>array("\xd8\xb8", "\xef\xbb\x86", "\xef\xbb\x87", "\xef\xbb\x88"), /* 0638, FEC6, FEC7, FEC8 */
31503 "\xd8\xb9"=>array("\xd8\xb9", "\xef\xbb\x8a", "\xef\xbb\x8b", "\xef\xbb\x8c"), /* 0639, FECA, FECB, FECC */
31504 "\xd8\xba"=>array("\xd8\xba", "\xef\xbb\x8e", "\xef\xbb\x8f", "\xef\xbb\x90"), /* 063A, FECE, FECF, FED0 */
31505 "\xd9\x80"=>array("\xd9\x80", "\xd9\x80", "\xd9\x80", "\xd9\x80"), /* 0640, 0640, 0640, 0640 */
31506 "\xd9\x81"=>array("\xd9\x81", "\xef\xbb\x92", "\xef\xbb\x93", "\xef\xbb\x94"), /* 0641, FED2, FED3, FED4 */
31507 "\xd9\x82"=>array("\xd9\x82", "\xef\xbb\x96", "\xef\xbb\x97", "\xef\xbb\x98"), /* 0642, FED6, FED7, FED8 */
31508 "\xd9\x83"=>array("\xd9\x83", "\xef\xbb\x9a", "\xef\xbb\x9b", "\xef\xbb\x9c"), /* 0643, FEDA, FEDB, FEDC */
31509 "\xd9\x84"=>array("\xd9\x84", "\xef\xbb\x9e", "\xef\xbb\x9f", "\xef\xbb\xa0"), /* 0644, FEDE, FEDF, FEE0 */
31510 "\xd9\x85"=>array("\xd9\x85", "\xef\xbb\xa2", "\xef\xbb\xa3", "\xef\xbb\xa4"), /* 0645, FEE2, FEE3, FEE4 */
31511 "\xd9\x86"=>array("\xd9\x86", "\xef\xbb\xa6", "\xef\xbb\xa7", "\xef\xbb\xa8"), /* 0646, FEE6, FEE7, FEE8 */
31512 "\xd9\x87"=>array("\xd9\x87", "\xef\xbb\xaa", "\xef\xbb\xab", "\xef\xbb\xac"), /* 0647, FEEA, FEEB, FEEC */
31513 "\xd9\x88"=>array("\xd9\x88", "\xef\xbb\xae", "\xd9\x88", "\xef\xbb\xae"), /* 0648, FEEE, 0648, FEEE */
31514
31515/* 0649 Alef Maksura should only appear at end of word (in Arabic) So Initial and medial are shown as isolated/final */
31516 "\xd9\x89"=>array("\xd9\x89", "\xef\xbb\xb0", "\xd9\x89", "\xef\xbb\xb0"), /* 0649, FEF0, 0649, FEF0 */
31517
31518/* 0649 Alef Maksura Initial and Medial forms as given in Unicode FBE8 and FBE9 for Uighur Kazakh (not in some fonts) */
31519 "\xd9\x89"=>array("\xd9\x89", "\xef\xbb\xb0", "\xef\xaf\xa8", "\xef\xaf\xa9"), /* 0649, FEF0, FBE8, FBE9 not in most fonts */
31520
31521 "\xd9\x8a"=>array("\xd9\x8a", "\xef\xbb\xb2", "\xef\xbb\xb3", "\xef\xbb\xb4"), /* 064A, FEF2, FEF3, FEF4 */
31522 "\xd9\x8b"=>array("\xd9\x8b", "\xd9\x8b", "\xd9\x8b", "\xd9\x8b"), /* 064B, 064B, 064B, 064B */
31523 "\xd9\x8c"=>array("\xd9\x8c", "\xd9\x8c", "\xd9\x8c", "\xd9\x8c"), /* 064C, 064C, 064C, 064C */
31524 "\xd9\x8d"=>array("\xd9\x8d", "\xd9\x8d", "\xd9\x8d", "\xd9\x8d"), /* 064D, 064D, 064D, 064D */
31525 "\xd9\x8e"=>array("\xd9\x8e", "\xd9\x8e", "\xd9\x8e", "\xd9\x8e"), /* 064E, 064E, 064E, 064E */
31526 "\xd9\x8f"=>array("\xd9\x8f", "\xd9\x8f", "\xd9\x8f", "\xd9\x8f"), /* 064F, 064F, 064F, 064F */
31527 "\xd9\x90"=>array("\xd9\x90", "\xd9\x90", "\xd9\x90", "\xd9\x90"), /* 0650, 0650, 0650, 0650 */
31528 "\xd9\x91"=>array("\xd9\x91", "\xd9\x91", "\xd9\x91", "\xd9\x91"), /* 0651, 0651, 0651, 0651 */
31529 "\xd9\x92"=>array("\xd9\x92", "\xd9\x92", "\xd9\x92", "\xd9\x92"), /* 0652, 0652, 0652, 0652 */
31530 "\xd9\xb1"=>array("\xd9\xb1", "\xef\xad\x91", "\xd9\xb1", "\xef\xad\x91"), /* 0671, FB51, 0671, FB51 */
31531 "\xd9\xb2"=>array("\xd9\xb2", "\xef\x95\xb2", "\xd9\xb2", "\xef\x95\xb2"), /* 0672, F572, 0672, F572 */
31532 "\xd9\xb5"=>array("\xd9\xb5", "\xef\x95\xb5", "\xd9\xb5", "\xef\x95\xb5"), /* 0675, F575, 0675, F575 */
31533 "\xd9\xb8"=>array("\xd9\xb8", "\xef\x95\xb8", "\xef\xba\x8b", "\xef\xba\x8c"), /* 0678, F578, FE8B, FE8C ( as 0626 ) */
31534 "\xd9\xb9"=>array("\xd9\xb9", "\xef\xad\xa7", "\xef\xad\xa8", "\xef\xad\xa9"), /* 0679, FB67, FB68, FB69 */
31535 "\xd9\xba"=>array("\xd9\xba", "\xef\xad\x9f", "\xef\xad\xa0", "\xef\xad\xa1"), /* 067A, FB5F, FB60, FB61 */
31536 "\xd9\xbb"=>array("\xd9\xbb", "\xef\xad\x93", "\xef\xad\x94", "\xef\xad\x95"), /* 067B, FB53, FB54, FB55 */
31537 "\xd9\xbc"=>array("\xd9\xbc", "\xef\x95\xbc", "\xef\x99\xbc", "\xef\x9d\xbc"), /* 067C, F57C, F67C, F77C */
31538 "\xd9\xbd"=>array("\xd9\xbd", "\xef\x95\xbd", "\xef\x99\xbd", "\xef\x9d\xbd"), /* 067D, F57D, F67D, F77D */
31539 "\xd9\xbe"=>array("\xd9\xbe", "\xef\xad\x97", "\xef\xad\x98", "\xef\xad\x99"), /* 067E, FB57, FB58, FB59 */
31540 "\xd9\xbf"=>array("\xd9\xbf", "\xef\xad\xa3", "\xef\xad\xa4", "\xef\xad\xa5"), /* 067F, FB63, FB64, FB65 */
31541 "\xda\x80"=>array("\xda\x80", "\xef\xad\x9b", "\xef\xad\x9c", "\xef\xad\x9d"), /* 0680, FB5B, FB5C, FB5D */
31542 "\xda\x81"=>array("\xda\x81", "\xef\x96\x81", "\xef\x9a\x81", "\xef\x9e\x81"), /* 0681, F581, F681, F781 */
31543 "\xda\x82"=>array("\xda\x82", "\xef\x96\x82", "\xef\x9a\x82", "\xef\x9e\x82"), /* 0682, F582, F682, F782 */
31544 "\xda\x83"=>array("\xda\x83", "\xef\xad\xb7", "\xef\xad\xb8", "\xef\xad\xb9"), /* 0683, FB77, FB78, FB79 */
31545 "\xda\x84"=>array("\xda\x84", "\xef\xad\xb3", "\xef\xad\xb4", "\xef\xad\xb5"), /* 0684, FB73, FB74, FB75 */
31546 "\xda\x85"=>array("\xda\x85", "\xef\x96\x85", "\xef\x9a\x85", "\xef\x9e\x85"), /* 0685, F585, F685, F785 */
31547 "\xda\x86"=>array("\xda\x86", "\xef\xad\xbb", "\xef\xad\xbc", "\xef\xad\xbd"), /* 0686, FB7B, FB7C, FB7D */
31548 "\xda\x87"=>array("\xda\x87", "\xef\xad\xbf", "\xef\xae\x80", "\xef\xae\x81"), /* 0687, FB7F, FB80, FB81 */
31549 "\xda\x88"=>array("\xda\x88", "\xef\xae\x89", "\xda\x88", "\xda\x88"), /* 0688, FB89, 0688, 0688 */
31550 "\xda\x89"=>array("\xda\x89", "\xef\x96\x89", "\xda\x89", "\xda\x89"), /* 0689, F589, 0689, 0689 */
31551 "\xda\x91"=>array("\xda\x91", "\xef\xae\x8d", "\xda\x91", "\xef\xae\x8d"), /* 0691, FB8D, 0691, FB8D */
31552 "\xda\x93"=>array("\xda\x93", "\xef\x96\x93", "\xda\x93", "\xda\x93"), /* 0693, F593, 0693, 0693 */
31553 "\xda\x96"=>array("\xda\x96", "\xef\x96\x96", "\xda\x96", "\xda\x96"), /* 0696, F596, 0696, 0696 */
31554 "\xda\x98"=>array("\xda\x98", "\xef\xae\x8b", "\xda\x98", "\xef\xae\x8b"), /* 0698, FB8B, 0698, FB8B */
31555 "\xda\x9a"=>array("\xda\x9a", "\xef\x96\x9a", "\xef\x9a\x9a", "\xef\x9e\x9a"), /* 069A, F59A, F69A, F79A */
31556 "\xda\x9b"=>array("\xda\x9b", "\xef\x96\x9b", "\xef\x9a\x9b", "\xef\x9e\x9b"), /* 069B, F59B, F69B, F79B */
31557 "\xda\x9c"=>array("\xda\x9c", "\xef\x96\x9c", "\xef\x9a\x9c", "\xef\x9e\x9c"), /* 069C, F59C, F69C, F79C */
31558 "\xda\x9d"=>array("\xda\x9d", "\xef\x96\x9d", "\xef\x9a\x9d", "\xef\x9e\x9d"), /* 069D, F59D, F69D, F79D */
31559 "\xda\x9e"=>array("\xda\x9e", "\xef\x96\x9e", "\xef\x9a\x9e", "\xef\x9e\x9e"), /* 069E, F59E, F69E, F79E */
31560 "\xda\xa0"=>array("\xda\xa0", "\xef\x96\xa0", "\xef\x9a\xa0", "\xef\x9e\xa0"), /* 06A0, F5A0, F6A0, F7A0 */
31561 "\xda\xa1"=>array("\xda\xa1", "\xef\x96\xa1", "\xef\x9a\xa1", "\xef\x9e\xa1"), /* 06A1, F5A1, F6A1, F7A1 */
31562 "\xda\xa2"=>array("\xda\xa2", "\xef\x96\xa2", "\xef\x9a\xa2", "\xef\x9e\xa2"), /* 06A2, F5A2, F6A2, F7A2 */
31563 "\xda\xa3"=>array("\xda\xa3", "\xef\x96\xa3", "\xef\x9a\xa3", "\xef\x9e\xa3"), /* 06A3, F5A3, F6A3, F7A3 */
31564 "\xda\xa4"=>array("\xda\xa4", "\xef\xad\xab", "\xef\xad\xac", "\xef\xad\xad"), /* 06A4, FB6B, FB6C, FB6D */
31565 "\xda\xa5"=>array("\xda\xa5", "\xef\x96\xa5", "\xef\x9a\xa5", "\xef\x9e\xa5"), /* 06A5, F5A5, F6A5, F7A5 */
31566 "\xda\xa6"=>array("\xda\xa6", "\xef\xad\xaf", "\xef\xad\xb0", "\xef\xad\xb1"), /* 06A6, FB6F, FB70, FB71 */
31567 "\xda\xa9"=>array("\xda\xa9", "\xef\xae\x8f", "\xef\xae\x90", "\xef\xae\x91"), /* 06A9, FB8F, FB90, FB91 */
31568 "\xda\xaa"=>array("\xda\xaa", "\xef\x96\xaa", "\xef\x9a\xaa", "\xef\x9e\xaa"), /* 06AA, F5AA, F6AA, F7AA */
31569 "\xda\xab"=>array("\xda\xab", "\xef\x96\xab", "\xef\x9a\xab", "\xef\x9e\xab"), /* 06AB, F5AB, F6AB, F7AB */
31570 "\xda\xac"=>array("\xda\xac", "\xef\x96\xac", "\xef\x9a\xac", "\xef\x9e\xac"), /* 06AC, F5AC, F6AC, F7AC */
31571 "\xda\xad"=>array("\xda\xad", "\xef\xaf\x94", "\xef\xaf\x95", "\xef\xaf\x96"), /* 06AD, FBD4, FBD5, FBD6 */
31572 "\xda\xae"=>array("\xda\xae", "\xef\x96\xae", "\xef\x9a\xae", "\xef\x9e\xae"), /* 06AE, F5AE, F6AE, F7AE */
31573 "\xda\xaf"=>array("\xda\xaf", "\xef\xae\x93", "\xef\xae\x94", "\xef\xae\x95"), /* 06Af, FB93, FB94, FB95 */
31574 "\xda\xb0"=>array("\xda\xb0", "\xef\x96\xb0", "\xef\x9a\xb0", "\xef\x9e\xb0"), /* 06B0, F5B0, F6B0, F7B0 */
31575 "\xda\xb1"=>array("\xda\xb1", "\xef\xae\x9b", "\xef\xae\x9c", "\xef\xae\x9d"), /* 06B1, FB9B, FB9C, FB9D */
31576 "\xda\xb2"=>array("\xda\xb2", "\xef\x96\xb2", "\xef\x9a\xb2", "\xef\x9e\xb2"), /* 06B2, F5B2, F6B2, F7B2 */
31577 "\xda\xb3"=>array("\xda\xb3", "\xef\xae\x97", "\xef\xae\x98", "\xef\xae\x99"), /* 06B3, FB97, FB98, FB99 */
31578 "\xda\xb4"=>array("\xda\xb4", "\xef\x96\xb4", "\xef\x9a\xb4", "\xef\x9e\xb4"), /* 06B4, F5B4, F6B4, F7B4 */
31579 "\xda\xb5"=>array("\xda\xb5", "\xef\x96\xb5", "\xef\x9a\xb5", "\xef\x9e\xb5"), /* 06B5, F5B5, F6B5, F7B5 */
31580 "\xda\xb6"=>array("\xda\xb6", "\xef\x96\xb6", "\xef\x9a\xb6", "\xef\x9e\xb6"), /* 06B6, F5B6, F6B6, F7B6 */
31581 "\xda\xb7"=>array("\xda\xb7", "\xef\x96\xb7", "\xef\x9a\xb7", "\xef\x9e\xb7"), /* 06B7, F5B7, F6B7, F7B7 */
31582 "\xda\xb8"=>array("\xda\xb8", "\xef\x96\xb8", "\xef\x9a\xb8", "\xef\x9e\xb8"), /* 06B8, F5B8, F6B8, F7B8 */
31583 "\xda\xb9"=>array("\xda\xb9", "\xef\x96\xb9", "\xef\x9a\xb9", "\xef\x9e\xb9"), /* 06B9, F5B9, F6B9, F7B9 */
31584 "\xda\xba"=>array("\xda\xba", "\xef\xae\x9f", "\xda\xba", "\xda\xba"), /* 06BA, FB9F, 06BA, 06BA */
31585 "\xda\xbb"=>array("\xda\xbb", "\xef\xae\xa1", "\xef\xae\xa2", "\xef\xae\xa3"), /* 06BB, FBA1, FBA2, FBA3 */
31586 "\xda\xbc"=>array("\xda\xbc", "\xef\x96\xbc", "\xef\x9a\xbc", "\xef\x9e\xbc"), /* 06BC, F5BC, F6BC, F7BC */
31587 "\xda\xbe"=>array("\xda\xbe", "\xef\xae\xab", "\xef\xae\xac", "\xef\xae\xad"), /* 06BE, FBAB, FBAC, FBAD */
31588 "\xda\xbf"=>array("\xda\xbf", "\xef\x96\xbf", "\xef\x9a\xbf", "\xef\x9e\xbf"), /* 06BF, F5BF, F6BF, F7BF */
31589 "\xdb\x80"=>array("\xdb\x80", "\xef\xae\xa5", "\xdb\x80", "\xef\xae\xa5"), /* 06C0, FBA5, 06C0, FBA5 */
31590 "\xdb\x81"=>array("\xdb\x81", "\xef\xae\xa7", "\xef\xae\xa8", "\xef\xae\xa9"), /* 06C1, FBA7, FBA8, FBA9 */
31591 "\xdb\x8c"=>array("\xdb\x8c", "\xef\xaf\xbd", "\xef\xaf\xbe", "\xef\xaf\xbf"), /* 06CC, FBFD, FBFE, FBFF */
31592 "\xdb\x8d"=>array("\xdb\x8d", "\xef\x97\x8d", "\xdb\x8d", "\xef\x97\x8d"), /* 06CD, F5CD, 06CD, F5CD */
31593 "\xdb\x8e"=>array("\xdb\x8e", "\xef\x97\x8e", "\xef\x9b\x8e", "\xef\x9f\x8e"), /* 06CE, F5CE, F6CE, F7CE */
31594 "\xdb\x90"=>array("\xdb\x90", "\xef\xaf\xa5", "\xef\xaf\xa6", "\xef\xaf\xa7"), /* 06D0, FBE5, FBE6, FBE7 */
31595 "\xdb\x91"=>array("\xdb\x91", "\xef\x97\x91", "\xef\xad\x98", "\xef\xad\x99"), /* 06D1, F5D1, FB58, FB59 Fudge borrows from 067E */
31596 "\xdb\x92"=>array("\xdb\x92", "\xef\xae\xaf", "\xdb\x92", "\xef\xae\xaf"), /* 06D2, FBAF, 06D2, FBAF */
31597 "\xdb\x93"=>array("\xdb\x93", "\xef\xae\xb1", "\xdb\x93", "\xef\xae\xb1"), /* 06D3, FBB1, 06D3, FBB1 */
31598 );
31599
31600
31601 // LAM with ALEF ligatures (Mandatory ligatures)
31602
31603 // U+0644; U+0622; U+0644; U+0623; U+0644; U+0625; U+0644; U+0627;
31604 $this->arabLigGlyphs = "\xd9\x84\xd8\xa2\xd9\x84\xd8\xa3\xd9\x84\xd8\xa5\xd9\x84\xd8\xa7";
31605 $this->arabLigHex = 'FEF5FEF6FEF5FEF6FEF7FEF8FEF7FEF8FEF9FEFAFEF9FEFAFEFBFEFCFEFBFEFC';
31606
31607}
31608
31609// mPDF 5.4.08
31610function ArabJoin($str) {
31611 if (!$this->arabGlyphs) { $this->InitArabic(); }
31612 $crntChar = null;
31613 $prevChar = null;
31614 $nextChar = null;
31615 $output = array();
31616 $chars = preg_split('//u', $str);
31617 $max = count($chars);
31618 for ($i = $max - 1; $i >= 0; $i--) {
31619 $crntChar = $chars[$i];
31620 if ($i > 0){ $prevChar = $chars[$i - 1]; }
31621 else{ $prevChar = NULL; }
31622 if ($prevChar && mb_strpos($this->arabVowels, $prevChar, 0, 'utf-8') !== false) {
31623 $prevChar = $chars[$i - 2];
31624 if ($prevChar && mb_strpos($this->arabVowels, $prevChar, 0, 'utf-8') !== false) {
31625 $prevChar = $chars[$i - 3];
31626 }
31627 }
31628 if ($crntChar && mb_strpos($this->arabVowels, $crntChar, 0, 'utf-8') !== false) {
31629 // If next_char = nextLink && prev_char = prevLink:
31630 // Added && $prevchar (defined) else error on mb_strpos()
31631 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)) {
31632 $output[] = $this->get_arab_glyphs($crntChar, 1); // <final> form
31633 }
31634 else {
31635 $output[] = $this->get_arab_glyphs($crntChar, 0); // <isolated> form
31636 }
31637 continue;
31638 }
31639 // NB = &#x622 &#x623; &#x625; &#x627; &#x644;
31640 if (isset($chars[$i + 1]) && in_array($chars[$i + 1], array("\xd8\xa2","\xd8\xa3","\xd8\xa5","\xd8\xa7")) && $crntChar == "\xd9\x84"){
31641 continue;
31642 }
31643 if (ord($crntChar) < 128) {
31644 $output[] = $crntChar;
31645 $nextChar = $crntChar;
31646 continue;
31647 }
31648 $form = 0;
31649 if ($prevChar == "\xd9\x84" && ($crntChar == "\xd8\xa2" || $crntChar == "\xd8\xa3" || $crntChar == "\xd8\xa5" || $crntChar == "\xd8\xa7")) {
31650 if ($chars[$i - 2] && mb_strpos($this->arabPrevLink, $chars[$i - 2], 0, 'utf-8') !== false) {
31651 $form++; // <final> form
31652 }
31653 $pos = mb_strpos($this->arabLigGlyphs, ($prevChar . $crntChar), 0, 'utf-8');
31654 $pos = $pos*8 + $form*4;
31655 $pres = (mb_substr($this->arabLigHex, $pos, 4, 'utf-8'));
31656 // If presentation forms for mandatory ligatures with diacritics not present (even if remapped from e.g. uni0644uni0625)
31657 // try replacing with mandatory ligature Alef/lam isolated/final FEFB/FEFC + diacritic glyph
31658 if (!$this->_charDefined($this->CurrentFont['cw'], hexdec($pres)) && $this->_charDefined($this->CurrentFont['cw'], hexdec('FEFB'))) {
31659 if ($pres=='FEF5') { $output[] = strcode2utf('&#xFEFB;&#x0653;'); }
31660 else if ($pres=='FEF6') { $output[] = strcode2utf('&#xFEFC;&#x0653;'); }
31661 else if ($pres=='FEF7') { $output[] = strcode2utf('&#xFEFB;&#x0654;'); }
31662 else if ($pres=='FEF8') { $output[] = strcode2utf('&#xFEFC;&#x0654;'); }
31663 else if ($pres=='FEF9') { $output[] = strcode2utf('&#xFEFB;&#x0655;'); }
31664 else if ($pres=='FEFA') { $output[] = strcode2utf('&#xFEFC;&#x0655;'); }
31665 }
31666 else {
31667 $output[] = strcode2utf('&#x' . $pres . ';');
31668 }
31669 $nextChar = $prevChar;
31670 continue;
31671 }
31672 if ($prevChar && mb_strpos($this->arabPrevLink, $prevChar, 0, 'utf-8') !== false) {
31673 $form++;
31674 }
31675 if ($nextChar && mb_strpos($this->arabNextLink, $nextChar, 0, 'utf-8') !== false) {
31676 $form += 2;
31677 }
31678 $output[] = $this->get_arab_glyphs($crntChar, $form) ;
31679 $nextChar = $crntChar;
31680 }
31681 $ra = array_reverse($output);
31682 $s = implode($ra);
31683 return $s;
31684}
31685
31686// mPDF 5.7+
31687function arabJoinPregCallback($matches) {
31688 return $this->ArabJoin(stripslashes($matches[1]));
31689}
31690
31691// mPDF 5.4.08
31692function get_arab_glyphs($char, $type) {
31693 if ($type>0 && isset($this->arabGlyphs[$char])) {
31694 // If presentation form specified FB** - FE** = Arabic presentation Forms
31695 if (preg_match("/[\x{FB50}-\x{FEFF}]/u",$this->arabGlyphs[$char][$type])) {
31696 $unicode = $this->UTF8StringToArray($this->arabGlyphs[$char][$type], false);
31697 if ($this->_charDefined($this->CurrentFont['cw'],$unicode[0])) { return $this->arabGlyphs[$char][$type]; }
31698 else if (isset($this->CurrentFont['unAGlyphs'])) {
31699 $uni = $this->UTF8StringToArray($char, false);
31700 $pua = $uni[0] - 1536 + 62464 + 256*$type ;
31701 if ($this->_charDefined($this->CurrentFont['cw'], $pua)) { return strcode2utf('&#x' . dechex($pua) . ';'); }
31702 else return $char;
31703 }
31704 else return $char;
31705 }
31706 // If PUA form specified and unAGlphs font set F5** F6** F7** = Private use area used by unAGlyphs in mPDF
31707 if (preg_match("/[\x{F500}-\x{F7FF}]/u",$this->arabGlyphs[$char][$type]) && isset($this->CurrentFont['unAGlyphs'])) {
31708 $unicode = $this->UTF8StringToArray($this->arabGlyphs[$char][$type], false);
31709 if ($this->_charDefined($this->CurrentFont['cw'],$unicode[0])) { return $this->arabGlyphs[$char][$type]; }
31710 else return $char;
31711 }
31712 return $this->arabGlyphs[$char][$type];
31713 }
31714 else return $char;
31715}
31716/*-- END RTL --*/
31717
31718
31719
31720//===========================
31721// Functions originally in htmltoolkit - moved mPDF 4.0
31722
31723// Call-back function Used for usort in fn _tableWrite
31724
31725function _cmpdom($a, $b) {
31726 return ($a["dom"] < $b["dom"]) ? -1 : 1;
31727}
31728
31729function mb_strrev($str, $enc = 'utf-8'){
31730 $ch = array();
31731 $ch = preg_split('//u',$str);
31732 $revch = array_reverse($ch);
31733 return implode('',$revch);
31734}
31735
31736/*-- COLUMNS --*/
31737// Callback function from function printcolumnbuffer in mpdf
31738function columnAdjustAdd($type,$k,$xadj,$yadj,$a,$b,$c=0,$d=0,$e=0,$f=0) {
31739 if ($type == 'Td') { // xpos,ypos
31740 $a += ($xadj * $k);
31741 $b -= ($yadj * $k);
31742 return 'BT '.sprintf('%.3F %.3F',$a,$b).' Td';
31743 }
31744 else if ($type == 're') { // xpos,ypos,width,height
31745 $a += ($xadj * $k);
31746 $b -= ($yadj * $k);
31747 return sprintf('%.3F %.3F %.3F %.3F',$a,$b,$c,$d).' re';
31748 }
31749 else if ($type == 'l') { // xpos,ypos,x2pos,y2pos
31750 $a += ($xadj * $k);
31751 $b -= ($yadj * $k);
31752 return sprintf('%.3F %.3F l',$a,$b);
31753 }
31754 else if ($type == 'img') { // width,height,xpos,ypos
31755 $c += ($xadj * $k);
31756 $d -= ($yadj * $k);
31757 return sprintf('q %.3F 0 0 %.3F %.3F %.3F',$a,$b,$c,$d).' cm /'.$e;
31758 }
31759 else if ($type == 'draw') { // xpos,ypos
31760 $a += ($xadj * $k);
31761 $b -= ($yadj * $k);
31762 return sprintf('%.3F %.3F m',$a,$b);
31763 }
31764 else if ($type == 'bezier') { // xpos,ypos,x2pos,y2pos,x3pos,y3pos
31765 $a += ($xadj * $k);
31766 $b -= ($yadj * $k);
31767 $c += ($xadj * $k);
31768 $d -= ($yadj * $k);
31769 $e += ($xadj * $k);
31770 $f -= ($yadj * $k);
31771 return sprintf('%.3F %.3F %.3F %.3F %.3F %.3F',$a,$b,$c,$d,$e,$f).' c';
31772 }
31773}
31774/*-- END COLUMNS --*/
31775
31776
31777
31778function ConvertColor($color="#000000"){
31779 $color = trim(strtolower($color));
31780 $c = false;
31781 if ($color=='transparent') { return false; }
31782 else if ($color=='inherit') { return false; }
31783 else if (isset($this->SVGcolors[$color])) $color = $this->SVGcolors[$color];
31784
31785 if (preg_match('/^[\d]+$/',$color)) { $c = (array(1,$color)); } // i.e. integer only
31786 else if ($color[0] == '#') { //case of #nnnnnn or #nnn
31787 $cor = preg_replace('/\s+.*/','',$color); // in case of Background: #CCC url() x-repeat etc.
31788 if (strlen($cor) == 4) { // Turn #RGB into #RRGGBB
31789 $cor = "#" . $cor[1] . $cor[1] . $cor[2] . $cor[2] . $cor[3] . $cor[3];
31790 }
31791 $r = hexdec(substr($cor, 1, 2));
31792 $g = hexdec(substr($cor, 3, 2));
31793 $b = hexdec(substr($cor, 5, 2));
31794 $c = array(3,$r,$g,$b);
31795 }
31796 else if (preg_match('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl|spot)\((.*?)\)/',$color,$m)) { // mPDF 5.6.05
31797 $type= $m[1];
31798 $cores = explode(",", $m[2]);
31799 $ncores = count($cores);
31800 if (stristr($cores[0],'%') ) {
31801 $cores[0] += 0;
31802 if ($type=='rgb' || $type=='rgba') { $cores[0] = intval($cores[0]*255/100); }
31803 }
31804 if ($ncores>1 && stristr($cores[1],'%') ) {
31805 $cores[1] += 0;
31806 if ($type=='rgb' || $type=='rgba') { $cores[1] = intval($cores[1]*255/100); }
31807 if ($type=='hsl' || $type=='hsla') { $cores[1] = $cores[1]/100; }
31808 }
31809 if ($ncores>2 && stristr($cores[2],'%') ) {
31810 $cores[2] += 0;
31811 if ($type=='rgb' || $type=='rgba') { $cores[2] = intval($cores[2]*255/100); }
31812 if ($type=='hsl' || $type=='hsla') { $cores[2] = $cores[2]/100; }
31813 }
31814 if ($ncores>3 && stristr($cores[3],'%') ) {
31815 $cores[3] += 0;
31816 }
31817
31818 if ($type=='rgb') { $c = array(3,$cores[0],$cores[1],$cores[2]); }
31819 else if ($type=='rgba') { $c = array(5,$cores[0],$cores[1],$cores[2],$cores[3]*100); }
31820 else if ($type=='cmyk' || $type=='device-cmyk') { $c = array(4,$cores[0],$cores[1],$cores[2],$cores[3]); } // mPDF 5.6.05
31821 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
31822 else if ($type=='hsl' || $type=='hsla') {
31823 $conv = $this->hsl2rgb($cores[0]/360,$cores[1],$cores[2]);
31824 if ($type=='hsl') { $c = array(3,$conv[0],$conv[1],$conv[2]); }
31825 else if ($type=='hsla') { $c = array(5,$conv[0],$conv[1],$conv[2],$cores[3]*100); }
31826 }
31827 else if ($type=='spot') {
31828 $name = strtoupper(trim($cores[0]));
31829 // mPDF 5.6.59
31830 if(!isset($this->spotColors[$name])) {
31831 if (isset($cores[5])) { $this->AddSpotColor($cores[0],$cores[2],$cores[3],$cores[4],$cores[5]); }
31832 else { $this->Error('Undefined spot color: '.$name); }
31833 }
31834 $c = array(2,$this->spotColors[$name]['i'],$cores[1]);
31835 }
31836 }
31837
31838
31839 // $this->restrictColorSpace
31840 // 1 - allow GRAYSCALE only [convert CMYK/RGB->gray]
31841 // 2 - allow RGB / SPOT COLOR / Grayscale [convert CMYK->RGB]
31842 // 3 - allow CMYK / SPOT COLOR / Grayscale [convert RGB->CMYK]
31843 if ($this->PDFA || $this->PDFX || $this->restrictColorSpace) {
31844 if ($c[0]==1) { // GRAYSCALE
31845 }
31846 else if ($c[0]==2) { // SPOT COLOR
31847 if (!isset($this->spotColorIDs[$c[1]])) { die('Error: Spot colour has not been defined - '.$this->spotColorIDs[$c[1]]); }
31848 if ($this->PDFA) {
31849 if ($this->PDFA && !$this->PDFAauto) { $this->PDFAXwarnings[] = "Spot color specified '".$this->spotColorIDs[$c[1]]."' (converted to process color)"; }
31850 if ($this->restrictColorSpace!=3) {
31851 $sp = $this->spotColors[$this->spotColorIDs[$c[1]]];
31852 $c = $this->cmyk2rgb(array(4,$sp['c'],$sp['m'],$sp['y'],$sp['k']));
31853 }
31854 }
31855 else if ($this->restrictColorSpace==1) {
31856 $sp = $this->spotColors[$this->spotColorIDs[$c[1]]];
31857 $c = $this->cmyk2gray(array(4,$sp['c'],$sp['m'],$sp['y'],$sp['k']));
31858 }
31859 }
31860 else if ($c[0]==3) { // RGB
31861 if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) {
31862 if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "RGB color specified '".$color."' (converted to CMYK)"; }
31863 $c = $this->rgb2cmyk($c);
31864 }
31865 else if ($this->restrictColorSpace==1) { $c = $this->rgb2gray($c); }
31866 else if ($this->restrictColorSpace==3) { $c = $this->rgb2cmyk($c); }
31867 }
31868 else if ($c[0]==4) { // CMYK
31869 if ($this->PDFA && $this->restrictColorSpace!=3) {
31870 if ($this->PDFA && !$this->PDFAauto) { $this->PDFAXwarnings[] = "CMYK color specified '".$color."' (converted to RGB)"; }
31871 $c = $this->cmyk2rgb($c);
31872 }
31873 else if ($this->restrictColorSpace==1) { $c = $this->cmyk2gray($c); }
31874 else if ($this->restrictColorSpace==2) { $c = $this->cmyk2rgb($c); }
31875 }
31876 else if ($c[0]==5) { // RGBa
31877 if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) {
31878 if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "RGB color with transparency specified '".$color."' (converted to CMYK without transparency)"; }
31879 $c = $this->rgb2cmyk($c);
31880 $c = array(4, $c[1], $c[2], $c[3], $c[4]);
31881 }
31882 else if ($this->PDFA && $this->restrictColorSpace!=3) {
31883 if (!$this->PDFAauto) { $this->PDFAXwarnings[] = "RGB color with transparency specified '".$color."' (converted to RGB without transparency)"; }
31884 $c = $this->rgb2cmyk($c);
31885 $c = array(4, $c[1], $c[2], $c[3], $c[4]);
31886 }
31887 else if ($this->restrictColorSpace==1) { $c = $this->rgb2gray($c); }
31888 else if ($this->restrictColorSpace==3) { $c = $this->rgb2cmyk($c); }
31889 }
31890 else if ($c[0]==6) { // CMYKa
31891 if ($this->PDFA && $this->restrictColorSpace!=3) {
31892 if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "CMYK color with transparency specified '".$color."' (converted to RGB without transparency)"; }
31893 $c = $this->cmyk2rgb($c);
31894 $c = array(3, $c[1], $c[2], $c[3]);
31895 }
31896 else if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) {
31897 if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "CMYK color with transparency specified '".$color."' (converted to CMYK without transparency)"; }
31898 $c = $this->cmyk2rgb($c);
31899 $c = array(3, $c[1], $c[2], $c[3]);
31900 }
31901 else if ($this->restrictColorSpace==1) { $c = $this->cmyk2gray($c); }
31902 else if ($this->restrictColorSpace==2) { $c = $this->cmyk2rgb($c); }
31903 }
31904 }
31905 if (is_array($c)) {
31906 $c = array_pad($c, 6, 0);
31907 $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) );
31908 }
31909 return $cstr;
31910}
31911
31912function rgb2gray($c) {
31913 if (isset($c[4])) { return array(1,(($c[1] * .21) + ($c[2] * .71) + ($c[3] * .07)), ord(1), $c[4]); }
31914 else { return array(1,(($c[1] * .21) + ($c[2] * .71) + ($c[3] * .07))); }
31915}
31916
31917function cmyk2gray($c) {
31918 $rgb = $this->cmyk2rgb($c);
31919 return $this->rgb2gray($rgb);
31920}
31921
31922function rgb2cmyk($c) {
31923 $cyan = 1 - ($c[1] / 255);
31924 $magenta = 1 - ($c[2] / 255);
31925 $yellow = 1 - ($c[3] / 255);
31926 $min = min($cyan, $magenta, $yellow);
31927
31928 if ($min == 1) {
31929 if ($c[0]==5) { return array (6,100,100,100,100, $c[4]); }
31930 else { return array (4,100,100,100,100); }
31931 // For K-Black
31932 //if ($c[0]==5) { return array (6,0,0,0,100, $c[4]); }
31933 //else { return array (4,0,0,0,100); }
31934 }
31935 $K = $min;
31936 $black = 1 - $K;
31937 if ($c[0]==5) { return array (6,($cyan-$K)*100/$black, ($magenta-$K)*100/$black, ($yellow-$K)*100/$black, $K*100, $c[4]); }
31938 else { return array (4,($cyan-$K)*100/$black, ($magenta-$K)*100/$black, ($yellow-$K)*100/$black, $K*100); }
31939}
31940
31941
31942function cmyk2rgb($c) {
31943 $rgb = array();
31944 $colors = 255 - ($c[4]*2.55);
31945 $rgb[0] = intval($colors * (255 - ($c[1]*2.55))/255);
31946 $rgb[1] = intval($colors * (255 - ($c[2]*2.55))/255);
31947 $rgb[2] = intval($colors * (255 - ($c[3]*2.55))/255);
31948 if ($c[0]==6) { return array (5,$rgb[0],$rgb[1],$rgb[2], $c[5]); }
31949 else { return array (3,$rgb[0],$rgb[1],$rgb[2]); }
31950}
31951
31952function rgb2hsl($var_r, $var_g, $var_b) {
31953 $var_min = min($var_r,$var_g,$var_b);
31954 $var_max = max($var_r,$var_g,$var_b);
31955 $del_max = $var_max - $var_min;
31956 $l = ($var_max + $var_min) / 2;
31957 if ($del_max == 0) {
31958 $h = 0;
31959 $s = 0;
31960 }
31961 else {
31962 if ($l < 0.5) { $s = $del_max / ($var_max + $var_min); }
31963 else { $s = $del_max / (2 - $var_max - $var_min); }
31964 $del_r = ((($var_max - $var_r) / 6) + ($del_max / 2)) / $del_max;
31965 $del_g = ((($var_max - $var_g) / 6) + ($del_max / 2)) / $del_max;
31966 $del_b = ((($var_max - $var_b) / 6) + ($del_max / 2)) / $del_max;
31967 if ($var_r == $var_max) { $h = $del_b - $del_g; }
31968 elseif ($var_g == $var_max) { $h = (1 / 3) + $del_r - $del_b; }
31969 elseif ($var_b == $var_max) { $h = (2 / 3) + $del_g - $del_r; };
31970 if ($h < 0) { $h += 1; }
31971 if ($h > 1) { $h -= 1; }
31972 }
31973 return array($h,$s,$l);
31974}
31975
31976
31977function hsl2rgb($h2,$s2,$l2) {
31978 // Input is HSL value of complementary colour, held in $h2, $s, $l as fractions of 1
31979 // Output is RGB in normal 255 255 255 format, held in $r, $g, $b
31980 // Hue is converted using function hue_2_rgb, shown at the end of this code
31981 if ($s2 == 0) {
31982 $r = $l2 * 255;
31983 $g = $l2 * 255;
31984 $b = $l2 * 255;
31985 }
31986 else {
31987 if ($l2 < 0.5) { $var_2 = $l2 * (1 + $s2); }
31988 else { $var_2 = ($l2 + $s2) - ($s2 * $l2); }
31989 $var_1 = 2 * $l2 - $var_2;
31990 $r = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2 + (1 / 3)));
31991 $g = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2));
31992 $b = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2 - (1 / 3)));
31993 }
31994 return array($r,$g,$b);
31995}
31996
31997function hue_2_rgb($v1,$v2,$vh) {
31998 // Function to convert hue to RGB, called from above
31999 if ($vh < 0) { $vh += 1; };
32000 if ($vh > 1) { $vh -= 1; };
32001 if ((6 * $vh) < 1) { return ($v1 + ($v2 - $v1) * 6 * $vh); };
32002 if ((2 * $vh) < 1) { return ($v2); };
32003 if ((3 * $vh) < 2) { return ($v1 + ($v2 - $v1) * ((2 / 3 - $vh) * 6)); };
32004 return ($v1);
32005}
32006
32007function _invertColor($cor) {
32008 if ($cor[0]==3 || $cor[0]==5) { // RGB
32009 return array(3, (255-$cor[1]), (255-$cor[2]), (255-$cor[3]));
32010 }
32011 else if ($cor[0]==4 || $cor[0]==6) { // CMYK
32012 return array(4, (100-$cor[1]), (100-$cor[2]), (100-$cor[3]), (100-$cor[4]));
32013 }
32014 else if ($cor[0]==1) { // Grayscale
32015 return array(1, (255-$cor[1]));
32016 }
32017 // Cannot cope with non-RGB colors at present
32018 die('Error in _invertColor - trying to invert non-RGB color');
32019}
32020
32021function _colAtoString($cor) {
32022 $s = '';
32023 if ($cor{0}==1) $s = 'rgb('.ord($cor{1}).','.ord($cor{1}).','.ord($cor{1}).')';
32024 else if ($cor{0}==2) $s = 'spot('.ord($cor{1}).','.ord($cor{2}).')'; // SPOT COLOR
32025 else if ($cor{0}==3) $s = 'rgb('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).')';
32026 else if ($cor{0}==4) $s = 'cmyk('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).','.ord($cor{4}).')';
32027 else if ($cor{0}==5) $s = 'rgba('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).','.sprintf('%0.2F',ord($cor{4})/100).')';
32028 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).')';
32029 return $s;
32030}
32031
32032function ConvertSize($size=5,$maxsize=0,$fontsize=false,$usefontsize=true){
32033// usefontsize - setfalse for e.g. margins - will ignore fontsize for % values
32034// Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
32035// For text $maxsize = Fontsize
32036// Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize
32037 //Identify size (remember: we are using 'mm' units here)
32038 $size = trim(strtolower($size));
32039
32040 if ( $size == 'thin' ) $size = 1*(25.4/$this->dpi); //1 pixel width for table borders
32041 elseif ( stristr($size,'px') ) $size *= (25.4/$this->dpi); //pixels
32042 elseif ( stristr($size,'cm') ) $size *= 10; //centimeters
32043 elseif ( stristr($size,'mm') ) $size += 0; //millimeters
32044 elseif ( stristr($size,'pt') ) $size *= 25.4/72; //72 pts/inch
32045 elseif ( stristr($size,'rem') ) { // mPDF 5.6.12
32046 $size += 0; //make "0.83rem" become simply "0.83"
32047 $size *= ($this->default_font_size / _MPDFK);
32048 }
32049 elseif ( stristr($size,'em') ) {
32050 $size += 0; //make "0.83em" become simply "0.83"
32051 if ($fontsize) { $size *= $fontsize; }
32052 else { $size *= $maxsize; }
32053 }
32054 elseif ( stristr($size,'%') ) {
32055 $size += 0; //make "90%" become simply "90"
32056 if ($fontsize && $usefontsize) { $size *= $fontsize/100; }
32057 else { $size *= $maxsize/100; }
32058 }
32059 elseif ( stristr($size,'in') ) $size *= 25.4; //inches
32060 elseif ( stristr($size,'pc') ) $size *= 38.1/9; //PostScript picas
32061 elseif ( stristr($size,'ex') ) { // Approximates "ex" as half of font height
32062 $size += 0; //make "3.5ex" become simply "3.5"
32063 if ($fontsize) { $size *= $fontsize/2; }
32064 else { $size *= $maxsize/2; }
32065 }
32066 elseif ( $size == 'medium' ) $size = 3*(25.4/$this->dpi); //3 pixel width for table borders
32067 elseif ( $size == 'thick' ) $size = 5*(25.4/$this->dpi); //5 pixel width for table borders
32068 elseif ($size == 'xx-small') {
32069 if ($fontsize) { $size *= $fontsize*0.7; }
32070 else { $size *= $maxsize*0.7; }
32071 }
32072 elseif ($size == 'x-small') {
32073 if ($fontsize) { $size *= $fontsize*0.77; }
32074 else { $size *= $maxsize*0.77; }
32075 }
32076 elseif ($size == 'small') {
32077 if ($fontsize) { $size *= $fontsize*0.86; }
32078 else { $size *= $maxsize*0.86; }
32079 }
32080 elseif ($size == 'medium') {
32081 if ($fontsize) { $size *= $fontsize; }
32082 else { $size *= $maxsize; }
32083 }
32084 elseif ($size == 'large') {
32085 if ($fontsize) { $size *= $fontsize*1.2; }
32086 else { $size *= $maxsize*1.2; }
32087 }
32088 elseif ($size == 'x-large') {
32089 if ($fontsize) { $size *= $fontsize*1.5; }
32090 else { $size *= $maxsize*1.5; }
32091 }
32092 elseif ($size == 'xx-large') {
32093 if ($fontsize) { $size *= $fontsize*2; }
32094 else { $size *= $maxsize*2; }
32095 }
32096 else $size *= (25.4/$this->dpi); //nothing == px
32097
32098 return $size;
32099}
32100
32101
32102function lesser_entity_decode($html) {
32103 //supports the most used entity codes (only does ascii safe characters)
32104 //$html = str_replace("&nbsp;"," ",$html); // mPDF 5.3.59
32105 $html = str_replace("&lt;","<",$html);
32106 $html = str_replace("&gt;",">",$html);
32107
32108 $html = str_replace("&apos;","'",$html);
32109 $html = str_replace("&quot;",'"',$html);
32110 $html = str_replace("&amp;","&",$html);
32111 return $html;
32112}
32113
32114function AdjustHTML($html, $tabSpaces=8) {
32115 //Try to make the html text more manageable (turning it into XHTML)
32116 if (PHP_VERSION_ID < 50307) {
32117 if (strlen($html) > 100000) {
32118 if (PHP_VERSION_ID < 50200) $this->Error("The HTML code is more than 100,000 characters. You should use WriteHTML() with smaller string lengths.");
32119 else ini_set("pcre.backtrack_limit","1000000");
32120 }
32121 }
32122
32123/*-- ANNOTATIONS --*/
32124 preg_match_all("/(<annotation.*?>)/si", $html, $m);
32125 if (count($m[1])) {
32126 for($i=0;$i<count($m[1]);$i++) {
32127 $sub = preg_replace("/\n/si", "\xbb\xa4\xac", $m[1][$i]);
32128 $html = preg_replace('/'.preg_quote($m[1][$i], '/').'/si', $sub, $html);
32129 }
32130 }
32131/*-- END ANNOTATIONS --*/
32132
32133 preg_match_all("/(<svg.*?<\/svg>)/si", $html, $svgi);
32134 if (count($svgi[0])) {
32135 for($i=0;$i<count($svgi[0]);$i++) {
32136 $file = _MPDF_TEMP_PATH.'_tempSVG'.uniqid(rand(1,100000),true).'_'.$i.'.svg';
32137 //Save to local file
32138 file_put_contents($file, $svgi[0][$i]);
32139 $html = str_replace($svgi[0][$i], '<img src="'.$file.'" />', $html); // mPDF 5.5.18
32140 }
32141 }
32142
32143 //Remove javascript code from HTML (should not appear in the PDF file)
32144 $html = preg_replace('/<script.*?<\/script>/is','',$html);
32145
32146 //Remove special comments
32147 $html = preg_replace('/<!--mpdf/i','',$html);
32148 $html = preg_replace('/mpdf-->/i','',$html);
32149
32150 //Remove comments from HTML (should not appear in the PDF file)
32151 $html = preg_replace('/<!--.*?-->/s','',$html);
32152
32153 $html = preg_replace('/\f/','',$html); //replace formfeed by nothing
32154 $html = preg_replace('/\r/','',$html); //replace carriage return by nothing
32155
32156 // Well formed XHTML end tags
32157 $html = preg_replace('/<(br|hr)\/>/i',"<\\1 />",$html);
32158 // Get rid of empty <thead></thead>
32159 $html = preg_replace('/<thead>\s*<\/thead>/i','',$html);
32160 $html = preg_replace('/<tfoot>\s*<\/tfoot>/i','',$html);
32161 $html = preg_replace('/<table[^>]*>\s*<\/table>/i','',$html);
32162 $html = preg_replace('/<tr>\s*<\/tr>/i','',$html);
32163
32164 // Remove spaces at end of table cells
32165 $html = preg_replace("/[ \n\r]+<\/t(d|h)/",'</t\\1',$html); // mPDF 5.5.09
32166
32167 $html = preg_replace("/[ ]*<dottab\s*[\/]*>[ ]*/",'<dottab />',$html);
32168
32169 // Concatenates any Substitute characters from symbols/dingbats
32170 $html = str_replace('</tts><tts>','|',$html);
32171 $html = str_replace('</ttz><ttz>','|',$html);
32172 $html = str_replace('</tta><tta>','|',$html);
32173
32174 $html = preg_replace('/<br \/>\s*/is',"<br />",$html);
32175
32176 $html = preg_replace('/<wbr[ \/]*>\s*/is',"&#173;",$html); // mPDF 5.6.04
32177
32178 // Preserve '\n's in content between the tags <pre> and </pre>
32179 if (preg_match('/<pre/',$html)) {
32180 $html_a = preg_split('/(\<\/?pre[^\>]*\>)/', $html, -1, 2);
32181 $h = array();
32182 $c=0;
32183 foreach($html_a AS $s) {
32184 if ($c>1 && preg_match('/^<\/pre/i',$s)) { $c--; $s=preg_replace('/<\/pre/i','</innerpre',$s); }
32185 else if ($c>0 && preg_match('/^<pre/i',$s)) { $c++; $s=preg_replace('/<pre/i','<innerpre',$s); }
32186 else if (preg_match('/^<pre/i',$s)) { $c++; }
32187 else if (preg_match('/^<\/pre/i',$s)) { $c--; }
32188 array_push($h, $s);
32189 }
32190 $html = implode("", $h);
32191 }
32192 $thereispre = preg_match_all('#<pre(.*?)>(.*?)</pre>#si',$html,$temp);
32193 // Preserve '\n's in content between the tags <textarea> and </textarea>
32194 $thereistextarea = preg_match_all('#<textarea(.*?)>(.*?)</textarea>#si',$html,$temp2);
32195 $html = preg_replace('/[\n]/',' ',$html); //replace linefeed by spaces
32196 $html = preg_replace('/[\t]/',' ',$html); //replace tabs by spaces
32197
32198 // Converts < to &lt; when not a tag
32199 $html = preg_replace('/<([^!\/a-zA-Z])/i','&lt;\\1',$html);
32200 $html = preg_replace("/[ ]+/",' ',$html);
32201
32202 $html = preg_replace('/\/li>\s+<\/(u|o)l/i','/li></\\1l',$html);
32203 $html = preg_replace('/\/(u|o)l>\s+<\/li/i','/\\1l></li',$html);
32204 $html = preg_replace('/\/li>\s+<\/(u|o)l/i','/li></\\1l',$html);
32205 $html = preg_replace('/\/li>\s+<li/i','/li><li',$html);
32206 $html = preg_replace('/<(u|o)l([^>]*)>[ ]+/i','<\\1l\\2>',$html);
32207 $html = preg_replace('/[ ]+<(u|o)l/i','<\\1l',$html);
32208
32209 $iterator = 0;
32210 while($thereispre) //Recover <pre attributes>content</pre>
32211 {
32212 $temp[2][$iterator] = preg_replace('/<([^a-zA-Z_:])/','&lt;\\1',$temp[2][$iterator]); // mPDF 5.7.2
32213 $temp[2][$iterator] = preg_replace_callback("/^([^\n\t]*?)\t/m", array($this, 'tabs2spaces_callback'), $temp[2][$iterator]); // mPDF 5.7+
32214 $temp[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp[2][$iterator]);
32215
32216 $temp[2][$iterator] = preg_replace('/\n/',"<br />",$temp[2][$iterator]);
32217 $temp[2][$iterator] = str_replace('\\',"\\\\",$temp[2][$iterator]);
32218 //$html = preg_replace('#<pre(.*?)>(.*?)</pre>#si','<erp'.$temp[1][$iterator].'>'.$temp[2][$iterator].'</erp>',$html,1);
32219 $html = preg_replace('#<pre(.*?)>(.*?)</pre>#si','<erp'.$temp[1][$iterator].'>'.str_replace('$','\$',$temp[2][$iterator]).'</erp>',$html,1); // mPDF 5.7+
32220 $thereispre--;
32221 $iterator++;
32222 }
32223 $iterator = 0;
32224 while($thereistextarea) //Recover <textarea attributes>content</textarea>
32225 {
32226 $temp2[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp2[2][$iterator]);
32227 $temp2[2][$iterator] = str_replace('\\',"\\\\",$temp2[2][$iterator]); // mPDF 5.3.88
32228 $html = preg_replace('#<textarea(.*?)>(.*?)</textarea>#si','<aeratxet'.$temp2[1][$iterator].'>'.trim($temp2[2][$iterator]) .'</aeratxet>',$html,1);
32229 $thereistextarea--;
32230 $iterator++;
32231 }
32232 //Restore original tag names
32233 $html = str_replace("<erp","<pre",$html);
32234 $html = str_replace("</erp>","</pre>",$html);
32235 $html = str_replace("<aeratxet","<textarea",$html);
32236 $html = str_replace("</aeratxet>","</textarea>",$html);
32237 $html = str_replace("</innerpre","</pre",$html);
32238 $html = str_replace("<innerpre","<pre",$html);
32239
32240 $html = preg_replace('/<textarea([^>]*)><\/textarea>/si','<textarea\\1> </textarea>',$html);
32241 $html = preg_replace('/(<table[^>]*>)\s*(<caption)(.*?<\/caption>)(.*?<\/table>)/si','\\2 position="top"\\3\\1\\4\\2 position="bottom"\\3',$html); // *TABLES*
32242 $html = preg_replace('/<(h[1-6])([^>]*)(>(?:(?!h[1-6]).)*?<\/\\1>\s*<table)/si','<\\1\\2 keep-with-table="1"\\3',$html); // *TABLES*
32243 $html = preg_replace("/\xbb\xa4\xac/", "\n", $html);
32244
32245 return $html;
32246}
32247// mPDF 5.7+
32248function tabs2spaces_callback($matches) {
32249 return (stripslashes($matches[1]) . str_repeat(' ', $this->tabSpaces - (mb_strlen(stripslashes($matches[1])) % $this->tabSpaces)));
32250}
32251// mPDF 5.7+
32252function date_callback($matches) {
32253 return date($matches[1]);
32254}
32255
32256/*-- LISTS --*/
32257function dec2other($num, $cp) {
32258 $nstr = (string) $num;
32259 $rnum = '';
32260 for ($i=0;$i<strlen($nstr);$i++) {
32261 if ($this->_charDefined($this->CurrentFont['cw'],$cp+intval($nstr[$i]))) { // contains arabic-indic numbers
32262 $rnum .= code2utf($cp+intval($nstr[$i]));
32263 }
32264 else { $rnum .= $nstr[$i]; }
32265 }
32266 return $rnum;
32267}
32268
32269function dec2alpha($valor,$toupper="true"){
32270// returns a string from A-Z to AA-ZZ to AAA-ZZZ
32271// OBS: A = 65 ASCII TABLE VALUE
32272 if (($valor < 1) || ($valor > 18278)) return "?"; //supports 'only' up to 18278
32273 $c1 = $c2 = $c3 = '';
32274 if ($valor > 702) // 3 letters (up to 18278)
32275 {
32276 $c1 = 65 + floor(($valor-703)/676);
32277 $c2 = 65 + floor((($valor-703)%676)/26);
32278 $c3 = 65 + floor((($valor-703)%676)%26);
32279 }
32280 elseif ($valor > 26) // 2 letters (up to 702)
32281 {
32282 $c1 = (64 + (int)(($valor-1) / 26));
32283 $c2 = (64 + (int)($valor % 26));
32284 if ($c2 == 64) $c2 += 26;
32285 }
32286 else // 1 letter (up to 26)
32287 {
32288 $c1 = (64 + $valor);
32289 }
32290 $alpha = chr($c1);
32291 if ($c2 != '') $alpha .= chr($c2);
32292 if ($c3 != '') $alpha .= chr($c3);
32293 if (!$toupper) $alpha = strtolower($alpha);
32294 return $alpha;
32295}
32296
32297
32298function dec2roman($valor,$toupper=true){
32299 //returns a string as a roman numeral
32300 $r1=$r2=$r3=$r4='';
32301 if (($valor >= 5000) || ($valor < 1)) return "?"; //supports 'only' up to 4999
32302 $aux = (int)($valor/1000);
32303 if ($aux!==0)
32304 {
32305 $valor %= 1000;
32306 while($aux!==0)
32307 {
32308 $r1 .= "M";
32309 $aux--;
32310 }
32311 }
32312 $aux = (int)($valor/100);
32313 if ($aux!==0)
32314 {
32315 $valor %= 100;
32316 switch($aux){
32317 case 3: $r2="C";
32318 case 2: $r2.="C";
32319 case 1: $r2.="C"; break;
32320 case 9: $r2="CM"; break;
32321 case 8: $r2="C";
32322 case 7: $r2.="C";
32323 case 6: $r2.="C";
32324 case 5: $r2="D".$r2; break;
32325 case 4: $r2="CD"; break;
32326 default: break;
32327 }
32328 }
32329 $aux = (int)($valor/10);
32330 if ($aux!==0)
32331 {
32332 $valor %= 10;
32333 switch($aux){
32334 case 3: $r3="X";
32335 case 2: $r3.="X";
32336 case 1: $r3.="X"; break;
32337 case 9: $r3="XC"; break;
32338 case 8: $r3="X";
32339 case 7: $r3.="X";
32340 case 6: $r3.="X";
32341 case 5: $r3="L".$r3; break;
32342 case 4: $r3="XL"; break;
32343 default: break;
32344 }
32345 }
32346 switch($valor){
32347 case 3: $r4="I";
32348 case 2: $r4.="I";
32349 case 1: $r4.="I"; break;
32350 case 9: $r4="IX"; break;
32351 case 8: $r4="I";
32352 case 7: $r4.="I";
32353 case 6: $r4.="I";
32354 case 5: $r4="V".$r4; break;
32355 case 4: $r4="IV"; break;
32356 default: break;
32357 }
32358 $roman = $r1.$r2.$r3.$r4;
32359 if (!$toupper) $roman = strtolower($roman);
32360 return $roman;
32361}
32362/*-- END LISTS --*/
32363
32364
32365//===========================
32366/*-- IMPORTS --*/
32367function SetImportUse() {
32368 $this->enableImports = true;
32369 ini_set('auto_detect_line_endings',1);
32370 require_once(_MPDF_PATH."mpdfi/pdf_context.php");
32371 require_once(_MPDF_PATH."mpdfi/pdf_parser.php");
32372 require_once(_MPDF_PATH."mpdfi/fpdi_pdf_parser.php");
32373}
32374
32375// from mPDFI
32376function hex2str($hex) {
32377 return pack("H*", str_replace(array("\r","\n"," "),"", $hex));
32378}
32379
32380function str2hex($str) {
32381 return current(unpack("H*",$str));
32382}
32383
32384
32385function pdf_write_value(&$value) {
32386 switch ($value[0]) {
32387 case PDF_TYPE_NUMERIC :
32388 case PDF_TYPE_TOKEN :
32389 // A numeric value or a token.
32390 // Simply output them
32391 $this->_out($value[1]." ", false);
32392 break;
32393
32394 case PDF_TYPE_ARRAY :
32395 // An array. Output the proper
32396 // structure and move on.
32397 $this->_out("[",false);
32398 for ($i = 0; $i < count($value[1]); $i++) {
32399 $this->pdf_write_value($value[1][$i]);
32400 }
32401 $this->_out("]");
32402 break;
32403
32404 case PDF_TYPE_DICTIONARY :
32405 // A dictionary.
32406 $this->_out("<<",false);
32407 reset ($value[1]);
32408 while (list($k, $v) = each($value[1])) {
32409 $this->_out($k . " ",false);
32410 $this->pdf_write_value($v);
32411 }
32412 $this->_out(">>");
32413 break;
32414
32415 case PDF_TYPE_OBJREF :
32416 // An indirect object reference
32417 // Fill the object stack if needed
32418 $cpfn =& $this->current_parser->filename;
32419 if (!isset($this->_don_obj_stack[$cpfn][$value[1]])) {
32420 $this->_newobj(false,true);
32421 $this->_obj_stack[$cpfn][$value[1]] = array($this->n, $value);
32422 $this->_don_obj_stack[$cpfn][$value[1]] = array($this->n, $value);
32423 }
32424 $objid = $this->_don_obj_stack[$cpfn][$value[1]][0];
32425 $this->_out("{$objid} 0 R"); //{$value[2]}
32426 break;
32427
32428 case PDF_TYPE_STRING :
32429 if ($this->encrypted) {
32430 $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
32431 $value[1] = $this->_escape($value[1]);
32432 }
32433 // A string.
32434 $this->_out('('.$value[1].')');
32435 break;
32436
32437 case PDF_TYPE_STREAM :
32438 // A stream. First, output the
32439 // stream dictionary, then the
32440 // stream data itself.
32441 $this->pdf_write_value($value[1]);
32442 if ($this->encrypted) {
32443 $value[2][1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[2][1]);
32444 }
32445 $this->_out("stream");
32446 $this->_out($value[2][1]);
32447 $this->_out("endstream");
32448 break;
32449
32450 case PDF_TYPE_HEX :
32451 if ($this->encrypted) {
32452 $value[1] = $this->hex2str($value[1]);
32453 $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
32454 // remake hexstring of encrypted string
32455 $value[1] = $this->str2hex($value[1]);
32456 }
32457 $this->_out("<".$value[1].">");
32458 break;
32459
32460 case PDF_TYPE_NULL :
32461 // The null object.
32462 $this->_out("null");
32463 break;
32464 }
32465}
32466
32467// ========== OVERWRITE SEARCH STRING IN A PDF FILE ================
32468function OverWrite($file_in, $search, $replacement, $dest="D", $file_out="mpdf" ) {
32469 $pdf = file_get_contents($file_in);
32470
32471 if (!is_array($search)) {
32472 $x = $search;
32473 $search = array($x);
32474 }
32475 if (!is_array($replacement)) {
32476 $x = $replacement;
32477 $search = array($x);
32478 }
32479
32480 if (!$this->onlyCoreFonts && !$this->usingCoreFont) {
32481 foreach($search AS $k=>$val) {
32482 $search[$k] = $this->UTF8ToUTF16BE($search[$k] , false);
32483 $search[$k] = $this->_escape($search[$k]);
32484 $replacement[$k] = $this->UTF8ToUTF16BE($replacement[$k], false);
32485 $replacement[$k] = $this->_escape($replacement[$k]);
32486 }
32487 }
32488 else {
32489 foreach($replacement AS $k=>$val) {
32490 $replacement[$k] = mb_convert_encoding($replacement[$k],$this->mb_enc,'utf-8');
32491 $replacement[$k] = $this->_escape($replacement[$k]);
32492 }
32493 }
32494
32495 // Get xref into array
32496 $xref = array();
32497 preg_match("/xref\n0 (\d+)\n(.*?)\ntrailer/s",$pdf,$m);
32498 $xref_objid = $m[1];
32499 preg_match_all('/(\d{10}) (\d{5}) (f|n)/',$m[2],$x);
32500 for($i=0; $i<count($x[0]); $i++) {
32501 $xref[] = array(intval($x[1][$i]), $x[2][$i], $x[3][$i]);
32502 }
32503
32504 $changes = array();
32505 preg_match("/<<\s*\/Type\s*\/Pages\s*\/Kids\s*\[(.*?)\]\s*\/Count/s",$pdf,$m);
32506 preg_match_all("/(\d+) 0 R /s",$m[1],$o);
32507 $objlist = $o[1];
32508 foreach($objlist AS $obj) {
32509 if ($this->compress) {
32510 preg_match("/".($obj+1)." 0 obj\n<<\s*\/Filter\s*\/FlateDecode\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m);
32511 }
32512 else {
32513 preg_match("/".($obj+1)." 0 obj\n<<\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m);
32514 }
32515 $s = $m[2];
32516 if (!$s) { continue; }
32517 $oldlen = $m[1];
32518 if ($this->encrypted) {
32519 $s = $this->_RC4($this->_objectkey($obj+1), $s);
32520 }
32521 if ($this->compress) {
32522 $s = gzuncompress($s);
32523 }
32524 foreach($search AS $k=>$val) {
32525 $s = str_replace($search[$k],$replacement[$k],$s);
32526 }
32527 if ($this->compress) {
32528 $s = gzcompress($s);
32529 }
32530 if ($this->encrypted) {
32531 $s = $this->_RC4($this->_objectkey($obj+1), $s);
32532 }
32533 $newlen = strlen($s);
32534 $changes[($xref[$obj+1][0])] = ($newlen - $oldlen) + (strlen($newlen) - strlen($oldlen ));
32535 if ($this->compress) {
32536 $newstr = ($obj+1) . " 0 obj\n<</Filter /FlateDecode /Length ".$newlen.">>\nstream\n".$s."\nendstream\n";
32537 }
32538 else {
32539 $newstr = ($obj+1) . " 0 obj\n<</Length ".$newlen.">>\nstream\n".$s."\nendstream\n";
32540 }
32541 $pdf = str_replace($m[0],$newstr,$pdf);
32542 }
32543
32544 // Update xref in PDF
32545 krsort($changes);
32546 $newxref = "xref\n0 ".$xref_objid."\n";
32547 foreach($xref AS $v) {
32548 foreach($changes AS $ck => $cv) {
32549 if ($v[0] > $ck) { $v[0] += $cv; }
32550 }
32551 $newxref .= sprintf('%010d',$v[0]) . ' ' . $v[1] . ' ' .$v[2] . " \n";
32552 }
32553 $newxref .= "trailer";
32554 $pdf = preg_replace("/xref\n0 \d+\n.*?\ntrailer/s",$newxref,$pdf);
32555
32556 // Update startxref in PDF
32557 preg_match("/startxref\n(\d+)\n%%EOF/s", $pdf, $m);
32558 $startxref = $m[1];
32559 $startxref += array_sum($changes);
32560 $pdf = preg_replace("/startxref\n(\d+)\n%%EOF/s","startxref\n".$startxref."\n%%EOF",$pdf);
32561
32562 // OUTPUT
32563 switch($dest) {
32564 case 'I':
32565 //Send to standard output
32566 if(isset($_SERVER['SERVER_NAME']))
32567 {
32568 //We send to a browser
32569 Header('Content-Type: application/pdf');
32570 Header('Content-Length: '.strlen($pdf));
32571 Header('Content-disposition: inline; filename='.$file_out);
32572 }
32573 echo $pdf;
32574 break;
32575 case 'F':
32576 //Save to local file
32577 if (!$file_out) { $file_out = 'mpdf.pdf'; }
32578 $f=fopen($file_out,'wb');
32579 if(!$f) die('Unable to create output file: '.$file_out);
32580 fwrite($f,$pdf,strlen($pdf));
32581 fclose($f);
32582 break;
32583 case 'S':
32584 //Return as a string
32585 return $pdf;
32586 case 'D':
32587 default:
32588 //Download file
32589 if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
32590 Header('Content-Type: application/force-download');
32591 else
32592 Header('Content-Type: application/octet-stream');
32593 Header('Content-Length: '.strlen($pdf));
32594 Header('Content-disposition: attachment; filename='.$file_out);
32595 echo $pdf;
32596 break;
32597 }
32598}
32599
32600
32601function GetTemplateSize($tplidx, $_w=0, $_h=0) {
32602 if (!$this->tpls[$tplidx])
32603 return false;
32604 $w = $this->tpls[$tplidx]['box']['w'];
32605 $h = $this->tpls[$tplidx]['box']['h'];
32606 if ($_w == 0 and $_h == 0) {
32607 $_w = $w;
32608 $_h = $h;
32609 }
32610 if($_w==0)
32611 $_w=$_h*$w/$h;
32612 if($_h==0)
32613 $_h=$_w*$h/$w;
32614 return array("w" => $_w, "h" => $_h);
32615}
32616
32617// Thumbnails
32618function Thumbnail($file, $npr=3, $spacing=10) { //$npr = number per row
32619 $w = (($this->pgwidth + $spacing)/$npr) - $spacing;
32620 $oldlinewidth = $this->LineWidth;
32621 $this->SetLineWidth(0.02);
32622 $this->SetDColor($this->ConvertColor(0));
32623 $h = 0;
32624 $maxh = 0;
32625 $x = $_x = $this->lMargin;
32626 $_y = $this->tMargin;
32627 if ($this->y==0) { $y = $_y; } else { $y = $this->y; }
32628 $pagecount = $this->SetSourceFile($file);
32629 for ($n = 1; $n <= $pagecount; $n++) {
32630 $tplidx = $this->ImportPage($n);
32631 $size = $this->useTemplate($tplidx, $x, $y, $w);
32632 $this->Rect($x, $y, $size['w'], $size['h']);
32633 $h = max($h, $size['h']);
32634 $maxh = max($h, $maxh);
32635 if ($n % $npr == 0) {
32636 if (($y + $h + $spacing + $maxh)>$this->PageBreakTrigger && $n != $pagecount) {
32637 $this->AddPage();
32638 $x = $_x;
32639 $y = $_y;
32640 }
32641 else {
32642 $y += $h+$spacing ;
32643 $x = $_x;
32644 $h = 0;
32645 }
32646 }
32647 else {
32648 $x += $w+$spacing ;
32649 }
32650 }
32651 $this->SetLineWidth($oldlinewidth);
32652}
32653
32654function SetSourceFile($filename) {
32655 $this->current_filename = $filename;
32656 $fn =& $this->current_filename;
32657 if (!isset($this->parsers[$fn]))
32658 // $this->parsers[$fn] =& new fpdi_pdf_parser($fn,$this);
32659 $this->parsers[$fn] = new fpdi_pdf_parser($fn,$this);
32660 if (!$this->parsers[$fn]->success) {
32661 $this->Error($this->parsers[$fn]->errormsg); // Delete this line to return false on fail
32662 return false;
32663 }
32664 $this->current_parser =& $this->parsers[$fn];
32665 return $this->parsers[$fn]->getPageCount();
32666}
32667function ImportPage($pageno=1, $crop_x=null, $crop_y=null, $crop_w=0, $crop_h=0, $boxName='/CropBox') {
32668 $fn =& $this->current_filename;
32669 $parser =& $this->parsers[$fn];
32670 $parser->setPageno($pageno);
32671
32672 $this->tpl++;
32673 $this->tpls[$this->tpl] = array();
32674 $tpl =& $this->tpls[$this->tpl];
32675 $tpl['parser'] =& $parser;
32676 $tpl['resources'] = $parser->getPageResources();
32677 $tpl['buffer'] = $parser->getContent();
32678 if (!in_array($boxName, $parser->availableBoxes))
32679 return $this->Error(sprintf("Unknown box: %s", $boxName));
32680 $pageboxes = $parser->getPageBoxes($pageno);
32681 /**
32682 * MediaBox
32683 * CropBox: Default -> MediaBox
32684 * BleedBox: Default -> CropBox
32685 * TrimBox: Default -> CropBox
32686 * ArtBox: Default -> CropBox
32687 */
32688 if (!isset($pageboxes[$boxName]) && ($boxName == "/BleedBox" || $boxName == "/TrimBox" || $boxName == "/ArtBox"))
32689 $boxName = "/CropBox";
32690 if (!isset($pageboxes[$boxName]) && $boxName == "/CropBox")
32691 $boxName = "/MediaBox";
32692 if (!isset($pageboxes[$boxName]))
32693 return false;
32694 $box = $pageboxes[$boxName];
32695
32696 $tpl['box'] = $box;
32697 // To build an array that can be used by useTemplate()
32698 $this->tpls[$this->tpl] = array_merge($this->tpls[$this->tpl],$box);
32699 // An imported page will start at 0,0 everytime. Translation will be set in _putformxobjects()
32700 $tpl['x'] = 0;
32701 $tpl['y'] = 0;
32702 $tpl['w'] = $tpl['box']['w'] ;
32703 $tpl['h'] = $tpl['box']['h'] ;
32704 if ($crop_w) { $tpl['box']['w'] = $crop_w; }
32705 if ($crop_h) { $tpl['box']['h'] = $crop_h; }
32706 if (isset($crop_x)) { $tpl['box']['x'] = $crop_x; }
32707 if (isset($crop_y)) {$tpl['box']['y'] = $tpl['h'] - $crop_y - $crop_h ; }
32708
32709 $page =& $parser->pages[$parser->pageno];
32710 // fix for rotated pages
32711 $rotation = $parser->getPageRotation($pageno);
32712
32713 if (isset($rotation[1]) && ($angle = $rotation[1] % 360) != 0 && $tpl['box']['w'] == $tpl['w']) {
32714 $steps = $angle / 90;
32715
32716 $_w = $tpl['w'];
32717 $_h = $tpl['h'];
32718 $tpl['w'] = $steps % 2 == 0 ? $_w : $_h;
32719 $tpl['h'] = $steps % 2 == 0 ? $_h : $_w;
32720 if ($steps % 2 != 0) {
32721 $x = $y = ($steps == 1 || $steps == -3) ? $tpl['h'] : $tpl['w'];
32722 } else {
32723 $x = $tpl['w'];
32724 $y = $tpl['h'];
32725 }
32726 $cx=($x/2+$tpl['box']['x'])*_MPDFK;
32727 $cy=($y/2+$tpl['box']['y'])*_MPDFK;
32728 $angle*=-1;
32729 $angle*=M_PI/180;
32730 $c=cos($angle);
32731 $s=sin($angle);
32732 $tpl['box']['w'] = $tpl['w'] ;
32733 $tpl['box']['h'] = $tpl['h'] ;
32734 $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']);
32735 }
32736 return $this->tpl;
32737}
32738function UseTemplate($tplidx, $_x=null, $_y=null, $_w=0, $_h=0) {
32739 if (!isset($this->tpls[$tplidx]))
32740 $this->Error("Template does not exist!");
32741 if($this->state==0) { $this->AddPage(); }
32742 $out = 'q 0 J 1 w 0 j 0 G'."\n"; // reset standard values
32743 $x = $this->tpls[$tplidx]['x'];
32744 $y = $this->tpls[$tplidx]['y'];
32745 $w = $this->tpls[$tplidx]['w'];
32746 $h = $this->tpls[$tplidx]['h'];
32747 if ($_x == null) { $_x = $x; }
32748 if ($_y == null) { $_y = $y; }
32749 if ($_x === -1) { $_x = $this->x; }
32750 if ($_y === -1) { $_y = $this->y; }
32751
32752 $wh = $this->getTemplateSize($tplidx,$_w,$_h);
32753 $_w = $wh['w'];
32754 $_h = $wh['h'];
32755 $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";
32756 $out .= $this->tplprefix.$tplidx." Do Q\n";
32757
32758 $s = array("w" => $_w, "h" => $_h);
32759 $out .= "Q\n";
32760 $this->pages[$this->page] = $out . $this->pages[$this->page];
32761 return $s;
32762}
32763function SetPageTemplate($tplidx='') {
32764 if (!isset($this->tpls[$tplidx])) {
32765 $this->pageTemplate = '';
32766 return false;
32767 }
32768 $this->pageTemplate = $tplidx;
32769}
32770function SetDocTemplate($file='', $continue=0) {
32771 $this->docTemplate = $file;
32772 $this->docTemplateContinue = $continue;
32773}
32774/*-- END IMPORTS --*/
32775
32776
32777/* ---------------------------------------------- */
32778/* ---------------------------------------------- */
32779/* ---------------------------------------------- */
32780/* ---------------------------------------------- */
32781/* ---------------------------------------------- */
32782
32783// JAVASCRIPT
32784function _set_object_javascript ($string) {
32785 $this->_newobj();
32786 $this->_out('<<');
32787 $this->_out('/S /JavaScript ');
32788 $this->_out('/JS '.$this->_textstring($string));
32789 $this->_out('>>');
32790 $this->_out('endobj');
32791}
32792
32793function SetJS($script) {
32794 $this->js = $script;
32795}
32796
32797
32798
32799
32800}//end of Class
32801
32802
32803
32804
32805?> \ 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
index fc42d574..00000000
--- a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php
+++ /dev/null
@@ -1,98 +0,0 @@
1<?php
2//
3// FPDI - Version 1.3.1
4//
5// Copyright 2004-2009 Setasign - Jan Slabon
6//
7// Licensed under the Apache License, Version 2.0 (the "License");
8// you may not use this file except in compliance with the License.
9// You may obtain a copy of the License at
10//
11// http://www.apache.org/licenses/LICENSE-2.0
12//
13// Unless required by applicable law or agreed to in writing, software
14// distributed under the License is distributed on an "AS IS" BASIS,
15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16// See the License for the specific language governing permissions and
17// limitations under the License.
18//
19
20if (!defined('ORD_z'))
21 define('ORD_z',ord('z'));
22if (!defined('ORD_exclmark'))
23 define('ORD_exclmark', ord('!'));
24if (!defined('ORD_u'))
25 define('ORD_u', ord('u'));
26if (!defined('ORD_tilde'))
27 define('ORD_tilde', ord('~'));
28
29class FilterASCII85 {
30
31 function error($msg) {
32 die($msg);
33 }
34
35 function decode($in) {
36 $out = '';
37 $state = 0;
38 $chn = null;
39
40 $l = strlen($in);
41
42 for ($k = 0; $k < $l; ++$k) {
43 $ch = ord($in[$k]) & 0xff;
44
45 if ($ch == ORD_tilde) {
46 break;
47 }
48 if (preg_match('/^\s$/',chr($ch))) {
49 continue;
50 }
51 if ($ch == ORD_z && $state == 0) {
52 $out .= chr(0).chr(0).chr(0).chr(0);
53 continue;
54 }
55 if ($ch < ORD_exclmark || $ch > ORD_u) {
56 $this->error('Illegal character in ASCII85Decode.');
57 }
58
59 $chn[$state++] = $ch - ORD_exclmark;
60
61 if ($state == 5) {
62 $state = 0;
63 $r = 0;
64 for ($j = 0; $j < 5; ++$j)
65 $r = $r * 85 + $chn[$j];
66 $out .= chr($r >> 24);
67 $out .= chr($r >> 16);
68 $out .= chr($r >> 8);
69 $out .= chr($r);
70 }
71 }
72 $r = 0;
73
74 if ($state == 1)
75 $this->error('Illegal length in ASCII85Decode.');
76 if ($state == 2) {
77 $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85;
78 $out .= chr($r >> 24);
79 }
80 else if ($state == 3) {
81 $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + ($chn[2]+1) * 85 * 85;
82 $out .= chr($r >> 24);
83 $out .= chr($r >> 16);
84 }
85 else if ($state == 4) {
86 $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + $chn[2] * 85 * 85 + ($chn[3]+1) * 85 ;
87 $out .= chr($r >> 24);
88 $out .= chr($r >> 16);
89 $out .= chr($r >> 8);
90 }
91
92 return $out;
93 }
94
95 function encode($in) {
96 $this->error("ASCII85 encoding not implemented.");
97 }
98} \ 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
index 5867603f..00000000
--- a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php
+++ /dev/null
@@ -1,154 +0,0 @@
1<?php
2//
3// FPDI - Version 1.3.1
4//
5// Copyright 2004-2009 Setasign - Jan Slabon
6//
7// Licensed under the Apache License, Version 2.0 (the "License");
8// you may not use this file except in compliance with the License.
9// You may obtain a copy of the License at
10//
11// http://www.apache.org/licenses/LICENSE-2.0
12//
13// Unless required by applicable law or agreed to in writing, software
14// distributed under the License is distributed on an "AS IS" BASIS,
15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16// See the License for the specific language governing permissions and
17// limitations under the License.
18//
19
20class FilterLZW {
21
22 var $sTable = array();
23 var $data = null;
24 var $dataLength = 0;
25 var $tIdx;
26 var $bitsToGet = 9;
27 var $bytePointer;
28 var $bitPointer;
29 var $nextData = 0;
30 var $nextBits = 0;
31 var $andTable = array(511, 1023, 2047, 4095);
32
33 function error($msg) {
34 die($msg);
35 }
36
37 /**
38 * Method to decode LZW compressed data.
39 *
40 * @param string data The compressed data.
41 */
42 function decode($data) {
43
44 if($data[0] == 0x00 && $data[1] == 0x01) {
45 $this->error('LZW flavour not supported.');
46 }
47
48 $this->initsTable();
49
50 $this->data = $data;
51 $this->dataLength = strlen($data);
52
53 // Initialize pointers
54 $this->bytePointer = 0;
55 $this->bitPointer = 0;
56
57 $this->nextData = 0;
58 $this->nextBits = 0;
59
60 $oldCode = 0;
61
62 $string = '';
63 $uncompData = '';
64
65 while (($code = $this->getNextCode()) != 257) {
66 if ($code == 256) {
67 $this->initsTable();
68 $code = $this->getNextCode();
69
70 if ($code == 257) {
71 break;
72 }
73
74 $uncompData .= $this->sTable[$code];
75 $oldCode = $code;
76
77 } else {
78
79 if ($code < $this->tIdx) {
80 $string = $this->sTable[$code];
81 $uncompData .= $string;
82
83 $this->addStringToTable($this->sTable[$oldCode], $string[0]);
84 $oldCode = $code;
85 } else {
86 $string = $this->sTable[$oldCode];
87 $string = $string.$string[0];
88 $uncompData .= $string;
89
90 $this->addStringToTable($string);
91 $oldCode = $code;
92 }
93 }
94 }
95
96 return $uncompData;
97 }
98
99
100 /**
101 * Initialize the string table.
102 */
103 function initsTable() {
104 $this->sTable = array();
105
106 for ($i = 0; $i < 256; $i++)
107 $this->sTable[$i] = chr($i);
108
109 $this->tIdx = 258;
110 $this->bitsToGet = 9;
111 }
112
113 /**
114 * Add a new string to the string table.
115 */
116 function addStringToTable ($oldString, $newString='') {
117 $string = $oldString.$newString;
118
119 // Add this new String to the table
120 $this->sTable[$this->tIdx++] = $string;
121
122 if ($this->tIdx == 511) {
123 $this->bitsToGet = 10;
124 } else if ($this->tIdx == 1023) {
125 $this->bitsToGet = 11;
126 } else if ($this->tIdx == 2047) {
127 $this->bitsToGet = 12;
128 }
129 }
130
131 // Returns the next 9, 10, 11 or 12 bits
132 function getNextCode() {
133 if ($this->bytePointer == $this->dataLength) {
134 return 257;
135 }
136
137 $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
138 $this->nextBits += 8;
139
140 if ($this->nextBits < $this->bitsToGet) {
141 $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
142 $this->nextBits += 8;
143 }
144
145 $code = ($this->nextData >> ($this->nextBits - $this->bitsToGet)) & $this->andTable[$this->bitsToGet-9];
146 $this->nextBits -= $this->bitsToGet;
147
148 return $code;
149 }
150
151 function encode($in) {
152 $this->error("LZW encoding not implemented.");
153 }
154} \ 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
index e0f02391..00000000
--- a/inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php
+++ /dev/null
@@ -1,363 +0,0 @@
1<?php
2//
3// FPDI - Version 1.2
4//
5// Copyright 2004-2007 Setasign - Jan Slabon
6//
7// Licensed under the Apache License, Version 2.0 (the "License");
8// you may not use this file except in compliance with the License.
9// You may obtain a copy of the License at
10//
11// http://www.apache.org/licenses/LICENSE-2.0
12//
13// Unless required by applicable law or agreed to in writing, software
14// distributed under the License is distributed on an "AS IS" BASIS,
15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16// See the License for the specific language governing permissions and
17// limitations under the License.
18//
19
20
21class fpdi_pdf_parser extends pdf_parser {
22
23 /**
24 * Pages
25 * Index beginns at 0
26 *
27 * @var array
28 */
29 var $pages;
30
31 /**
32 * Page count
33 * @var integer
34 */
35 var $page_count;
36
37 /**
38 * actual page number
39 * @var integer
40 */
41 var $pageno;
42
43
44 /**
45 * FPDI Reference
46 * @var object
47 */
48 var $fpdi;
49
50 /**
51 * Available BoxTypes
52 *
53 * @var array
54 */
55 var $availableBoxes = array("/MediaBox","/CropBox","/BleedBox","/TrimBox","/ArtBox");
56
57 /**
58 * Constructor
59 *
60 * @param string $filename Source-Filename
61 * @param object $fpdi Object of type fpdi
62 */
63 function fpdi_pdf_parser($filename,&$fpdi) {
64 $this->fpdi =& $fpdi;
65 $this->filename = $filename;
66
67 parent::pdf_parser($filename);
68 if ($this->success == false) { return false; }
69
70 // resolve Pages-Dictonary
71 $pages = $this->pdf_resolve_object($this->c, $this->root[1][1]['/Pages']);
72 if ($this->success == false) { return false; }
73
74 // Read pages
75 $this->read_pages($this->c, $pages, $this->pages);
76 if ($this->success == false) { return false; }
77
78 // count pages;
79 $this->page_count = count($this->pages);
80 }
81
82
83 /**
84 * Get pagecount from sourcefile
85 *
86 * @return int
87 */
88 function getPageCount() {
89 return $this->page_count;
90 }
91
92
93 /**
94 * Set pageno
95 *
96 * @param int $pageno Pagenumber to use
97 */
98 function setPageno($pageno) {
99 $pageno = ((int) $pageno) - 1;
100
101 if ($pageno < 0 || $pageno >= $this->getPageCount()) {
102 $this->fpdi->error("Pagenumber is wrong!");
103 }
104
105 $this->pageno = $pageno;
106 }
107
108 /**
109 * Get page-resources from current page
110 *
111 * @return array
112 */
113 function getPageResources() {
114 return $this->_getPageResources($this->pages[$this->pageno]);
115 }
116
117 /**
118 * Get page-resources from /Page
119 *
120 * @param array $obj Array of pdf-data
121 */
122 function _getPageResources ($obj) { // $obj = /Page
123 $obj = $this->pdf_resolve_object($this->c, $obj);
124
125 // If the current object has a resources
126 // dictionary associated with it, we use
127 // it. Otherwise, we move back to its
128 // parent object.
129 if (isset ($obj[1][1]['/Resources'])) {
130 $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Resources']);
131 if ($res[0] == PDF_TYPE_OBJECT)
132 return $res[1];
133 return $res;
134 } else {
135 if (!isset ($obj[1][1]['/Parent'])) {
136 return false;
137 } else {
138 $res = $this->_getPageResources($obj[1][1]['/Parent']);
139 if ($res[0] == PDF_TYPE_OBJECT)
140 return $res[1];
141 return $res;
142 }
143 }
144 }
145
146
147 /**
148 * Get content of current page
149 *
150 * If more /Contents is an array, the streams are concated
151 *
152 * @return string
153 */
154 function getContent() {
155 $buffer = "";
156
157 if (isset($this->pages[$this->pageno][1][1]['/Contents'])) {
158 $contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']);
159 foreach($contents AS $tmp_content) {
160 $buffer .= $this->_rebuildContentStream($tmp_content).' ';
161 }
162 }
163
164 return $buffer;
165 }
166
167
168 /**
169 * Resolve all content-objects
170 *
171 * @param array $content_ref
172 * @return array
173 */
174 function _getPageContent($content_ref) {
175 $contents = array();
176
177 if ($content_ref[0] == PDF_TYPE_OBJREF) {
178 $content = $this->pdf_resolve_object($this->c, $content_ref);
179 if ($content[1][0] == PDF_TYPE_ARRAY) {
180 $contents = $this->_getPageContent($content[1]);
181 } else {
182 $contents[] = $content;
183 }
184 } else if ($content_ref[0] == PDF_TYPE_ARRAY) {
185 foreach ($content_ref[1] AS $tmp_content_ref) {
186 $contents = array_merge($contents,$this->_getPageContent($tmp_content_ref));
187 }
188 }
189
190 return $contents;
191 }
192
193
194 /**
195 * Rebuild content-streams
196 *
197 * @param array $obj
198 * @return string
199 */
200 function _rebuildContentStream($obj) {
201 $filters = array();
202
203 if (isset($obj[1][1]['/Filter'])) {
204 $_filter = $obj[1][1]['/Filter'];
205
206 if ($_filter[0] == PDF_TYPE_TOKEN) {
207 $filters[] = $_filter;
208 } else if ($_filter[0] == PDF_TYPE_ARRAY) {
209 $filters = $_filter[1];
210 }
211 }
212
213 $stream = $obj[2][1];
214
215 foreach ($filters AS $_filter) {
216 switch ($_filter[1]) {
217 case "/FlateDecode":
218 if (function_exists('gzuncompress')) {
219 $stream = (strlen($stream) > 0) ? @gzuncompress($stream) : '';
220 } else {
221 $this->fpdi->error(sprintf("To handle %s filter, please compile php with zlib support.",$_filter[1]));
222 }
223 if ($stream === false) {
224 $this->fpdi->error("Error while decompressing stream.");
225 }
226 break;
227 // mPDF 4.2.003
228 case '/LZWDecode':
229 include_once(_MPDF_PATH.'mpdfi/filters/FilterLZW.php');
230 // mPDF 5.0 Removed pass by reference =&
231 $decoder = new FilterLZW();
232 $stream = $decoder->decode($stream);
233 break;
234 case '/ASCII85Decode':
235 include_once(_MPDF_PATH.'mpdfi/filters/FilterASCII85.php');
236 // mPDF 5.0 Removed pass by reference =&
237 $decoder = new FilterASCII85();
238 $stream = $decoder->decode($stream);
239 break;
240 case null:
241 $stream = $stream;
242 break;
243 default:
244 $this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1]));
245 }
246 }
247
248 return $stream;
249 }
250
251
252 /**
253 * Get a Box from a page
254 * Arrayformat is same as used by fpdf_tpl
255 *
256 * @param array $page a /Page
257 * @param string $box_index Type of Box @see $availableBoxes
258 * @return array
259 */
260 function getPageBox($page, $box_index) {
261 $page = $this->pdf_resolve_object($this->c,$page);
262 $box = null;
263 if (isset($page[1][1][$box_index]))
264 $box =& $page[1][1][$box_index];
265
266 if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) {
267 $tmp_box = $this->pdf_resolve_object($this->c,$box);
268 $box = $tmp_box[1];
269 }
270
271 if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) {
272 $b =& $box[1];
273 return array("x" => $b[0][1]/_MPDFK,
274 "y" => $b[1][1]/_MPDFK,
275 "w" => abs($b[0][1]-$b[2][1])/_MPDFK,
276 "h" => abs($b[1][1]-$b[3][1])/_MPDFK); // mPDF 5.3.90
277 } else if (!isset ($page[1][1]['/Parent'])) {
278 return false;
279 } else {
280 return $this->getPageBox($this->pdf_resolve_object($this->c, $page[1][1]['/Parent']), $box_index);
281 }
282 }
283
284 function getPageBoxes($pageno) {
285 return $this->_getPageBoxes($this->pages[$pageno-1]);
286 }
287
288 /**
289 * Get all Boxes from /Page
290 *
291 * @param array a /Page
292 * @return array
293 */
294 function _getPageBoxes($page) {
295 $boxes = array();
296
297 foreach($this->availableBoxes AS $box) {
298 if ($_box = $this->getPageBox($page,$box)) {
299 $boxes[$box] = $_box;
300 }
301 }
302
303 return $boxes;
304 }
305
306 function getPageRotation($pageno) {
307 return $this->_getPageRotation($this->pages[$pageno-1]);
308 }
309
310 function _getPageRotation ($obj) { // $obj = /Page
311 $obj = $this->pdf_resolve_object($this->c, $obj);
312 if (isset ($obj[1][1]['/Rotate'])) {
313 $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Rotate']);
314 if ($res[0] == PDF_TYPE_OBJECT)
315 return $res[1];
316 return $res;
317 } else {
318 if (!isset ($obj[1][1]['/Parent'])) {
319 return false;
320 } else {
321 $res = $this->_getPageRotation($obj[1][1]['/Parent']);
322 if ($res[0] == PDF_TYPE_OBJECT)
323 return $res[1];
324 return $res;
325 }
326 }
327 }
328
329 /**
330 * Read all /Page(es)
331 *
332 * @param object pdf_context
333 * @param array /Pages
334 * @param array the result-array
335 */
336 function read_pages (&$c, &$pages, &$result) {
337 // Get the kids dictionary
338 $kids = $this->pdf_resolve_object ($c, $pages[1][1]['/Kids']);
339
340 if (!is_array($kids)) {
341 // mPDF 4.0
342 $this->success = false;
343 $this->errormsg = sprintf("Cannot find /Kids in current /Page-Dictionary");
344 return false;
345 }
346 foreach ($kids[1] as $v) {
347 $pg = $this->pdf_resolve_object ($c, $v);
348 if ($pg[1][1]['/Type'][1] === '/Pages') {
349 // If one of the kids is an embedded
350 // /Pages array, resolve it as well.
351 $this->read_pages ($c, $pg, $result);
352 } else {
353 $result[] = $pg;
354 }
355 }
356 }
357
358
359
360
361}
362
363?> \ 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
index 6cf4bdcc..00000000
--- a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php
+++ /dev/null
@@ -1,78 +0,0 @@
1<?php
2//
3// FPDI - Version 1.2
4//
5// Copyright 2004-2007 Setasign - Jan Slabon
6//
7// Licensed under the Apache License, Version 2.0 (the "License");
8// you may not use this file except in compliance with the License.
9// You may obtain a copy of the License at
10//
11// http://www.apache.org/licenses/LICENSE-2.0
12//
13// Unless required by applicable law or agreed to in writing, software
14// distributed under the License is distributed on an "AS IS" BASIS,
15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16// See the License for the specific language governing permissions and
17// limitations under the License.
18//
19
20class pdf_context {
21
22 var $file;
23 var $buffer;
24 var $offset;
25 var $length;
26
27 var $stack;
28
29 // Constructor
30
31 function pdf_context($f) {
32 $this->file = $f;
33 $this->reset();
34 }
35
36 // Optionally move the file
37 // pointer to a new location
38 // and reset the buffered data
39
40 function reset($pos = null, $l = 100) {
41 if (!is_null ($pos)) {
42 fseek ($this->file, $pos);
43 }
44
45 $this->buffer = $l > 0 ? fread($this->file, $l) : '';
46 $this->offset = 0;
47 $this->length = strlen($this->buffer);
48 $this->stack = array();
49 }
50
51 // Make sure that there is at least one
52 // character beyond the current offset in
53 // the buffer to prevent the tokenizer
54 // from attempting to access data that does
55 // not exist
56
57 function ensure_content() {
58 if ($this->offset >= $this->length - 1) {
59 return $this->increase_length();
60 } else {
61 return true;
62 }
63 }
64
65 // Forcefully read more data into the buffer
66
67 function increase_length($l=100) {
68 if (feof($this->file)) {
69 return false;
70 } else {
71 $this->buffer .= fread($this->file, $l);
72 $this->length = strlen($this->buffer);
73 return true;
74 }
75 }
76
77}
78?> \ 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
index c7d69e2c..00000000
--- a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php
+++ /dev/null
@@ -1,690 +0,0 @@
1<?php
2//
3// FPDI - Version 1.2
4//
5// Copyright 2004-2007 Setasign - Jan Slabon
6//
7// Licensed under the Apache License, Version 2.0 (the "License");
8// you may not use this file except in compliance with the License.
9// You may obtain a copy of the License at
10//
11// http://www.apache.org/licenses/LICENSE-2.0
12//
13// Unless required by applicable law or agreed to in writing, software
14// distributed under the License is distributed on an "AS IS" BASIS,
15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16// See the License for the specific language governing permissions and
17// limitations under the License.
18//
19
20if (!defined ('PDF_TYPE_NULL'))
21 define ('PDF_TYPE_NULL', 0);
22if (!defined ('PDF_TYPE_NUMERIC'))
23 define ('PDF_TYPE_NUMERIC', 1);
24if (!defined ('PDF_TYPE_TOKEN'))
25 define ('PDF_TYPE_TOKEN', 2);
26if (!defined ('PDF_TYPE_HEX'))
27 define ('PDF_TYPE_HEX', 3);
28if (!defined ('PDF_TYPE_STRING'))
29 define ('PDF_TYPE_STRING', 4);
30if (!defined ('PDF_TYPE_DICTIONARY'))
31 define ('PDF_TYPE_DICTIONARY', 5);
32if (!defined ('PDF_TYPE_ARRAY'))
33 define ('PDF_TYPE_ARRAY', 6);
34if (!defined ('PDF_TYPE_OBJDEC'))
35 define ('PDF_TYPE_OBJDEC', 7);
36if (!defined ('PDF_TYPE_OBJREF'))
37 define ('PDF_TYPE_OBJREF', 8);
38if (!defined ('PDF_TYPE_OBJECT'))
39 define ('PDF_TYPE_OBJECT', 9);
40if (!defined ('PDF_TYPE_STREAM'))
41 define ('PDF_TYPE_STREAM', 10);
42
43
44class pdf_parser {
45
46 /**
47 * Filename
48 * @var string
49 */
50 var $filename;
51
52 /**
53 * File resource
54 * @var resource
55 */
56 var $f;
57
58 /**
59 * PDF Context
60 * @var object pdf_context-Instance
61 */
62 var $c;
63
64 /**
65 * xref-Data
66 * @var array
67 */
68 var $xref;
69
70 /**
71 * root-Object
72 * @var array
73 */
74 var $root;
75
76 // mPDF 4.0 Added flag to show success on loading file
77 var $success;
78 var $errormsg;
79
80 /**
81 * Constructor
82 *
83 * @param string $filename Source-Filename
84 */
85 function pdf_parser($filename) {
86 $this->filename = $filename;
87 // mPDF 4.0
88 $this->success = true;
89
90 $this->f = @fopen($this->filename, "rb");
91
92 if (!$this->f) {
93 $this->success = false;
94 $this->errormsg = sprintf("Cannot open %s !", $filename);
95 return false;
96 }
97 // mPDF 5.0 Removed pass by reference =&
98 $this->c = new pdf_context($this->f);
99 // Read xref-Data
100 $offset = $this->pdf_find_xref();
101 if ($offset===false) {
102 $this->success = false;
103 $this->errormsg = sprintf("Cannot open %s !", $filename);
104 return false;
105 }
106 $this->pdf_read_xref($this->xref, $offset);
107 if ($this->success == false) { return false; }
108
109 // Check for Encryption
110 $this->getEncryption();
111 if ($this->success == false) { return false; }
112
113 // Read root
114 $this->pdf_read_root();
115 if ($this->success == false) { return false; }
116 }
117
118 /**
119 * Close the opened file
120 */
121 function closeFile() {
122 if (isset($this->f)) {
123 fclose($this->f);
124 unset($this->f);
125 }
126 }
127
128 /**
129 * Print Error and die
130 *
131 * @param string $msg Error-Message
132 */
133 function error($msg) {
134 die("<b>PDF-Parser Error:</b> ".$msg);
135 }
136
137 /**
138 * Check Trailer for Encryption
139 */
140 function getEncryption() {
141 if (isset($this->xref['trailer'][1]['/Encrypt'])) {
142 // mPDF 4.0
143 $this->success = false;
144 $this->errormsg = sprintf("File is encrypted!");
145 return false;
146 }
147 }
148
149 /**
150 * Find/Return /Root
151 *
152 * @return array
153 */
154 function pdf_find_root() {
155 if ($this->xref['trailer'][1]['/Root'][0] != PDF_TYPE_OBJREF) {
156 // mPDF 4.0
157 $this->success = false;
158 $this->errormsg = sprintf("Wrong Type of Root-Element! Must be an indirect reference");
159 return false;
160 }
161 return $this->xref['trailer'][1]['/Root'];
162 }
163
164 /**
165 * Read the /Root
166 */
167 function pdf_read_root() {
168 // read root
169 $root = $this->pdf_find_root();
170 if ($root ===false) {
171 $this->success = false;
172 return false;
173 }
174 $this->root = $this->pdf_resolve_object($this->c, $root);
175 }
176
177 /**
178 * Find the xref-Table
179 */
180 function pdf_find_xref() {
181 fseek ($this->f, -min(filesize($this->filename),1500), SEEK_END);
182 $data = fread($this->f, 1500);
183
184 $pos = strlen($data) - strpos(strrev($data), strrev('startxref'));
185 $data = substr($data, $pos);
186
187 if (!preg_match('/\s*(\d+).*$/s', $data, $matches)) {
188 // mPDF 4.0
189 $this->success = false;
190 $this->errormsg = sprintf("Unable to find pointer to xref table");
191 return false;
192 }
193
194 return (int) $matches[1];
195 }
196
197 /**
198 * Read xref-table
199 *
200 * @param array $result Array of xref-table
201 * @param integer $offset of xref-table
202 * @param integer $start start-position in xref-table
203 * @param integer $end end-position in xref-table
204 */
205 function pdf_read_xref(&$result, $offset, $start = null, $end = null) {
206 if (is_null ($start) || is_null ($end)) {
207 fseek($this->f, $o_pos = $offset);
208 $data = trim(fgets($this->f,1024));
209
210 if (strlen($data) == 0)
211 $data = trim(fgets($this->f,1024));
212
213 if ($data !== 'xref') {
214 fseek($this->f, $o_pos);
215 $data = trim(_fgets($this->f, true));
216 if ($data !== 'xref') {
217 if (preg_match('/(.*xref)(.*)/m', $data, $m)) { // xref 0 128 - in one line
218 fseek($this->f, $o_pos+strlen($m[1]));
219 } elseif (preg_match('/(x|r|e|f)+/', $data, $m)) { // correct invalid xref-pointer
220 $tmpOffset = $offset-4+strlen($m[0]);
221 $this->pdf_read_xref($result, $tmpOffset, $start, $end);
222 return;
223 } else {
224 // mPDF 4.0
225 $this->success = false;
226 $this->errormsg = sprintf("Unable to find xref table - Maybe a Problem with 'auto_detect_line_endings'");
227 return;
228 }
229 }
230 }
231
232 $o_pos = ftell($this->f);
233 $data = explode(' ', trim(fgets($this->f,1024)));
234 if (count($data) != 2) {
235 fseek($this->f, $o_pos);
236 $data = explode(' ', trim(_fgets($this->f, true)));
237
238 if (count($data) != 2) {
239 if (count($data) > 2) { // no lineending
240 $n_pos = $o_pos+strlen($data[0])+strlen($data[1])+2;
241 fseek($this->f, $n_pos);
242 } else {
243 // mPDF 4.0
244 $this->success = false;
245 $this->errormsg = sprintf("Unexpected header in xref table");
246 return;
247 }
248 }
249 }
250 $start = $data[0];
251 $end = $start + $data[1];
252 }
253
254 if (!isset($result['xref_location'])) {
255 $result['xref_location'] = $offset;
256 }
257
258 if (!isset($result['max_object']) || $end > $result['max_object']) {
259 $result['max_object'] = $end;
260 }
261
262 for (; $start < $end; $start++) {
263 $data = ltrim(fread($this->f, 20)); // Spezifications says: 20 bytes including newlines
264 $offset = substr($data, 0, 10);
265 $generation = substr($data, 11, 5);
266
267 if (!isset ($result['xref'][$start][(int) $generation])) {
268 $result['xref'][$start][(int) $generation] = (int) $offset;
269 }
270 }
271
272 $o_pos = ftell($this->f);
273 $data = fgets($this->f,1024);
274 if (strlen(trim($data)) == 0)
275 $data = fgets($this->f, 1024);
276
277 if (preg_match("/trailer/",$data)) {
278 if (preg_match("/(.*trailer[ \n\r]*)/",$data,$m)) {
279 fseek($this->f, $o_pos+strlen($m[1]));
280 }
281
282 // mPDF 5.0 Removed pass by reference =&
283 $c = new pdf_context($this->f);
284 $trailer = $this->pdf_read_value($c);
285
286 if (isset($trailer[1]['/Prev'])) {
287 $this->pdf_read_xref($result, $trailer[1]['/Prev'][1]);
288 $result['trailer'][1] = array_merge($result['trailer'][1], $trailer[1]);
289 } else {
290 $result['trailer'] = $trailer;
291 }
292 } else {
293 $data = explode(' ', trim($data));
294
295 if (count($data) != 2) {
296 fseek($this->f, $o_pos);
297 $data = explode(' ', trim (_fgets ($this->f, true)));
298
299 if (count($data) != 2) {
300 // mPDF 4.0
301 $this->success = false;
302 $this->errormsg = sprintf("Unexpected data in xref table");
303 return;
304 }
305 }
306
307 $this->pdf_read_xref($result, null, (int) $data[0], (int) $data[0] + (int) $data[1]);
308 }
309 }
310
311
312 /**
313 * Reads an Value
314 *
315 * @param object $c pdf_context
316 * @param string $token a Token
317 * @return mixed
318 */
319 function pdf_read_value(&$c, $token = null) {
320 if (is_null($token)) {
321 $token = $this->pdf_read_token($c);
322 }
323
324 if ($token === false) {
325 return false;
326 }
327
328 switch ($token) {
329 case '<':
330 // This is a hex string.
331 // Read the value, then the terminator
332
333 $pos = $c->offset;
334
335 while(1) {
336
337 $match = strpos ($c->buffer, '>', $pos);
338
339 // If you can't find it, try
340 // reading more data from the stream
341
342 if ($match === false) {
343 if (!$c->increase_length()) {
344 return false;
345 } else {
346 continue;
347 }
348 }
349
350 $result = substr ($c->buffer, $c->offset, $match - $c->offset);
351 $c->offset = $match+1;
352
353 return array (PDF_TYPE_HEX, $result);
354 }
355
356 break;
357 case '<<':
358 // This is a dictionary.
359
360 $result = array();
361
362 // Recurse into this function until we reach
363 // the end of the dictionary.
364 while (($key = $this->pdf_read_token($c)) !== '>>') {
365 if ($key === false) {
366 return false;
367 }
368
369 if (($value = $this->pdf_read_value($c)) === false) {
370 return false;
371 }
372 $result[$key] = $value;
373 }
374
375 return array (PDF_TYPE_DICTIONARY, $result);
376
377 case '[':
378 // This is an array.
379
380 $result = array();
381
382 // Recurse into this function until we reach
383 // the end of the array.
384 while (($token = $this->pdf_read_token($c)) !== ']') {
385 if ($token === false) {
386 return false;
387 }
388
389 if (($value = $this->pdf_read_value($c, $token)) === false) {
390 return false;
391 }
392
393 $result[] = $value;
394 }
395
396 return array (PDF_TYPE_ARRAY, $result);
397
398 case '(' :
399 // This is a string
400
401 $pos = $c->offset;
402
403 while(1) {
404
405 // Start by finding the next closed
406 // parenthesis
407
408 $match = strpos ($c->buffer, ')', $pos);
409
410 // If you can't find it, try
411 // reading more data from the stream
412
413 if ($match === false) {
414 if (!$c->increase_length()) {
415 return false;
416 } else {
417 continue;
418 }
419 }
420
421 // Make sure that there is no backslash
422 // before the parenthesis. If there is,
423 // move on. Otherwise, return the string.
424 $esc = preg_match('/([\\\\]+)$/', $tmpresult = substr($c->buffer, $c->offset, $match - $c->offset), $m);
425
426 if ($esc === 0 || strlen($m[1]) % 2 == 0) {
427 $result = $tmpresult;
428 $c->offset = $match + 1;
429 return array (PDF_TYPE_STRING, $result);
430 } else {
431 $pos = $match + 1;
432
433 if ($pos > $c->offset + $c->length) {
434 $c->increase_length();
435 }
436 }
437 }
438
439 case "stream":
440 $o_pos = ftell($c->file)-strlen($c->buffer);
441 $o_offset = $c->offset;
442
443 $c->reset($startpos = $o_pos + $o_offset);
444
445 $e = 0; // ensure line breaks in front of the stream
446 if ($c->buffer[0] == chr(10) || $c->buffer[0] == chr(13))
447 $e++;
448 if ($c->buffer[1] == chr(10) && $c->buffer[0] != chr(10))
449 $e++;
450
451 if ($this->actual_obj[1][1]['/Length'][0] == PDF_TYPE_OBJREF) {
452 // mPDF 5.0 Removed pass by reference =&
453 $tmp_c = new pdf_context($this->f);
454 $tmp_length = $this->pdf_resolve_object($tmp_c,$this->actual_obj[1][1]['/Length']);
455 $length = $tmp_length[1][1];
456 } else {
457 $length = $this->actual_obj[1][1]['/Length'][1];
458 }
459
460 if ($length > 0) {
461 $c->reset($startpos+$e,$length);
462 $v = $c->buffer;
463 } else {
464 $v = '';
465 }
466 $c->reset($startpos+$e+$length+9); // 9 = strlen("endstream")
467
468 return array(PDF_TYPE_STREAM, $v);
469
470 default :
471 if (is_numeric ($token)) {
472 // A numeric token. Make sure that
473 // it is not part of something else.
474 if (($tok2 = $this->pdf_read_token ($c)) !== false) {
475 if (is_numeric ($tok2)) {
476
477 // Two numeric tokens in a row.
478 // In this case, we're probably in
479 // front of either an object reference
480 // or an object specification.
481 // Determine the case and return the data
482 if (($tok3 = $this->pdf_read_token ($c)) !== false) {
483 switch ($tok3) {
484 case 'obj' :
485 return array (PDF_TYPE_OBJDEC, (int) $token, (int) $tok2);
486 case 'R' :
487 return array (PDF_TYPE_OBJREF, (int) $token, (int) $tok2);
488 }
489 // If we get to this point, that numeric value up
490 // there was just a numeric value. Push the extra
491 // tokens back into the stack and return the value.
492 array_push ($c->stack, $tok3);
493 }
494 }
495
496 array_push ($c->stack, $tok2);
497 }
498
499 return array (PDF_TYPE_NUMERIC, $token);
500 } else {
501
502 // Just a token. Return it.
503 return array (PDF_TYPE_TOKEN, $token);
504 }
505
506 }
507 }
508
509 /**
510 * Resolve an object
511 *
512 * @param object $c pdf_context
513 * @param array $obj_spec The object-data
514 * @param boolean $encapsulate Must set to true, cause the parsing and fpdi use this method only without this para
515 */
516 function pdf_resolve_object(&$c, $obj_spec, $encapsulate = true) {
517 // Exit if we get invalid data
518 if (!is_array($obj_spec)) {
519 return false;
520 }
521
522 if ($obj_spec[0] == PDF_TYPE_OBJREF) {
523
524 // This is a reference, resolve it
525 if (isset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]])) {
526
527 // Save current file position
528 // This is needed if you want to resolve
529 // references while you're reading another object
530 // (e.g.: if you need to determine the length
531 // of a stream)
532
533 $old_pos = ftell($c->file);
534
535 // Reposition the file pointer and
536 // load the object header.
537
538 $c->reset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]]);
539
540 $header = $this->pdf_read_value($c,null,true);
541
542 if ($header[0] != PDF_TYPE_OBJDEC || $header[1] != $obj_spec[1] || $header[2] != $obj_spec[2]) {
543 // mPDF 4.0
544 $this->success = false;
545 $this->errormsg = sprintf("Unable to find object ({$obj_spec[1]}, {$obj_spec[2]}) at expected location");
546 return false;
547 }
548
549 // If we're being asked to store all the information
550 // about the object, we add the object ID and generation
551 // number for later use
552 $this->actual_obj =& $result;
553 if ($encapsulate) {
554 $result = array (
555 PDF_TYPE_OBJECT,
556 'obj' => $obj_spec[1],
557 'gen' => $obj_spec[2]
558 );
559 } else {
560 $result = array();
561 }
562
563 // Now simply read the object data until
564 // we encounter an end-of-object marker
565 while(1) {
566 $value = $this->pdf_read_value($c);
567 if ($value === false || count($result) > 4) {
568 // in this case the parser coudn't find an endobj so we break here
569 break;
570 }
571
572 if ($value[0] == PDF_TYPE_TOKEN && $value[1] === 'endobj') {
573 break;
574 }
575
576 $result[] = $value;
577 }
578
579 $c->reset($old_pos);
580
581 if (isset($result[2][0]) && $result[2][0] == PDF_TYPE_STREAM) {
582 $result[0] = PDF_TYPE_STREAM;
583 }
584
585 return $result;
586 }
587 } else {
588 return $obj_spec;
589 }
590 }
591
592
593
594 /**
595 * Reads a token from the file
596 *
597 * @param object $c pdf_context
598 * @return mixed
599 */
600 function pdf_read_token(&$c)
601 {
602 // If there is a token available
603 // on the stack, pop it out and
604 // return it.
605
606 if (count($c->stack)) {
607 return array_pop($c->stack);
608 }
609
610 // Strip away any whitespace
611
612 do {
613 if (!$c->ensure_content()) {
614 return false;
615 }
616 $c->offset += _strspn($c->buffer, " \n\r\t", $c->offset);
617 } while ($c->offset >= $c->length - 1);
618
619 // Get the first character in the stream
620
621 $char = $c->buffer[$c->offset++];
622
623 switch ($char) {
624
625 case '[' :
626 case ']' :
627 case '(' :
628 case ')' :
629
630 // This is either an array or literal string
631 // delimiter, Return it
632
633 return $char;
634
635 case '<' :
636 case '>' :
637
638 // This could either be a hex string or
639 // dictionary delimiter. Determine the
640 // appropriate case and return the token
641
642 if ($c->buffer[$c->offset] == $char) {
643 if (!$c->ensure_content()) {
644 return false;
645 }
646 $c->offset++;
647 return $char . $char;
648 } else {
649 return $char;
650 }
651
652 default :
653
654 // This is "another" type of token (probably
655 // a dictionary entry or a numeric value)
656 // Find the end and return it.
657
658 if (!$c->ensure_content()) {
659 return false;
660 }
661
662 while(1) {
663
664 // Determine the length of the token
665
666 $pos = _strcspn($c->buffer, " []<>()\r\n\t/", $c->offset);
667 if ($c->offset + $pos <= $c->length - 1) {
668 break;
669 } else {
670 // If the script reaches this point,
671 // the token may span beyond the end
672 // of the current buffer. Therefore,
673 // we increase the size of the buffer
674 // and try again--just to be safe.
675
676 $c->increase_length();
677 }
678 }
679
680 $result = substr($c->buffer, $c->offset - 1, $pos + 1);
681
682 $c->offset += $pos;
683 return $result;
684 }
685 }
686
687
688}
689
690?> \ 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
index 7ba83e4a..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/NOTES.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1Alternative sources of Hyphenation programs or TEX files:
2
3OpenOffice: http://wiki.services.openoffice.org/wiki/Dictionaries
4
5Hyphenator4PHP- 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
index 21643404..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/de.php
+++ /dev/null
@@ -1,9 +0,0 @@
1<?php
2/*
3 Adapted from Hyphenator 1.0.2
4 http://code.google.com/p/hyphenator/
5*/
6
7$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";
8
9?> \ 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
index e9a1bcea..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/dictionary.txt
+++ /dev/null
@@ -1 +0,0 @@
1dis/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
index a02b63fd..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/en.php
+++ /dev/null
@@ -1,10 +0,0 @@
1<?php
2/*
3 Adapted from Hyphenator 1.0.2
4 http://code.google.com/p/hyphenator/
5*/
6
7$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";
8
9
10?> \ 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
index da8f7564..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/es.php
+++ /dev/null
@@ -1,11 +0,0 @@
1<?php
2/*
3 Adapted from Hyphenator 1.0.2
4 http://code.google.com/p/hyphenator/
5
6 Created by Luis Pabon (lpabon at metagrama dot es)
7*/
8
9$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";
10
11?> \ 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
index 5be3124b..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/fi.php
+++ /dev/null
@@ -1,9 +0,0 @@
1<?php
2/*
3 Adapted from Hyphenator 1.0.2
4 http://code.google.com/p/hyphenator/
5*/
6
7$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";
8
9?> \ 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
index 335f85bc..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/fr.php
+++ /dev/null
@@ -1,12 +0,0 @@
1<?php
2/*
3 Adapted from Hyphenator 1.0.2
4 http://code.google.com/p/hyphenator/
5
6 Retrieved from http://extensions.services.openoffice.org/project/french-dictionary-reform1990
7 License: LGPL
8*/
9
10$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_";
11
12?> \ 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
index bdda023c..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/it.php
+++ /dev/null
@@ -1,11 +0,0 @@
1<?php
2/*
3 Adapted from Hyphenator 1.0.2
4 http://code.google.com/p/hyphenator/
5
6 Retrieved from http://www.ctan.org/tex-archive/language/hyphenation/ithyph.tex
7*/
8
9$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";
10
11?> \ 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
index 06a342de..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/nl.php
+++ /dev/null
@@ -1,11 +0,0 @@
1<?php
2/*
3 Adapted from Hyphenator 1.0.2
4 http://code.google.com/p/hyphenator/
5
6 Created by Remco Bloemen (remco dot bloemen at gmail dot com)
7*/
8
9$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";
10
11?> \ 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
index f5311058..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/pl.php
+++ /dev/null
@@ -1,9 +0,0 @@
1<?php
2/*
3 Adapted from Hyphenator 1.0.2
4 http://code.google.com/p/hyphenator/
5*/
6
7$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_";
8
9?>
diff --git a/inc/3rdparty/libraries/mpdf/patterns/ru.php b/inc/3rdparty/libraries/mpdf/patterns/ru.php
deleted file mode 100644
index 6202773d..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/ru.php
+++ /dev/null
@@ -1,12 +0,0 @@
1<?php
2/*
3 Adapted from Hyphenator 1.0.2
4 http://code.google.com/p/hyphenator/
5
6 Created by crymos at yandex dot ru
7 ВопроÑÑ‹ по руÑÑкоÑзычным таблицам переноÑа отправлÑÑ‚ÑŒ на адреÑ.
8*/
9
10$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_";
11
12?> \ 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
index b01ce72d..00000000
--- a/inc/3rdparty/libraries/mpdf/patterns/sv.php
+++ /dev/null
@@ -1,12 +0,0 @@
1<?php
2/*
3 Adapted from Hyphenator 1.0.2
4 http://code.google.com/p/hyphenator/
5
6 Original created by Jan Michael Rynning, jmr@nada.kth.se
7 Modified for Hyphenator by Andreas Johansson, andreas@ibuypink.com
8*/
9
10$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";
11
12?> \ 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
index 78afc319..00000000
--- a/inc/3rdparty/libraries/mpdf/progbar.css
+++ /dev/null
@@ -1,66 +0,0 @@
1body {
2 margin : 0 auto;
3 width:100%;
4 font-family: "Verdana";
5 color: #40454b;
6 font-size: 12px;
7 text-align:center;
8}
9.main {
10 width:540px;
11 margin: 0 auto;
12 text-align:left;
13}
14.heading {
15 font-size:14px;
16 font-weight:bold;
17 color:#CC0000;
18 padding:5px;
19 margin-left:10px;
20 border-bottom:solid;
21 border-bottom-width:1px;
22 border-bottom-color:#333333;
23 /* Use this to suppress the horizontal line under the heading */
24 /* border-bottom: 0px solid #000000; */
25}
26table {
27 font-family: "Verdana";
28 color: #40454b;
29 font-size: 12px;
30}
31.demo {
32 margin : 0 auto;
33 width:100%;
34 margin:20px;
35 /* Use this to suppress all the bars and text */
36 /* display: none; */
37}
38td {
39 vertical-align: top;
40 padding: 0 0.5em 0 0;
41}
42.code {
43 font-family: "Courier New", Courier, monospace;
44 font-size: 10px;
45}
46.code2 {
47 font-family: "Courier New", Courier, monospace;
48 font-size: 11px; font-weight: bold; color: red;
49}
50.barheading {
51 color:#006600;
52 font-weight:bold;
53}
54.progressBar {
55 border: 1px solid #000000;
56 background-color: #EEEEEE;
57 width: 200px;
58 font-size: 6px;
59}
60.innerBar {
61 background-color:#00CC00;
62 width: 0%;
63}
64#box3 {
65 font-weight: bold;
66}
diff --git a/inc/3rdparty/libraries/mpdf/tmp/dummy.txt b/inc/3rdparty/libraries/mpdf/tmp/dummy.txt
deleted file mode 100644
index 41234966..00000000
--- a/inc/3rdparty/libraries/mpdf/tmp/dummy.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1This is just a placeholder file so that the folder is created on install.
2It 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
index 41234966..00000000
--- a/inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1This is just a placeholder file so that the folder is created on install.
2It 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
index 1dc7335b..00000000
--- a/inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt
+++ /dev/null
@@ -1,21488 +0,0 @@
10000;<control>;Cc;0;BN;;;;;N;NULL;;;;
20001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
30002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
40003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
50004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
60005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
70006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
80007;<control>;Cc;0;BN;;;;;N;BELL;;;;
90008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
100009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
11000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
12000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
13000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
14000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
15000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
16000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
170010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
180011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
190012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
200013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
210014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
220015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
230016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
240017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
250018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
260019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
27001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
28001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
29001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
30001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
31001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
32001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;
330020;SPACE;Zs;0;WS;;;;;N;;;;;
340021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
350022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
360023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
370024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
380025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
390026;AMPERSAND;Po;0;ON;;;;;N;;;;;
400027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
410028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
420029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
43002A;ASTERISK;Po;0;ON;;;;;N;;;;;
44002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;;
45002C;COMMA;Po;0;CS;;;;;N;;;;;
46002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;;
47002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
48002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;;
490030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
500031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
510032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
520033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
530034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
540035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
550036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
560037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
570038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
580039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
59003A;COLON;Po;0;CS;;;;;N;;;;;
60003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
61003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
62003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
63003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
64003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
650040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
660041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
670042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
680043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
690044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
700045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
710046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
720047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
730048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
740049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
75004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
76004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
77004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
78004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
79004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
80004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
810050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
820051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
830052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
840053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
850054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
860055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
870056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
880057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
890058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
900059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
91005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
92005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
93005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
94005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
95005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
96005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
970060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
980061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
990062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
1000063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
1010064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
1020065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
1030066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
1040067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
1050068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
1060069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
107006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
108006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
109006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
110006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
111006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
112006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
1130070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
1140071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
1150072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
1160073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
1170074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
1180075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
1190076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
1200077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
1210078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
1220079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
123007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
124007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
125007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
126007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
127007E;TILDE;Sm;0;ON;;;;;N;;;;;
128007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
1290080;<control>;Cc;0;BN;;;;;N;;;;;
1300081;<control>;Cc;0;BN;;;;;N;;;;;
1310082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
1320083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
1330084;<control>;Cc;0;BN;;;;;N;;;;;
1340085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
1350086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
1360087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
1370088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
1380089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
139008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
140008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
141008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
142008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
143008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
144008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
1450090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
1460091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
1470092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
1480093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
1490094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
1500095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
1510096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
1520097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
1530098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
1540099;<control>;Cc;0;BN;;;;;N;;;;;
155009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
156009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
157009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
158009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
159009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
160009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
16100A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
16200A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
16300A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
16400A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
16500A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
16600A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
16700A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
16800A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
16900A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
17000A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
17100AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
17200AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;;;;
17300AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
17400AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;;
17500AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
17600AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
17700B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
17800B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
17900B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
18000B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
18100B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
18200B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
18300B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
18400B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
18500B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
18600B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
18700BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
18800BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;;;;
18900BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
19000BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
19100BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
19200BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
19300C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
19400C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
19500C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
19600C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
19700C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
19800C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
19900C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;;;00E6;
20000C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
20100C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
20200C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
20300CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
20400CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
20500CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
20600CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
20700CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
20800CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
20900D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;00F0;
21000D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
21100D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
21200D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
21300D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
21400D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
21500D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
21600D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
21700D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
21800D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
21900DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
22000DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
22100DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
22200DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
22300DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;;;00FE;
22400DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;;;;
22500E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
22600E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
22700E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
22800E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
22900E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
23000E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
23100E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;;00C6;;00C6
23200E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
23300E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
23400E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
23500EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
23600EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
23700EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
23800ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
23900EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
24000EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
24100F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;;00D0;;00D0
24200F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
24300F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
24400F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
24500F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
24600F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
24700F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
24800F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
24900F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
25000F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
25100FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
25200FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
25300FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
25400FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
25500FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;;00DE;;00DE
25600FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
2570100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
2580101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
2590102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
2600103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
2610104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
2620105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
2630106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
2640107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
2650108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
2660109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
267010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
268010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
269010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
270010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
271010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
272010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
2730110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
2740111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
2750112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
2760113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
2770114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
2780115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
2790116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
2800117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
2810118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
2820119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
283011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
284011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
285011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
286011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
287011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
288011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
2890120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
2900121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
2910122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
2920123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
2930124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
2940125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
2950126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
2960127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
2970128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
2980129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
299012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
300012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
301012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
302012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
303012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
304012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
3050130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
3060131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
3070132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
3080133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
3090134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
3100135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
3110136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
3120137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
3130138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;;;;
3140139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
315013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
316013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
317013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
318013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
319013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
320013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
3210140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
3220141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
3230142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
3240143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
3250144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
3260145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
3270146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
3280147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
3290148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
3300149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
331014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;014B;
332014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;;014A;;014A
333014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
334014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
335014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
336014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
3370150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
3380151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
3390152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
3400153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
3410154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
3420155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
3430156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
3440157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
3450158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
3460159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
347015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
348015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
349015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
350015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
351015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;;;015F;
352015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;;015E;;015E
3530160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
3540161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
3550162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;;;0163;
3560163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;;0162;;0162
3570164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
3580165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
3590166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
3600167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
3610168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
3620169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
363016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
364016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
365016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
366016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
367016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
368016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
3690170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
3700171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
3710172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
3720173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
3730174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
3740175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
3750176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
3760177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
3770178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
3780179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
379017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
380017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
381017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
382017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
383017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
384017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
3850180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243
3860181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
3870182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
3880183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
3890184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
3900185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
3910186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
3920187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
3930188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
3940189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;;;0256;
395018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
396018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
397018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
398018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
399018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
400018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
4010190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
4020191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
4030192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
4040193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
4050194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
4060195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;;01F6;;01F6
4070196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
4080197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
4090198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
4100199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
411019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D
412019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
413019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
414019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
415019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
416019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;;;0275;
41701A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
41801A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
41901A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;;;01A3;
42001A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;01A2;;01A2
42101A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
42201A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
42301A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280;
42401A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
42501A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
42601A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
42701AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
42801AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
42901AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
43001AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
43101AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
43201AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
43301B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
43401B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
43501B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
43601B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
43701B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
43801B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
43901B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
44001B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
44101B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
44201B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
44301BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
44401BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
44501BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
44601BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
44701BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
44801BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
44901C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
45001C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
45101C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
45201C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
45301C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
45401C5;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
45501C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
45601C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
45701C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8
45801C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
45901CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
46001CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB
46101CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
46201CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
46301CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
46401CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
46501D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
46601D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
46701D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
46801D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
46901D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
47001D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
47101D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
47201D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
47301D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
47401D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
47501DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
47601DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
47701DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
47801DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
47901DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
48001DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
48101E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
48201E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
48301E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;;;01E3;
48401E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;01E2;;01E2
48501E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
48601E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
48701E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
48801E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
48901E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
49001E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
49101EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
49201EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
49301EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
49401ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
49501EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
49601EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
49701F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
49801F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
49901F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2
50001F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
50101F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
50201F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
50301F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
50401F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
50501F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
50601F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
50701FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
50801FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
50901FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;;;01FD;
51001FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;01FC;;01FC
51101FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
51201FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
5130200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
5140201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
5150202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
5160203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
5170204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
5180205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
5190206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
5200207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
5210208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
5220209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
523020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
524020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
525020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
526020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
527020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
528020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
5290210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
5300211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
5310212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
5320213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
5330214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
5340215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
5350216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
5360217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
5370218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;;;0219;
5380219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;;0218;;0218
539021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;;;021B;
540021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;;021A;;021A
541021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
542021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
543021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
544021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
5450220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E;
5460221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;;
5470222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
5480223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
5490224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
5500225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
5510226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
5520227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
5530228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
5540229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
555022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
556022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
557022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
558022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
559022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
560022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
5610230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
5620231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
5630232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
5640233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
5650234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;;
5660235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;;
5670236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;;
5680237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;;
5690238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;;
5700239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;;
571023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65;
572023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C;
573023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B
574023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A;
575023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66;
576023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7E;;2C7E
5770240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7F;;2C7F
5780241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242;
5790242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241
5800243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180;
5810244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289;
5820245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C;
5830246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247;
5840247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246
5850248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249;
5860249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248
587024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B;
588024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A
589024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D;
590024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C
591024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F;
592024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E
5930250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F
5940251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D
5950252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;2C70;;2C70
5960253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
5970254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
5980255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
5990256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
6000257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
6010258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
6020259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
603025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
604025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
605025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
606025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
607025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
608025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
6090260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
6100261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
6110262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
6120263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
6130264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
6140265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
6150266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
6160267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
6170268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
6180269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
619026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
620026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62
621026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
622026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
623026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
624026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
6250270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
6260271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;2C6E;;2C6E
6270272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
6280273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
6290274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
6300275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
6310276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
6320277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
6330278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
6340279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
635027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
636027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
637027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
638027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64
639027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
640027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
6410280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6
6420281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
6430282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
6440283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
6450284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
6460285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
6470286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
6480287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
6490288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
6500289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244
651028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
652028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
653028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245
654028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
655028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
656028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
6570290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
6580291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
6590292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
6600293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
6610294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
6620295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
6630296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
6640297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
6650298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
6660299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
667029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
668029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
669029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
670029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
671029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
672029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
67302A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
67402A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
67502A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
67602A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
67702A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
67802A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
67902A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
68002A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
68102A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
68202A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
68302AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
68402AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
68502AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
68602AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
68702AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;;
68802AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;;
68902B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
69002B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
69102B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
69202B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
69302B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
69402B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
69502B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
69602B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
69702B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
69802B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;;
69902BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;;
70002BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
70102BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
70202BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
70302BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
70402BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
70502C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
70602C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
70702C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
70802C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
70902C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
71002C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
71102C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
71202C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;;;;
71302C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
71402C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;;;;
71502CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;;;;
71602CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;;;;
71702CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
71802CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;;
71902CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
72002CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
72102D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
72202D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
72302D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
72402D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
72502D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
72602D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
72702D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
72802D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
72902D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
73002D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;;;;
73102DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
73202DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
73302DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
73402DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
73502DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
73602DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
73702E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
73802E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
73902E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
74002E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
74102E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
74202E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
74302E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
74402E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
74502E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
74602E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
74702EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
74802EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
74902EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;;
75002ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
75102EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
75202EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
75302F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
75402F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
75502F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
75602F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;;
75702F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
75802F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
75902F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;;
76002F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;;
76102F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;;
76202F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;;
76302FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;;
76402FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;;
76502FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;;
76602FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;;
76702FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;;
76802FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;;
7690300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;;;;
7700301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;;;;
7710302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
7720303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
7730304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
7740305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
7750306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;;;;
7760307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
7770308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;;;;
7780309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
779030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
780030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
781030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
782030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;;
783030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
784030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
7850310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
7860311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
7870312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
7880313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;;;;
7890314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;;;;
7900315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
7910316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
7920317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
7930318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
7940319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
795031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
796031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
797031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
798031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
799031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
800031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
8010320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
8020321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
8030322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
8040323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
8050324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
8060325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
8070326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
8080327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
8090328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
8100329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
811032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
812032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
813032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
814032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
815032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
816032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
8170330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
8180331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
8190332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
8200333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
8210334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
8220335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
8230336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
8240337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
8250338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
8260339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
827033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
828033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
829033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
830033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
831033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
832033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
8330340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;;;;
8340341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;;;;
8350342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
8360343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
8370344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
8380345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
8390346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
8400347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
8410348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
8420349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
843034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
844034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
845034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
846034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
847034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
848034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;;
8490350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
8500351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
8510352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;;
8520353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;;
8530354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
8540355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
8550356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
8560357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
8570358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;;
8580359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;;
859035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
860035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;;
861035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;;
862035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;;
863035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;;
864035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;;
8650360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
8660361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
8670362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
8680363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;;
8690364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;;
8700365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;;
8710366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;;
8720367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;;
8730368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;;
8740369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;;
875036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;;
876036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;;
877036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;;
878036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;;
879036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;;
880036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;;
8810370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371;
8820371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370
8830372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373;
8840373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372
8850374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;;;;
8860375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;;;;
8870376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377;
8880377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376
889037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
890037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD
891037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE
892037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF
893037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;;;;
8940384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
8950385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
8960386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
8970387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
8980388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
8990389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
900038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
901038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
902038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
903038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
9040390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
9050391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
9060392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
9070393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
9080394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
9090395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
9100396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
9110397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
9120398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
9130399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
914039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
915039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
916039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
917039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
918039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
919039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
92003A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
92103A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
92203A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
92303A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
92403A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
92503A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
92603A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
92703A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
92803A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
92903AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
93003AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
93103AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
93203AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
93303AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
93403AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
93503B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
93603B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
93703B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
93803B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
93903B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
94003B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
94103B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
94203B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
94303B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
94403B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
94503BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
94603BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
94703BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
94803BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
94903BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
95003BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
95103C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
95203C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
95303C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
95403C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
95503C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
95603C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
95703C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
95803C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
95903C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
96003C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
96103CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
96203CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
96303CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
96403CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
96503CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
96603CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7;
96703D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
96803D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
96903D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
97003D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
97103D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
97203D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
97303D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
97403D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;03CF;;03CF
97503D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;;;03D9;
97603D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;;03D8;;03D8
97703DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
97803DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
97903DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
98003DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
98103DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
98203DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
98303E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
98403E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
98503E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
98603E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
98703E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
98803E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
98903E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
99003E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
99103E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
99203E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
99303EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
99403EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
99503EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
99603ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
99703EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
99803EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
99903F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
100003F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
100103F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9
100203F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
100303F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;
100403F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395
100503F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;;
100603F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8;
100703F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7
100803F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2;
100903FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB;
101003FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA
101103FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;;
101203FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B;
101303FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C;
101403FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D;
10150400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
10160401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
10170402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;;;0452;
10180403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
10190404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
10200405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
10210406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
10220407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;;;0457;
10230408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
10240409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
1025040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
1026040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;;;045B;
1027040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
1028040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
1029040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;;;045E;
1030040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
10310410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
10320411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
10330412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
10340413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
10350414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
10360415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
10370416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
10380417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
10390418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
10400419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
1041041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
1042041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
1043041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
1044041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
1045041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
1046041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
10470420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
10480421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
10490422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
10500423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
10510424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
10520425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
10530426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
10540427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
10550428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
10560429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
1057042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
1058042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
1059042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
1060042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
1061042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
1062042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
10630430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
10640431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
10650432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
10660433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
10670434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
10680435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
10690436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
10700437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
10710438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
10720439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
1073043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
1074043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
1075043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
1076043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
1077043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
1078043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
10790440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
10800441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
10810442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
10820443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
10830444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
10840445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
10850446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
10860447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
10870448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
10880449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
1089044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
1090044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
1091044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
1092044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
1093044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
1094044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
10950450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
10960451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
10970452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;;0402;;0402
10980453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
10990454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
11000455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
11010456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
11020457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;;0407;;0407
11030458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
11040459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
1105045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
1106045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;;040B;;040B
1107045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
1108045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
1109045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;;040E;;040E
1110045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
11110460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
11120461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
11130462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
11140463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
11150464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
11160465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
11170466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
11180467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
11190468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
11200469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
1121046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
1122046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
1123046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
1124046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
1125046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
1126046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
11270470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
11280471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
11290472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
11300473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
11310474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
11320475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
11330476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
11340477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
11350478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
11360479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
1137047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
1138047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
1139047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
1140047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
1141047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
1142047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
11430480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
11440481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
11450482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
11460483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
11470484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
11480485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
11490486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
11500487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;;
11510488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
11520489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
1153048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B;
1154048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A
1155048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
1156048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
1157048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
1158048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
11590490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
11600491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
11610492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
11620493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
11630494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
11640495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
11650496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
11660497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
11670498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
11680499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
1169049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
1170049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
1171049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
1172049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
1173049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
1174049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
117504A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
117604A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
117704A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
117804A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
117904A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
118004A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
118104A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;;;04A7;
118204A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;;04A6;;04A6
118304A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
118404A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
118504AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
118604AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
118704AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
118804AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
118904AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
119004AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
119104B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
119204B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
119304B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
119404B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
119504B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;;;04B5;
119604B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;;04B4;;04B4
119704B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
119804B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
119904B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
120004B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
120104BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
120204BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
120304BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
120404BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
120504BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
120604BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
120704C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF;
120804C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
120904C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
121004C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
121104C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
121204C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6;
121304C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5
121404C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
121504C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
121604C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA;
121704CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9
121804CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
121904CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
122004CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE;
122104CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD
122204CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0
122304D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
122404D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
122504D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
122604D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
122704D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
122804D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
122904D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
123004D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
123104D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
123204D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
123304DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
123404DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
123504DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
123604DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
123704DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
123804DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
123904E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
124004E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
124104E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
124204E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
124304E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
124404E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
124504E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
124604E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
124704E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
124804E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
124904EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
125004EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
125104EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
125204ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
125304EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
125404EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
125504F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
125604F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
125704F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
125804F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
125904F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
126004F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
126104F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7;
126204F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6
126304F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
126404F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
126504FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB;
126604FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA
126704FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD;
126804FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC
126904FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF;
127004FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE
12710500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501;
12720501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500
12730502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503;
12740503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502
12750504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505;
12760505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504
12770506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507;
12780507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506
12790508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509;
12800509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508
1281050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B;
1282050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A
1283050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D;
1284050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C
1285050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F;
1286050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E
12870510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511;
12880511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510
12890512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513;
12900513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512
12910514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515;
12920515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514
12930516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517;
12940517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516
12950518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519;
12960519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518
1297051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B;
1298051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A
1299051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D;
1300051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C
1301051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F;
1302051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E
13030520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521;
13040521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520
13050522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523;
13060523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522
13070524;CYRILLIC CAPITAL LETTER PE WITH DESCENDER;Lu;0;L;;;;;N;;;;0525;
13080525;CYRILLIC SMALL LETTER PE WITH DESCENDER;Ll;0;L;;;;;N;;;0524;;0524
13090531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
13100532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
13110533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
13120534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
13130535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
13140536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
13150537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
13160538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
13170539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
1318053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
1319053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
1320053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
1321053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
1322053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
1323053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
13240540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
13250541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
13260542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
13270543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
13280544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
13290545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
13300546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
13310547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
13320548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
13330549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
1334054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
1335054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
1336054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
1337054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
1338054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
1339054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
13400550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
13410551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
13420552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
13430553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
13440554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
13450555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
13460556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
13470559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
1348055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
1349055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
1350055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
1351055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
1352055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
1353055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
13540561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
13550562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
13560563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
13570564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
13580565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
13590566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
13600567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
13610568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
13620569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
1363056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
1364056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
1365056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
1366056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
1367056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
1368056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
13690570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
13700571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
13710572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
13720573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
13730574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
13740575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
13750576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
13760577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
13770578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
13780579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
1379057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
1380057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
1381057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
1382057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
1383057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
1384057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
13850580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
13860581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
13870582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
13880583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
13890584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
13900585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
13910586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
13920587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
13930589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
1394058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
13950591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
13960592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
13970593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
13980594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
13990595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
14000596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;;;;
14010597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
14020598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;;;;
14030599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
1404059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
1405059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
1406059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
1407059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
1408059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
1409059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
141005A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
141105A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
141205A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;;
141305A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
141405A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
141505A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;;;;
141605A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
141705A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
141805A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;;;;
141905A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
142005AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;;;;
142105AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
142205AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
142305AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
142405AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
142505AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
142605B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
142705B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
142805B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
142905B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
143005B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
143105B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
143205B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
143305B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
143405B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
143505B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
143605BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;;
143705BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
143805BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;;;;
143905BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;;;;
144005BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;;
144105BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
144205C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;;
144305C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
144405C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
144505C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;;
144605C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
144705C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;;
144805C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;;
144905C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;;
145005D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
145105D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
145205D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
145305D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
145405D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
145505D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
145605D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
145705D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
145805D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
145905D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
146005DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
146105DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
146205DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
146305DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
146405DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
146505DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
146605E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
146705E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
146805E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
146905E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
147005E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
147105E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
147205E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
147305E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
147405E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
147505E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
147605EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
147705F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
147805F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
147905F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
148005F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
148105F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
14820600;ARABIC NUMBER SIGN;Cf;0;AN;;;;;N;;;;;
14830601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;;
14840602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;;
14850603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;;
14860606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;;
14870607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;;
14880608;ARABIC RAY;Sm;0;AL;;;;;N;;;;;
14890609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
1490060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
1491060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;;
1492060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
1493060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;;
1494060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;;
1495060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;;
14960610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;;
14970611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;;
14980612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;;
14990613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;;
15000614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;;
15010615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;;
15020616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;;
15030617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;;
15040618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;;
15050619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;;
1506061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;;
1507061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
1508061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;;
1509061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
15100621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
15110622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
15120623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
15130624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
15140625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
15150626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
15160627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
15170628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
15180629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
1519062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
1520062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
1521062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
1522062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
1523062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
1524062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
15250630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
15260631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
15270632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
15280633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
15290634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
15300635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
15310636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
15320637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
15330638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
15340639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
1535063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
1536063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
1537063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
1538063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
1539063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
1540063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
15410640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
15420641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
15430642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
15440643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
15450644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
15460645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
15470646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
15480647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
15490648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
15500649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
1551064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
1552064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
1553064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
1554064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
1555064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
1556064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
15570650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
15580651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
15590652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
15600653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
15610654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
15620655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
15630656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;;
15640657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;;
15650658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;;
15660659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;;
1567065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
1568065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
1569065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
1570065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;;
1571065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;;
15720660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
15730661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
15740662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
15750663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
15760664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
15770665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
15780666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
15790667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
15800668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
15810669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
1582066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
1583066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
1584066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
1585066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
1586066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;;
1587066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;;
15880670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
15890671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
15900672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
15910673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
15920674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
15930675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
15940676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
15950677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
15960678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
15970679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
1598067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
1599067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
1600067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
1601067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
1602067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
1603067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
16040680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
16050681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
16060682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
16070683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
16080684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
16090685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
16100686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
16110687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
16120688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
16130689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
1614068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
1615068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
1616068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
1617068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
1618068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
1619068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
16200690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
16210691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
16220692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
16230693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
16240694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
16250695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
16260696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
16270697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
16280698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
16290699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
1630069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
1631069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
1632069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
1633069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
1634069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
1635069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
163606A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
163706A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
163806A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
163906A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
164006A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
164106A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
164206A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
164306A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
164406A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
164506A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
164606AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
164706AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
164806AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
164906AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
165006AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
165106AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;;;;
165206B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
165306B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
165406B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
165506B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
165606B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
165706B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
165806B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
165906B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
166006B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
166106B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
166206BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
166306BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
166406BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
166506BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
166606BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
166706BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
166806C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
166906C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
167006C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
167106C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
167206C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
167306C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
167406C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
167506C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
167606C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
167706C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
167806CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
167906CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
168006CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
168106CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
168206CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
168306CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
168406D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;;
168506D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
168606D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
168706D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
168806D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
168906D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
169006D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
169106D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
169206D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
169306D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
169406DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
169506DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
169606DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
169706DD;ARABIC END OF AYAH;Cf;0;AN;;;;;N;;;;;
169806DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
169906DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
170006E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
170106E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
170206E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
170306E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
170406E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
170506E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
170606E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
170706E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
170806E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
170906E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
171006EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
171106EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
171206EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
171306ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
171406EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
171506EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
171606F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
171706F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
171806F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
171906F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
172006F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
172106F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
172206F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
172306F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
172406F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
172506F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
172606FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
172706FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
172806FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
172906FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
173006FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
173106FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
17320700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
17330701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
17340702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
17350703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
17360704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
17370705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
17380706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
17390707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
17400708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
17410709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
1742070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
1743070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
1744070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
1745070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
1746070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
17470710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
17480711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
17490712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
17500713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
17510714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
17520715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
17530716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
17540717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
17550718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
17560719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
1757071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
1758071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
1759071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
1760071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
1761071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
1762071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
17630720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
17640721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
17650722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
17660723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
17670724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
17680725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
17690726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
17700727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
17710728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
17720729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
1773072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
1774072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
1775072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
1776072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;;
1777072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;;
1778072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;;
17790730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
17800731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
17810732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
17820733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
17830734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
17840735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
17850736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
17860737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
17870738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
17880739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
1789073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
1790073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
1791073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
1792073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
1793073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
1794073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
17950740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
17960741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
17970742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
17980743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
17990744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
18000745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
18010746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
18020747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
18030748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
18040749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
1805074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
1806074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;;
1807074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;;
1808074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;;
18090750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;;
18100751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
18110752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
18120753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
18130754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
18140755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
18150756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
18160757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
18170758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
18180759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
1819075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
1820075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;;
1821075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
1822075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
1823075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;;
1824075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
18250760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
18260761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
18270762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
18280763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
18290764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
18300765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
18310766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
18320767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
18330768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;;
18340769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;;
1835076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;;
1836076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
1837076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;
1838076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
1839076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;;
1840076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
18410770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
18420771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
18430772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;;
18440773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
18450774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
18460775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
18470776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
18480777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
18490778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
18500779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
1851077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
1852077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
1853077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
1854077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;;
1855077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
1856077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
18570780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
18580781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
18590782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
18600783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
18610784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
18620785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
18630786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
18640787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
18650788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
18660789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
1867078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
1868078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
1869078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
1870078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
1871078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
1872078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
18730790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
18740791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
18750792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
18760793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
18770794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
18780795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
18790796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
18800797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
18810798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
18820799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
1883079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
1884079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
1885079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
1886079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
1887079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
1888079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
188907A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
189007A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
189107A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
189207A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
189307A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
189407A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
189507A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
189607A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
189707A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
189807A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
189907AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
190007AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
190107AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
190207AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
190307AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
190407AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
190507B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
190607B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;;
190707C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;;
190807C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;;
190907C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;;
191007C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;;
191107C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;;
191207C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;;
191307C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;;
191407C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;;
191507C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;;
191607C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;
191707CA;NKO LETTER A;Lo;0;R;;;;;N;;;;;
191807CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;;
191907CC;NKO LETTER I;Lo;0;R;;;;;N;;;;;
192007CD;NKO LETTER E;Lo;0;R;;;;;N;;;;;
192107CE;NKO LETTER U;Lo;0;R;;;;;N;;;;;
192207CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;;
192307D0;NKO LETTER O;Lo;0;R;;;;;N;;;;;
192407D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;;
192507D2;NKO LETTER N;Lo;0;R;;;;;N;;;;;
192607D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;;
192707D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;;
192807D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;;
192907D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;;
193007D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;;
193107D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;;
193207D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;;
193307DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;;
193407DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;;
193507DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;;
193607DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;;
193707DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;;
193807DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;;
193907E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;;
194007E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;;
194107E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;;
194207E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;;
194307E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;;
194407E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;;
194507E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;;
194607E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;;
194707E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;;
194807E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;;
194907EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;;
195007EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;;
195107EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;;
195207ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;;
195307EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;;
195407EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;;
195507F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;;
195607F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;;
195707F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;;
195807F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
195907F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
196007F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
196107F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;;
196207F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;;
196307F8;NKO COMMA;Po;0;ON;;;;;N;;;;;
196407F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
196507FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;;
19660800;SAMARITAN LETTER ALAF;Lo;0;R;;;;;N;;;;;
19670801;SAMARITAN LETTER BIT;Lo;0;R;;;;;N;;;;;
19680802;SAMARITAN LETTER GAMAN;Lo;0;R;;;;;N;;;;;
19690803;SAMARITAN LETTER DALAT;Lo;0;R;;;;;N;;;;;
19700804;SAMARITAN LETTER IY;Lo;0;R;;;;;N;;;;;
19710805;SAMARITAN LETTER BAA;Lo;0;R;;;;;N;;;;;
19720806;SAMARITAN LETTER ZEN;Lo;0;R;;;;;N;;;;;
19730807;SAMARITAN LETTER IT;Lo;0;R;;;;;N;;;;;
19740808;SAMARITAN LETTER TIT;Lo;0;R;;;;;N;;;;;
19750809;SAMARITAN LETTER YUT;Lo;0;R;;;;;N;;;;;
1976080A;SAMARITAN LETTER KAAF;Lo;0;R;;;;;N;;;;;
1977080B;SAMARITAN LETTER LABAT;Lo;0;R;;;;;N;;;;;
1978080C;SAMARITAN LETTER MIM;Lo;0;R;;;;;N;;;;;
1979080D;SAMARITAN LETTER NUN;Lo;0;R;;;;;N;;;;;
1980080E;SAMARITAN LETTER SINGAAT;Lo;0;R;;;;;N;;;;;
1981080F;SAMARITAN LETTER IN;Lo;0;R;;;;;N;;;;;
19820810;SAMARITAN LETTER FI;Lo;0;R;;;;;N;;;;;
19830811;SAMARITAN LETTER TSAADIY;Lo;0;R;;;;;N;;;;;
19840812;SAMARITAN LETTER QUF;Lo;0;R;;;;;N;;;;;
19850813;SAMARITAN LETTER RISH;Lo;0;R;;;;;N;;;;;
19860814;SAMARITAN LETTER SHAN;Lo;0;R;;;;;N;;;;;
19870815;SAMARITAN LETTER TAAF;Lo;0;R;;;;;N;;;;;
19880816;SAMARITAN MARK IN;Mn;230;NSM;;;;;N;;;;;
19890817;SAMARITAN MARK IN-ALAF;Mn;230;NSM;;;;;N;;;;;
19900818;SAMARITAN MARK OCCLUSION;Mn;230;NSM;;;;;N;;;;;
19910819;SAMARITAN MARK DAGESH;Mn;230;NSM;;;;;N;;;;;
1992081A;SAMARITAN MODIFIER LETTER EPENTHETIC YUT;Lm;0;R;;;;;N;;;;;
1993081B;SAMARITAN MARK EPENTHETIC YUT;Mn;230;NSM;;;;;N;;;;;
1994081C;SAMARITAN VOWEL SIGN LONG E;Mn;230;NSM;;;;;N;;;;;
1995081D;SAMARITAN VOWEL SIGN E;Mn;230;NSM;;;;;N;;;;;
1996081E;SAMARITAN VOWEL SIGN OVERLONG AA;Mn;230;NSM;;;;;N;;;;;
1997081F;SAMARITAN VOWEL SIGN LONG AA;Mn;230;NSM;;;;;N;;;;;
19980820;SAMARITAN VOWEL SIGN AA;Mn;230;NSM;;;;;N;;;;;
19990821;SAMARITAN VOWEL SIGN OVERLONG A;Mn;230;NSM;;;;;N;;;;;
20000822;SAMARITAN VOWEL SIGN LONG A;Mn;230;NSM;;;;;N;;;;;
20010823;SAMARITAN VOWEL SIGN A;Mn;230;NSM;;;;;N;;;;;
20020824;SAMARITAN MODIFIER LETTER SHORT A;Lm;0;R;;;;;N;;;;;
20030825;SAMARITAN VOWEL SIGN SHORT A;Mn;230;NSM;;;;;N;;;;;
20040826;SAMARITAN VOWEL SIGN LONG U;Mn;230;NSM;;;;;N;;;;;
20050827;SAMARITAN VOWEL SIGN U;Mn;230;NSM;;;;;N;;;;;
20060828;SAMARITAN MODIFIER LETTER I;Lm;0;R;;;;;N;;;;;
20070829;SAMARITAN VOWEL SIGN LONG I;Mn;230;NSM;;;;;N;;;;;
2008082A;SAMARITAN VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;
2009082B;SAMARITAN VOWEL SIGN O;Mn;230;NSM;;;;;N;;;;;
2010082C;SAMARITAN VOWEL SIGN SUKUN;Mn;230;NSM;;;;;N;;;;;
2011082D;SAMARITAN MARK NEQUDAA;Mn;230;NSM;;;;;N;;;;;
20120830;SAMARITAN PUNCTUATION NEQUDAA;Po;0;R;;;;;N;;;;;
20130831;SAMARITAN PUNCTUATION AFSAAQ;Po;0;R;;;;;N;;;;;
20140832;SAMARITAN PUNCTUATION ANGED;Po;0;R;;;;;N;;;;;
20150833;SAMARITAN PUNCTUATION BAU;Po;0;R;;;;;N;;;;;
20160834;SAMARITAN PUNCTUATION ATMAAU;Po;0;R;;;;;N;;;;;
20170835;SAMARITAN PUNCTUATION SHIYYAALAA;Po;0;R;;;;;N;;;;;
20180836;SAMARITAN ABBREVIATION MARK;Po;0;R;;;;;N;;;;;
20190837;SAMARITAN PUNCTUATION MELODIC QITSA;Po;0;R;;;;;N;;;;;
20200838;SAMARITAN PUNCTUATION ZIQAA;Po;0;R;;;;;N;;;;;
20210839;SAMARITAN PUNCTUATION QITSA;Po;0;R;;;;;N;;;;;
2022083A;SAMARITAN PUNCTUATION ZAEF;Po;0;R;;;;;N;;;;;
2023083B;SAMARITAN PUNCTUATION TURU;Po;0;R;;;;;N;;;;;
2024083C;SAMARITAN PUNCTUATION ARKAANU;Po;0;R;;;;;N;;;;;
2025083D;SAMARITAN PUNCTUATION SOF MASHFAAT;Po;0;R;;;;;N;;;;;
2026083E;SAMARITAN PUNCTUATION ANNAAU;Po;0;R;;;;;N;;;;;
20270900;DEVANAGARI SIGN INVERTED CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
20280901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
20290902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
20300903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
20310904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;;
20320905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
20330906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
20340907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
20350908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
20360909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
2037090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
2038090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
2039090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
2040090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
2041090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
2042090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
20430910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
20440911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
20450912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
20460913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
20470914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
20480915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
20490916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
20500917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
20510918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
20520919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
2053091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
2054091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
2055091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
2056091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
2057091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
2058091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
20590920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
20600921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
20610922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
20620923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
20630924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
20640925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
20650926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
20660927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
20670928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
20680929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
2069092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
2070092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
2071092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
2072092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
2073092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
2074092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
20750930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
20760931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
20770932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
20780933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
20790934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
20800935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
20810936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
20820937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
20830938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
20840939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
2085093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
2086093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
2087093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
2088093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
20890940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
20900941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
20910942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
20920943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
20930944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
20940945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
20950946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
20960947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
20970948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
20980949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
2099094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
2100094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
2101094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
2102094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
2103094E;DEVANAGARI VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;N;;;;;
21040950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
21050951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
21060952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
21070953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
21080954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
21090955;DEVANAGARI VOWEL SIGN CANDRA LONG E;Mn;0;NSM;;;;;N;;;;;
21100958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
21110959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
2112095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
2113095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
2114095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
2115095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
2116095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
2117095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
21180960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
21190961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
21200962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
21210963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
21220964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
21230965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
21240966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
21250967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
21260968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
21270969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
2128096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
2129096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
2130096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
2131096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
2132096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
2133096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
21340970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
21350971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;;
21360972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;;
21370979;DEVANAGARI LETTER ZHA;Lo;0;L;;;;;N;;;;;
2138097A;DEVANAGARI LETTER HEAVY YA;Lo;0;L;;;;;N;;;;;
2139097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;;
2140097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;;
2141097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
2142097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;;
2143097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;;
21440981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
21450982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
21460983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
21470985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
21480986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
21490987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
21500988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
21510989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
2152098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
2153098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
2154098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
2155098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
21560990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
21570993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
21580994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
21590995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
21600996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
21610997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
21620998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
21630999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
2164099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
2165099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
2166099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
2167099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
2168099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
2169099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
217009A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
217109A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
217209A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
217309A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
217409A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
217509A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
217609A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
217709A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
217809A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
217909AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
218009AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
218109AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
218209AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
218309AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
218409AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
218509B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
218609B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
218709B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
218809B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
218909B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
219009B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
219109BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
219209BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
219309BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
219409BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
219509C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
219609C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
219709C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
219809C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
219909C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
220009C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
220109C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
220209CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
220309CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
220409CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
220509CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;;
220609D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
220709DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
220809DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
220909DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
221009E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
221109E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
221209E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
221309E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
221409E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
221509E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
221609E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
221709E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
221809EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
221909EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
222009EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
222109ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
222209EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
222309EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
222409F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;;;;
222509F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;;;;
222609F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
222709F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
222809F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1/16;N;;;;;
222909F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;1/8;N;;;;;
223009F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3/16;N;;;;;
223109F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;1/4;N;;;;;
223209F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;3/4;N;;;;;
223309F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
223409FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
223509FB;BENGALI GANDA MARK;Sc;0;ET;;;;;N;;;;;
22360A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;;
22370A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
22380A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
22390A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
22400A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
22410A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
22420A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
22430A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
22440A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
22450A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
22460A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
22470A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
22480A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
22490A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
22500A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
22510A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
22520A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
22530A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
22540A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
22550A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
22560A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
22570A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
22580A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
22590A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
22600A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
22610A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
22620A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
22630A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
22640A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
22650A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
22660A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
22670A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
22680A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
22690A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
22700A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
22710A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
22720A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
22730A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
22740A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
22750A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
22760A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
22770A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
22780A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
22790A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
22800A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
22810A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
22820A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
22830A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
22840A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
22850A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
22860A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
22870A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
22880A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
22890A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
22900A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
22910A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
22920A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
22930A51;GURMUKHI SIGN UDAAT;Mn;0;NSM;;;;;N;;;;;
22940A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
22950A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
22960A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
22970A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
22980A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
22990A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
23000A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
23010A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
23020A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
23030A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
23040A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
23050A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
23060A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
23070A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
23080A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
23090A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
23100A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
23110A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
23120A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
23130A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
23140A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;;
23150A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
23160A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
23170A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
23180A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
23190A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
23200A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
23210A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
23220A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
23230A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
23240A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
23250A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
23260A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
23270A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
23280A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
23290A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
23300A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
23310A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
23320A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
23330A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
23340A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
23350A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
23360A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
23370A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
23380A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
23390A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
23400A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
23410A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
23420A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
23430AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
23440AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
23450AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
23460AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
23470AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
23480AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
23490AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
23500AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
23510AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
23520AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
23530AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
23540AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
23550AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
23560AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
23570AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
23580AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
23590AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
23600AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
23610AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
23620AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
23630AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
23640AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
23650AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
23660ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
23670ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
23680ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
23690ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
23700AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
23710AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
23720AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
23730AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
23740AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
23750AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
23760AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
23770AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
23780AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
23790ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
23800ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
23810ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
23820AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
23830AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
23840AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
23850AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
23860AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
23870AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
23880AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
23890AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
23900AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
23910AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
23920AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
23930AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
23940AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
23950AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
23960AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
23970AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
23980B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
23990B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
24000B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
24010B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
24020B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
24030B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
24040B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
24050B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
24060B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
24070B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
24080B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
24090B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
24100B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
24110B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
24120B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
24130B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
24140B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
24150B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
24160B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
24170B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
24180B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
24190B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
24200B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
24210B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
24220B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
24230B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
24240B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
24250B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
24260B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
24270B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
24280B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
24290B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
24300B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
24310B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
24320B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
24330B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
24340B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
24350B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
24360B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
24370B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
24380B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
24390B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
24400B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
24410B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
24420B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;;
24430B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
24440B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
24450B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
24460B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
24470B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
24480B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
24490B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
24500B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
24510B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
24520B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
24530B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
24540B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
24550B44;ORIYA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
24560B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
24570B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
24580B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
24590B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
24600B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
24610B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
24620B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
24630B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
24640B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
24650B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
24660B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
24670B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
24680B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
24690B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
24700B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
24710B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
24720B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
24730B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
24740B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
24750B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
24760B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
24770B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
24780B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
24790B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
24800B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
24810B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;;
24820B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
24830B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;;
24840B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
24850B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
24860B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
24870B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
24880B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
24890B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
24900B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
24910B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
24920B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
24930B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
24940B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
24950B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
24960B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
24970B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
24980B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
24990B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
25000B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
25010B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
25020BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
25030BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
25040BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
25050BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
25060BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
25070BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
25080BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
25090BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
25100BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
25110BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
25120BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
25130BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
25140BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
25150BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;;
25160BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
25170BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
25180BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
25190BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
25200BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
25210BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
25220BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
25230BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
25240BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
25250BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
25260BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
25270BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
25280BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
25290BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
25300BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
25310BD0;TAMIL OM;Lo;0;L;;;;;N;;;;;
25320BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
25330BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
25340BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
25350BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
25360BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
25370BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
25380BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
25390BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
25400BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
25410BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
25420BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
25430BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
25440BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
25450BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
25460BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;;;;
25470BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;;;;
25480BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;;;;
25490BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;;;;
25500BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;;;;
25510BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;;;;
25520BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
25530BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;;;;
25540C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
25550C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
25560C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
25570C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
25580C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
25590C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
25600C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
25610C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
25620C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
25630C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
25640C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
25650C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
25660C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
25670C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
25680C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
25690C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
25700C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
25710C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
25720C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
25730C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
25740C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
25750C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
25760C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
25770C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
25780C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
25790C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
25800C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
25810C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
25820C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
25830C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
25840C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
25850C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
25860C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
25870C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
25880C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
25890C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
25900C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
25910C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
25920C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
25930C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
25940C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
25950C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
25960C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
25970C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
25980C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
25990C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
26000C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
26010C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
26020C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
26030C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
26040C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
26050C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
26060C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
26070C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
26080C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
26090C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
26100C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
26110C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
26120C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
26130C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
26140C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
26150C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
26160C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
26170C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
26180C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
26190C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
26200C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
26210C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
26220C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
26230C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;;
26240C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;;
26250C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
26260C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
26270C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
26280C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
26290C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
26300C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
26310C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
26320C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
26330C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
26340C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
26350C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
26360C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
26370C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
26380C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
26390C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;;
26400C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
26410C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
26420C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
26430C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
26440C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
26450C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
26460C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;;
26470C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
26480C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
26490C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
26500C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
26510C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
26520C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
26530C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
26540C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
26550C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
26560C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
26570C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
26580C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
26590C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
26600C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
26610C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
26620C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
26630C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
26640C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
26650C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
26660C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
26670C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
26680C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
26690C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
26700C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
26710C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
26720C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
26730C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
26740CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
26750CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
26760CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
26770CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
26780CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
26790CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
26800CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
26810CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
26820CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
26830CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
26840CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
26850CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
26860CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
26870CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
26880CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
26890CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
26900CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
26910CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
26920CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
26930CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
26940CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
26950CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
26960CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
26970CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
26980CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
26990CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
27000CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
27010CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;;
27020CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
27030CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
27040CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
27050CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
27060CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
27070CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;;
27080CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
27090CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
27100CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
27110CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
27120CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
27130CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
27140CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
27150CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
27160CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
27170CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
27180CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
27190CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
27200CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
27210CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
27220CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
27230CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
27240CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
27250CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
27260CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
27270CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
27280CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
27290CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
27300CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
27310CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;;
27320CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;N;;;;;
27330D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
27340D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
27350D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
27360D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
27370D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
27380D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
27390D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
27400D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
27410D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
27420D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
27430D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
27440D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
27450D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
27460D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
27470D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
27480D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
27490D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
27500D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
27510D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
27520D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
27530D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
27540D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
27550D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
27560D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
27570D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
27580D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
27590D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
27600D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
27610D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
27620D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
27630D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
27640D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
27650D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
27660D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
27670D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
27680D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
27690D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
27700D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
27710D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
27720D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
27730D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
27740D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
27750D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
27760D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
27770D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
27780D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
27790D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
27800D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
27810D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
27820D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
27830D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
27840D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
27850D3D;MALAYALAM SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
27860D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
27870D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
27880D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
27890D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
27900D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
27910D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
27920D44;MALAYALAM VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
27930D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
27940D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
27950D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
27960D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
27970D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
27980D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
27990D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
28000D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
28010D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
28020D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
28030D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
28040D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
28050D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
28060D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
28070D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
28080D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
28090D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
28100D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
28110D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
28120D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
28130D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
28140D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
28150D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;;
28160D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
28170D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
28180D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
28190D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;
28200D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
28210D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;;
28220D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;;
28230D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;;
28240D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;;
28250D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;;
28260D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;;
28270D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;;
28280D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
28290D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
28300D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
28310D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
28320D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
28330D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
28340D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
28350D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
28360D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
28370D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
28380D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
28390D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
28400D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
28410D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
28420D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
28430D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
28440D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
28450D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
28460D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
28470D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
28480D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
28490D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
28500D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
28510D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
28520D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
28530D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
28540DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
28550DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
28560DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
28570DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
28580DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
28590DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
28600DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
28610DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
28620DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
28630DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
28640DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
28650DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
28660DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
28670DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
28680DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
28690DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
28700DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
28710DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
28720DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
28730DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
28740DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
28750DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
28760DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
28770DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
28780DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
28790DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
28800DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
28810DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
28820DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
28830DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
28840DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
28850DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
28860DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
28870DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
28880DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
28890DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
28900DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
28910DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
28920DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
28930DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
28940DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
28950DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
28960DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
28970DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
28980DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
28990DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
29000DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
29010DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
29020DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
29030DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
29040DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
29050DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
29060DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
29070DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
29080E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
29090E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
29100E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
29110E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
29120E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
29130E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
29140E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
29150E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
29160E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
29170E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
29180E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
29190E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
29200E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
29210E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
29220E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
29230E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
29240E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
29250E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
29260E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
29270E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
29280E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
29290E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
29300E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
29310E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
29320E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
29330E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
29340E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
29350E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
29360E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
29370E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
29380E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
29390E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
29400E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
29410E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
29420E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
29430E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
29440E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
29450E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
29460E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
29470E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
29480E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
29490E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
29500E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
29510E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
29520E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
29530E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
29540E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;;;;
29550E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
29560E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
29570E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
29580E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
29590E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
29600E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
29610E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
29620E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;;;;
29630E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
29640E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
29650E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
29660E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
29670E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
29680E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
29690E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
29700E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;;;;
29710E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;;
29720E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;;
29730E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;;
29740E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;;
29750E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
29760E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
29770E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
29780E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
29790E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
29800E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;;;;
29810E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
29820E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
29830E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
29840E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
29850E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
29860E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
29870E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
29880E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
29890E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
29900E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
29910E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
29920E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
29930E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
29940E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
29950E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
29960E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
29970E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
29980E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
29990E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
30000E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
30010E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
30020E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
30030E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
30040E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
30050E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
30060E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
30070E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
30080E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
30090E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
30100E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
30110E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
30120E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
30130EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
30140EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
30150EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
30160EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
30170EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
30180EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
30190EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
30200EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
30210EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
30220EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
30230EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
30240EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
30250EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
30260EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
30270EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
30280EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
30290EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
30300EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
30310EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
30320EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
30330EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
30340EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
30350EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
30360EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
30370EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
30380EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
30390EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
30400EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
30410EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
30420EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
30430EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
30440ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
30450ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
30460ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
30470ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
30480ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
30490ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
30500ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
30510ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
30520ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
30530ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
30540ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
30550ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
30560ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
30570ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
30580EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
30590EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
30600F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
30610F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;;;;
30620F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;;;;
30630F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;;;;
30640F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;;;;
30650F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;;
30660F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;;;;
30670F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;;;;
30680F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;;;;
30690F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;;;;
30700F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;;;;
30710F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;;;;
30720F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;;;;
30730F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;;;;
30740F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;;;;
30750F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;;;;
30760F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;;;;
30770F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;;;;
30780F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;;;;
30790F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;;;;
30800F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;;;;
30810F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;;;;
30820F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;;;;
30830F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;;;;
30840F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;;;;
30850F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;;;;
30860F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;;;;
30870F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;;;;
30880F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;;;;
30890F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;;;;
30900F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;;;;
30910F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;;;;
30920F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
30930F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
30940F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
30950F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
30960F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
30970F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
30980F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
30990F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
31000F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
31010F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
31020F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
31030F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
31040F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
31050F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
31060F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
31070F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
31080F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
31090F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
31100F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
31110F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
31120F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;;;;
31130F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;;;;
31140F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;;;;
31150F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;;;;
31160F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;;;;
31170F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;;;;
31180F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;;;;
31190F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;;;;
31200F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;;;;
31210F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;;;;
31220F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;;;;
31230F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;;;;
31240F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
31250F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
31260F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
31270F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
31280F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
31290F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
31300F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
31310F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
31320F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
31330F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
31340F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
31350F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
31360F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
31370F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
31380F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
31390F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
31400F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
31410F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
31420F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
31430F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
31440F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
31450F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
31460F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
31470F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
31480F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
31490F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
31500F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
31510F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
31520F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
31530F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
31540F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
31550F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
31560F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
31570F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;;;;
31580F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
31590F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
31600F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
31610F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
31620F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
31630F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
31640F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
31650F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;;;;
31660F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;;
31670F6C;TIBETAN LETTER RRA;Lo;0;L;;;;;N;;;;;
31680F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
31690F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
31700F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
31710F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
31720F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
31730F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
31740F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
31750F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
31760F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
31770F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
31780F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
31790F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
31800F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
31810F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;;;;
31820F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;;;;
31830F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
31840F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
31850F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;;;;
31860F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;;;;
31870F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
31880F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
31890F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;;;;
31900F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;;;;
31910F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;;;;
31920F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;;;;
31930F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;;;;
31940F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;;;;
31950F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
31960F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
31970F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
31980F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
31990F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
32000F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
32010F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
32020F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
32030F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
32040F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
32050F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
32060F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
32070F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
32080F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
32090F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
32100FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
32110FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
32120FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
32130FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
32140FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
32150FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
32160FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
32170FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
32180FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
32190FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
32200FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
32210FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
32220FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
32230FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;;;;
32240FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
32250FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
32260FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
32270FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;;;;
32280FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;;;;
32290FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
32300FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
32310FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
32320FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
32330FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
32340FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
32350FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
32360FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;;;;
32370FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;;;;
32380FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;;;;
32390FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;;;;
32400FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;;;;
32410FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
32420FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
32430FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;;;;
32440FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;;;;
32450FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;;;;
32460FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;;;;
32470FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;;;;
32480FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;;;;
32490FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;;;;
32500FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;;;;
32510FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;;;;
32520FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;;;;
32530FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;;;;
32540FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;;;;
32550FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;;;;
32560FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;;;;
32570FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;;;;
32580FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;;;;
32590FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;;;;
32600FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;;
32610FD5;RIGHT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;;
32620FD6;LEFT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;;
32630FD7;RIGHT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;;
32640FD8;LEFT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;;
32651000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
32661001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
32671002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
32681003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
32691004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
32701005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
32711006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
32721007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
32731008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
32741009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
3275100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
3276100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
3277100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
3278100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
3279100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
3280100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
32811010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
32821011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
32831012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
32841013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
32851014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
32861015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
32871016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
32881017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
32891018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
32901019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
3291101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
3292101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
3293101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
3294101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
3295101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
3296101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
32971020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
32981021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
32991022;MYANMAR LETTER SHAN A;Lo;0;L;;;;;N;;;;;
33001023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
33011024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
33021025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
33031026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
33041027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
33051028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;;
33061029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
3307102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
3308102B;MYANMAR VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;;
3309102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
3310102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
3311102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
3312102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
33131030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
33141031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
33151032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
33161033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;;
33171034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;;
33181035;MYANMAR VOWEL SIGN E ABOVE;Mn;0;NSM;;;;;N;;;;;
33191036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
33201037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
33211038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
33221039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
3323103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;;
3324103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;;
3325103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
3326103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
3327103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;;
3328103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;N;;;;;
33291040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
33301041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
33311042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
33321043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
33331044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
33341045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
33351046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
33361047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
33371048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
33381049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
3339104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
3340104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
3341104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
3342104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
3343104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
3344104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
33451050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
33461051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
33471052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
33481053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
33491054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
33501055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
33511056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
33521057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
33531058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
33541059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
3355105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;;
3356105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;;
3357105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;;
3358105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;;
3359105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;;
3360105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;;
33611060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
33621061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;;
33631062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;;
33641063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;;
33651064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;;
33661065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;;
33671066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;;
33681067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;;
33691068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;;
33701069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;;
3371106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;;
3372106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;;
3373106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;;
3374106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;;
3375106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;;
3376106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;;
33771070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;;
33781071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;;
33791072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;;
33801073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;;
33811074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;;
33821075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;;
33831076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;;
33841077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;;
33851078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;;
33861079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;;
3387107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;;
3388107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;;
3389107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;;
3390107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;;
3391107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;;
3392107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;;
33931080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;;
33941081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;;
33951082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
33961083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;;
33971084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;;
33981085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;;
33991086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;;
34001087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;;
34011088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;;
34021089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;;
3403108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;;
3404108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;;
3405108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;;
3406108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;;
3407108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;;
3408108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;;
34091090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
34101091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
34111092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
34121093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
34131094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
34141095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
34151096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
34161097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
34171098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
34181099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
3419109A;MYANMAR SIGN KHAMTI TONE-1;Mc;0;L;;;;;N;;;;;
3420109B;MYANMAR SIGN KHAMTI TONE-3;Mc;0;L;;;;;N;;;;;
3421109C;MYANMAR VOWEL SIGN AITON A;Mc;0;L;;;;;N;;;;;
3422109D;MYANMAR VOWEL SIGN AITON AI;Mn;0;NSM;;;;;N;;;;;
3423109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;;
3424109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;;
342510A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;2D00;
342610A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;2D01;
342710A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;2D02;
342810A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;;;2D03;
342910A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;2D04;
343010A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;;;2D05;
343110A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;;;2D06;
343210A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;;;2D07;
343310A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;;;2D08;
343410A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;;;2D09;
343510AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;;;2D0A;
343610AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;;;2D0B;
343710AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;;;2D0C;
343810AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;;;2D0D;
343910AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;;;2D0E;
344010AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;;;2D0F;
344110B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;;;2D10;
344210B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;2D11;
344310B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;;;2D12;
344410B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;;;2D13;
344510B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;;;2D14;
344610B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;;;2D15;
344710B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;;;2D16;
344810B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;;;2D17;
344910B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;;;2D18;
345010B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;;;2D19;
345110BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;;;2D1A;
345210BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;;;2D1B;
345310BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;;;2D1C;
345410BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;;;2D1D;
345510BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;;;2D1E;
345610BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;;;2D1F;
345710C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;;;2D20;
345810C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;;;2D21;
345910C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;;;2D22;
346010C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;2D23;
346110C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;;;2D24;
346210C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;2D25;
346310D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
346410D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
346510D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
346610D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
346710D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
346810D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
346910D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
347010D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
347110D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
347210D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
347310DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
347410DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
347510DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
347610DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
347710DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
347810DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
347910E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
348010E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
348110E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
348210E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
348310E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
348410E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
348510E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
348610E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
348710E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
348810E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
348910EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
349010EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
349110EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
349210ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
349310EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
349410EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
349510F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
349610F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
349710F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
349810F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
349910F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
350010F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
350110F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
350210F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
350310F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
350410F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;;
350510FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;;
350610FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
350710FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;;
35081100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
35091101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
35101102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
35111103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
35121104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;;
35131105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;;
35141106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;;
35151107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;;
35161108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;;
35171109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;;
3518110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;;
3519110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
3520110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;;
3521110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;;
3522110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
3523110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
35241110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
35251111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
35261112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;;
35271113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
35281114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
35291115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
35301116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
35311117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
35321118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
35331119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
3534111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
3535111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
3536111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
3537111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
3538111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
3539111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
35401120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
35411121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
35421122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
35431123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
35441124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
35451125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
35461126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
35471127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
35481128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
35491129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
3550112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
3551112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
3552112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
3553112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
3554112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
3555112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
35561130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
35571131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
35581132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
35591133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
35601134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
35611135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
35621136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
35631137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
35641138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
35651139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
3566113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
3567113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
3568113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
3569113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
3570113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
3571113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
35721140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
35731141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
35741142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
35751143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
35761144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
35771145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
35781146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
35791147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
35801148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
35811149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
3582114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
3583114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
3584114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
3585114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
3586114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
3587114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
35881150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
35891151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
35901152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
35911153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
35921154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
35931155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
35941156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
35951157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
35961158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
35971159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
3598115A;HANGUL CHOSEONG KIYEOK-TIKEUT;Lo;0;L;;;;;N;;;;;
3599115B;HANGUL CHOSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
3600115C;HANGUL CHOSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;;
3601115D;HANGUL CHOSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;;
3602115E;HANGUL CHOSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
3603115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
36041160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
36051161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
36061162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
36071163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
36081164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
36091165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
36101166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
36111167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
36121168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
36131169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
3614116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
3615116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
3616116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
3617116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
3618116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
3619116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
36201170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
36211171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
36221172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
36231173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
36241174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
36251175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
36261176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
36271177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
36281178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
36291179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
3630117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
3631117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
3632117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
3633117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
3634117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
3635117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
36361180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
36371181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
36381182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
36391183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
36401184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
36411185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
36421186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
36431187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
36441188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
36451189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
3646118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
3647118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
3648118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
3649118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
3650118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
3651118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
36521190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
36531191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
36541192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
36551193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
36561194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
36571195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
36581196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
36591197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
36601198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
36611199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
3662119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
3663119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
3664119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
3665119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
3666119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
3667119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
366811A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
366911A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
367011A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
367111A3;HANGUL JUNGSEONG A-EU;Lo;0;L;;;;;N;;;;;
367211A4;HANGUL JUNGSEONG YA-U;Lo;0;L;;;;;N;;;;;
367311A5;HANGUL JUNGSEONG YEO-YA;Lo;0;L;;;;;N;;;;;
367411A6;HANGUL JUNGSEONG O-YA;Lo;0;L;;;;;N;;;;;
367511A7;HANGUL JUNGSEONG O-YAE;Lo;0;L;;;;;N;;;;;
367611A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
367711A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
367811AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
367911AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;;
368011AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;;
368111AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;;
368211AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
368311AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;;
368411B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;;
368511B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;;
368611B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;;
368711B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;;
368811B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;;;;
368911B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;;
369011B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
369111B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;;
369211B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;;
369311B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
369411BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;;
369511BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;;
369611BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;;
369711BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;;
369811BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
369911BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
370011C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
370111C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
370211C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;;
370311C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
370411C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
370511C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
370611C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
370711C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
370811C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
370911C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
371011CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
371111CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
371211CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
371311CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
371411CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
371511CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
371611D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
371711D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
371811D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
371911D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
372011D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
372111D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
372211D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
372311D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
372411D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
372511D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
372611DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
372711DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
372811DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
372911DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
373011DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
373111DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
373211E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
373311E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
373411E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
373511E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
373611E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
373711E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
373811E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
373911E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
374011E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
374111E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
374211EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
374311EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
374411EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
374511ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
374611EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
374711EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
374811F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
374911F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
375011F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
375111F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
375211F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
375311F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
375411F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
375511F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
375611F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
375711F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
375811FA;HANGUL JONGSEONG KIYEOK-NIEUN;Lo;0;L;;;;;N;;;;;
375911FB;HANGUL JONGSEONG KIYEOK-PIEUP;Lo;0;L;;;;;N;;;;;
376011FC;HANGUL JONGSEONG KIYEOK-CHIEUCH;Lo;0;L;;;;;N;;;;;
376111FD;HANGUL JONGSEONG KIYEOK-KHIEUKH;Lo;0;L;;;;;N;;;;;
376211FE;HANGUL JONGSEONG KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;;
376311FF;HANGUL JONGSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
37641200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
37651201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
37661202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
37671203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
37681204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
37691205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
37701206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
37711207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;;
37721208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
37731209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
3774120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
3775120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
3776120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
3777120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
3778120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
3779120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
37801210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
37811211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
37821212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
37831213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
37841214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
37851215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
37861216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
37871217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
37881218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
37891219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
3790121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
3791121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
3792121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
3793121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
3794121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
3795121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
37961220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
37971221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
37981222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
37991223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
38001224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
38011225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
38021226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
38031227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
38041228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
38051229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
3806122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
3807122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
3808122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
3809122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
3810122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
3811122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
38121230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
38131231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
38141232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
38151233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
38161234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
38171235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
38181236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
38191237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
38201238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
38211239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
3822123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
3823123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
3824123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
3825123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
3826123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
3827123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
38281240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
38291241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
38301242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
38311243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
38321244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
38331245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
38341246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
38351247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;;
38361248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
3837124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
3838124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
3839124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
3840124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
38411250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
38421251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
38431252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
38441253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
38451254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
38461255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
38471256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
38481258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
3849125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
3850125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
3851125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
3852125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
38531260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
38541261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
38551262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
38561263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
38571264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
38581265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
38591266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
38601267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
38611268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
38621269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
3863126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
3864126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
3865126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
3866126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
3867126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
3868126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
38691270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
38701271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
38711272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
38721273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
38731274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
38741275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
38751276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
38761277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
38771278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
38781279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
3879127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
3880127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
3881127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
3882127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
3883127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
3884127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
38851280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
38861281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
38871282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
38881283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
38891284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
38901285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
38911286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
38921287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;;
38931288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
3894128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
3895128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
3896128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
3897128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
38981290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
38991291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
39001292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
39011293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
39021294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
39031295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
39041296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
39051297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
39061298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
39071299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
3908129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
3909129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
3910129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
3911129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
3912129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
3913129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
391412A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
391512A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
391612A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
391712A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
391812A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
391912A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
392012A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
392112A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
392212A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
392312A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
392412AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
392512AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
392612AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
392712AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
392812AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
392912AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;;
393012B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
393112B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
393212B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
393312B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
393412B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
393512B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
393612B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
393712BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
393812BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
393912BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
394012BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
394112BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
394212C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
394312C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
394412C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
394512C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
394612C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
394712C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
394812C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
394912CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
395012CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
395112CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
395212CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
395312CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
395412CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;;
395512D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
395612D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
395712D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
395812D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
395912D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
396012D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
396112D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
396212D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
396312D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
396412DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
396512DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
396612DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
396712DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
396812DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
396912DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
397012E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
397112E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
397212E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
397312E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
397412E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
397512E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
397612E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
397712E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
397812E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
397912E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
398012EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
398112EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
398212EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
398312ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
398412EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
398512EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;;
398612F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
398712F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
398812F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
398912F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
399012F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
399112F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
399212F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
399312F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
399412F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
399512F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
399612FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
399712FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
399812FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
399912FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
400012FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
400112FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
40021300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
40031301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
40041302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
40051303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
40061304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
40071305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
40081306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
40091307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
40101308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
40111309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
4012130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
4013130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
4014130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
4015130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
4016130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
4017130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;;
40181310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
40191312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
40201313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
40211314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
40221315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
40231318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
40241319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
4025131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
4026131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
4027131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
4028131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
4029131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
4030131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;;
40311320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
40321321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
40331322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
40341323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
40351324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
40361325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
40371326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
40381327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
40391328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
40401329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
4041132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
4042132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
4043132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
4044132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
4045132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
4046132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
40471330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
40481331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
40491332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
40501333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
40511334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
40521335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
40531336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
40541337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
40551338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
40561339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
4057133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
4058133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
4059133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
4060133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
4061133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
4062133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
40631340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
40641341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
40651342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
40661343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
40671344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
40681345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
40691346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
40701347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;;
40711348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
40721349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
4073134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
4074134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
4075134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
4076134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
4077134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
4078134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
40791350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
40801351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
40811352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
40821353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
40831354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
40841355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
40851356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
40861357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
40871358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
40881359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
4089135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
4090135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;
40911360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;;
40921361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
40931362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
40941363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
40951364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
40961365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
40971366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
40981367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
40991368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
41001369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;;
4101136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;;
4102136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;;
4103136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;;
4104136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;;
4105136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;;
4106136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;;
41071370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;;
41081371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;;
41091372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
41101373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
41111374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
41121375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
41131376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
41141377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
41151378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
41161379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
4117137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
4118137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
4119137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
41201380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;;
41211381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;;
41221382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;;
41231383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;;
41241384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;;
41251385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;;
41261386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;;
41271387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;;
41281388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;;
41291389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;;
4130138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;;
4131138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;;
4132138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;;
4133138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;;
4134138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;;
4135138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;;
41361390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;;
41371391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;;
41381392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;;
41391393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;;
41401394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;;
41411395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;;
41421396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;;
41431397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;;
41441398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;;
41451399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;;
414613A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
414713A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
414813A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
414913A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
415013A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
415113A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
415213A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
415313A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
415413A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
415513A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
415613AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
415713AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
415813AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
415913AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
416013AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
416113AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
416213B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
416313B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
416413B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
416513B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
416613B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
416713B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
416813B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
416913B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
417013B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
417113B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
417213BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
417313BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
417413BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
417513BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
417613BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
417713BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
417813C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
417913C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
418013C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
418113C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
418213C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
418313C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
418413C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
418513C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
418613C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
418713C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
418813CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
418913CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
419013CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
419113CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
419213CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
419313CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
419413D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
419513D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
419613D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
419713D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
419813D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
419913D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
420013D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
420113D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
420213D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
420313D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
420413DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
420513DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
420613DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
420713DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
420813DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
420913DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
421013E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
421113E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
421213E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
421313E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
421413E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
421513E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
421613E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
421713E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
421813E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
421913E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
422013EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
422113EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
422213EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
422313ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
422413EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
422513EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
422613F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
422713F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
422813F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
422913F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
423013F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
42311400;CANADIAN SYLLABICS HYPHEN;Pd;0;ON;;;;;N;;;;;
42321401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
42331402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
42341403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
42351404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
42361405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
42371406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
42381407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
42391408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
42401409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
4241140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
4242140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
4243140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
4244140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
4245140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
4246140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
42471410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
42481411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
42491412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
42501413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
42511414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
42521415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
42531416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
42541417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
42551418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
42561419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
4257141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
4258141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
4259141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
4260141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
4261141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
4262141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
42631420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
42641421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
42651422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
42661423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
42671424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
42681425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
42691426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
42701427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
42711428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
42721429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
4273142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
4274142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
4275142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
4276142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
4277142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
4278142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
42791430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
42801431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
42811432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
42821433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
42831434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
42841435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
42851436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
42861437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
42871438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
42881439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
4289143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
4290143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
4291143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
4292143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
4293143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
4294143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
42951440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
42961441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
42971442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
42981443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
42991444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
43001445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
43011446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
43021447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
43031448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
43041449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
4305144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
4306144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
4307144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
4308144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
4309144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
4310144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
43111450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
43121451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
43131452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
43141453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
43151454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
43161455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
43171456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
43181457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
43191458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
43201459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
4321145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
4322145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
4323145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
4324145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
4325145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
4326145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
43271460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
43281461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
43291462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
43301463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
43311464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
43321465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
43331466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
43341467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
43351468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
43361469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
4337146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
4338146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
4339146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
4340146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
4341146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
4342146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
43431470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
43441471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
43451472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
43461473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
43471474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
43481475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
43491476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
43501477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
43511478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
43521479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
4353147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
4354147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
4355147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
4356147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
4357147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
4358147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
43591480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
43601481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
43611482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
43621483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
43631484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
43641485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
43651486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
43661487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
43671488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
43681489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
4369148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
4370148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
4371148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
4372148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
4373148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
4374148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
43751490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
43761491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
43771492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
43781493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
43791494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
43801495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
43811496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
43821497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
43831498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
43841499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
4385149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
4386149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
4387149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
4388149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
4389149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
4390149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
439114A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
439214A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
439314A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
439414A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
439514A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
439614A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
439714A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
439814A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
439914A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
440014A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
440114AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
440214AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
440314AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
440414AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
440514AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
440614AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
440714B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
440814B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
440914B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
441014B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
441114B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
441214B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
441314B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
441414B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
441514B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
441614B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
441714BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
441814BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
441914BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
442014BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
442114BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
442214BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
442314C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
442414C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
442514C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
442614C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
442714C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
442814C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
442914C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
443014C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
443114C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
443214C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
443314CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
443414CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
443514CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
443614CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
443714CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
443814CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
443914D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
444014D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
444114D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
444214D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
444314D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
444414D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
444514D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
444614D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
444714D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
444814D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
444914DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
445014DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
445114DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
445214DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
445314DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
445414DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
445514E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
445614E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
445714E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
445814E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
445914E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
446014E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
446114E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
446214E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
446314E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
446414E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
446514EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
446614EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
446714EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
446814ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
446914EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
447014EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
447114F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
447214F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
447314F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
447414F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
447514F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
447614F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
447714F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
447814F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
447914F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
448014F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
448114FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
448214FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
448314FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
448414FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
448514FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
448614FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
44871500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
44881501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
44891502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
44901503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
44911504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
44921505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
44931506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
44941507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
44951508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
44961509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
4497150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
4498150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
4499150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
4500150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
4501150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
4502150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
45031510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
45041511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
45051512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
45061513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
45071514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
45081515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
45091516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
45101517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
45111518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
45121519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
4513151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
4514151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
4515151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
4516151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
4517151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
4518151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
45191520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
45201521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
45211522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
45221523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
45231524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
45241525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
45251526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
45261527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
45271528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
45281529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
4529152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
4530152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
4531152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
4532152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
4533152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
4534152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
45351530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
45361531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
45371532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
45381533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
45391534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
45401535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
45411536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
45421537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
45431538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
45441539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
4545153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
4546153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
4547153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
4548153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
4549153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
4550153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
45511540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
45521541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
45531542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
45541543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
45551544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
45561545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
45571546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
45581547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
45591548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
45601549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
4561154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
4562154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
4563154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
4564154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
4565154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
4566154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
45671550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
45681551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
45691552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
45701553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
45711554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
45721555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
45731556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
45741557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
45751558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
45761559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
4577155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
4578155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
4579155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
4580155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
4581155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
4582155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
45831560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
45841561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
45851562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
45861563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
45871564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
45881565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
45891566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
45901567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
45911568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
45921569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
4593156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
4594156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
4595156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
4596156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
4597156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
4598156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
45991570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
46001571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
46011572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
46021573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
46031574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
46041575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
46051576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
46061577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
46071578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
46081579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
4609157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
4610157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
4611157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
4612157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
4613157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
4614157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
46151580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
46161581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
46171582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
46181583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
46191584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
46201585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
46211586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
46221587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
46231588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
46241589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
4625158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
4626158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
4627158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
4628158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
4629158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
4630158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
46311590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
46321591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
46331592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
46341593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
46351594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
46361595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
46371596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
46381597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
46391598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
46401599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
4641159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
4642159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
4643159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
4644159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
4645159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
4646159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
464715A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
464815A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
464915A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
465015A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
465115A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
465215A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
465315A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
465415A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
465515A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
465615A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
465715AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
465815AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
465915AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
466015AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
466115AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
466215AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
466315B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
466415B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
466515B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
466615B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
466715B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
466815B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
466915B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
467015B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
467115B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
467215B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
467315BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
467415BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
467515BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
467615BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
467715BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
467815BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
467915C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
468015C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
468115C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
468215C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
468315C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
468415C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
468515C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
468615C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
468715C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
468815C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
468915CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
469015CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
469115CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
469215CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
469315CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
469415CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
469515D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
469615D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
469715D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
469815D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
469915D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
470015D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
470115D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
470215D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
470315D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
470415D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
470515DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
470615DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
470715DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
470815DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
470915DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
471015DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
471115E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
471215E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
471315E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
471415E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
471515E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
471615E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
471715E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
471815E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
471915E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
472015E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
472115EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
472215EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
472315EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
472415ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
472515EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
472615EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
472715F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
472815F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
472915F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
473015F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
473115F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
473215F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
473315F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
473415F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
473515F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
473615F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
473715FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
473815FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
473915FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
474015FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
474115FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
474215FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
47431600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
47441601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
47451602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
47461603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
47471604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
47481605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
47491606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
47501607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
47511608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
47521609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
4753160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
4754160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
4755160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
4756160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
4757160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
4758160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
47591610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
47601611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
47611612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
47621613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
47631614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
47641615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
47651616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
47661617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
47671618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
47681619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
4769161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
4770161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
4771161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
4772161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
4773161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
4774161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
47751620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
47761621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
47771622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
47781623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
47791624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
47801625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
47811626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
47821627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
47831628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
47841629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
4785162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
4786162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
4787162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
4788162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
4789162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
4790162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
47911630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
47921631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
47931632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
47941633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
47951634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
47961635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
47971636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
47981637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
47991638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
48001639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
4801163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
4802163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
4803163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
4804163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
4805163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
4806163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
48071640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
48081641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
48091642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
48101643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
48111644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
48121645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
48131646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
48141647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
48151648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
48161649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
4817164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
4818164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
4819164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
4820164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
4821164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
4822164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
48231650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
48241651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
48251652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
48261653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
48271654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
48281655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
48291656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
48301657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
48311658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
48321659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
4833165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
4834165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
4835165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
4836165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
4837165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
4838165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
48391660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
48401661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
48411662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
48421663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
48431664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
48441665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
48451666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
48461667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
48471668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
48481669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
4849166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
4850166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
4851166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
4852166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
4853166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
4854166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
48551670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
48561671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
48571672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
48581673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
48591674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
48601675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
48611676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
48621677;CANADIAN SYLLABICS WOODS-CREE THWEE;Lo;0;L;;;;;N;;;;;
48631678;CANADIAN SYLLABICS WOODS-CREE THWI;Lo;0;L;;;;;N;;;;;
48641679;CANADIAN SYLLABICS WOODS-CREE THWII;Lo;0;L;;;;;N;;;;;
4865167A;CANADIAN SYLLABICS WOODS-CREE THWO;Lo;0;L;;;;;N;;;;;
4866167B;CANADIAN SYLLABICS WOODS-CREE THWOO;Lo;0;L;;;;;N;;;;;
4867167C;CANADIAN SYLLABICS WOODS-CREE THWA;Lo;0;L;;;;;N;;;;;
4868167D;CANADIAN SYLLABICS WOODS-CREE THWAA;Lo;0;L;;;;;N;;;;;
4869167E;CANADIAN SYLLABICS WOODS-CREE FINAL TH;Lo;0;L;;;;;N;;;;;
4870167F;CANADIAN SYLLABICS BLACKFOOT W;Lo;0;L;;;;;N;;;;;
48711680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
48721681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
48731682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
48741683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
48751684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
48761685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
48771686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
48781687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
48791688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
48801689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
4881168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
4882168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
4883168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
4884168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
4885168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
4886168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
48871690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
48881691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
48891692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
48901693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
48911694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
48921695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
48931696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
48941697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
48951698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
48961699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
4897169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
4898169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;;
4899169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;;
490016A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
490116A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
490216A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
490316A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
490416A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
490516A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
490616A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
490716A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
490816A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
490916A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
491016AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
491116AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
491216AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
491316AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
491416AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
491516AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
491616B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
491716B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
491816B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
491916B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
492016B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
492116B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
492216B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
492316B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
492416B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
492516B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
492616BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
492716BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
492816BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
492916BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
493016BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
493116BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
493216C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
493316C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
493416C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
493516C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
493616C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
493716C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
493816C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
493916C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
494016C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
494116C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
494216CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
494316CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
494416CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
494516CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
494616CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
494716CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
494816D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
494916D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
495016D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
495116D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
495216D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
495316D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
495416D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
495516D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
495616D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
495716D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
495816DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
495916DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
496016DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
496116DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
496216DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
496316DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
496416E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
496516E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
496616E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
496716E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
496816E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
496916E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
497016E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
497116E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
497216E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
497316E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
497416EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
497516EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
497616EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
497716ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
497816EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;;;;
497916EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;;;;
498016F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;;;;
49811700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;;
49821701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;;
49831702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;;
49841703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;;
49851704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;;
49861705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;;
49871706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;;
49881707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;;
49891708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;;
49901709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;;
4991170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
4992170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
4993170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
4994170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
4995170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
49961710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
49971711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;;
49981712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
49991713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
50001714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
50011720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
50021721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
50031722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
50041723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;;
50051724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;;
50061725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;;
50071726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;;
50081727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;;
50091728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;;
50101729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;;
5011172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;;
5012172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;;
5013172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;;
5014172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;;
5015172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;;
5016172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;;
50171730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;;
50181731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
50191732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
50201733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
50211734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
50221735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
50231736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
50241740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
50251741;BUHID LETTER I;Lo;0;L;;;;;N;;;;;
50261742;BUHID LETTER U;Lo;0;L;;;;;N;;;;;
50271743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;;
50281744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;;
50291745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;;
50301746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;;
50311747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;;
50321748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;;
50331749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;;
5034174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;;
5035174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;;
5036174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;;
5037174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;;
5038174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;;
5039174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;;
50401750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;;
50411751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;;
50421752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
50431753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
50441760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;;
50451761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;;
50461762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;;
50471763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;;
50481764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;;
50491765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;;
50501766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;;
50511767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;;
50521768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;;
50531769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;;
5054176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;;
5055176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;;
5056176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;;
5057176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;;
5058176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;;
50591770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;;
50601772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
50611773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
50621780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
50631781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
50641782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
50651783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
50661784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
50671785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
50681786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
50691787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
50701788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
50711789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
5072178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
5073178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
5074178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
5075178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
5076178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
5077178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
50781790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
50791791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
50801792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
50811793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
50821794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
50831795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
50841796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
50851797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
50861798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
50871799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
5088179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
5089179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
5090179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
5091179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
5092179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
5093179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
509417A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
509517A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
509617A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
509717A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;;
509817A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;;
509917A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
510017A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
510117A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
510217A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
510317A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
510417AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
510517AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
510617AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
510717AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
510817AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
510917AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
511017B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
511117B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
511217B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
511317B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
511417B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;;;;
511517B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;;;;
511617B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
511717B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
511817B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
511917B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
512017BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
512117BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
512217BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
512317BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
512417BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
512517BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
512617C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
512717C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
512817C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
512917C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
513017C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
513117C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
513217C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
513317C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
513417C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
513517C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
513617CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
513717CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
513817CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
513917CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
514017CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
514117CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
514217D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
514317D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
514417D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
514517D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;;
514617D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
514717D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
514817D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
514917D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;;
515017D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;;
515117D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
515217DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
515317DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
515417DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;;
515517DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;;
515617E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
515717E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
515817E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
515917E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
516017E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
516117E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
516217E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
516317E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
516417E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
516517E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
516617F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;;
516717F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;;
516817F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;;
516917F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;;
517017F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;;
517117F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;;
517217F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;;
517317F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;;
517417F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;;
517517F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;;
51761800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
51771801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
51781802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
51791803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
51801804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
51811805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
51821806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
51831807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
51841808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
51851809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
5186180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
5187180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;
5188180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
5189180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
5190180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;;
51911810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
51921811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
51931812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
51941813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
51951814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
51961815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
51971816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
51981817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
51991818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
52001819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
52011820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
52021821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
52031822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
52041823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
52051824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
52061825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
52071826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
52081827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
52091828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
52101829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
5211182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
5212182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
5213182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
5214182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
5215182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
5216182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
52171830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
52181831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
52191832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
52201833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
52211834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
52221835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
52231836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
52241837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
52251838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
52261839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
5227183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
5228183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
5229183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
5230183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
5231183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
5232183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
52331840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
52341841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
52351842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
52361843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
52371844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
52381845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
52391846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
52401847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
52411848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
52421849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
5243184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
5244184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
5245184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
5246184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
5247184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
5248184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
52491850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
52501851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
52511852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
52521853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
52531854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
52541855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
52551856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
52561857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
52571858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
52581859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
5259185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
5260185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
5261185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
5262185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
5263185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
5264185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
52651860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
52661861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
52671862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
52681863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
52691864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
52701865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
52711866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
52721867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
52731868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
52741869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
5275186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
5276186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
5277186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
5278186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
5279186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
5280186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
52811870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
52821871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
52831872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
52841873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
52851874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
52861875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
52871876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
52881877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
52891880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
52901881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
52911882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
52921883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
52931884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
52941885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
52951886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
52961887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
52971888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
52981889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
5299188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
5300188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
5301188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
5302188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
5303188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
5304188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
53051890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
53061891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
53071892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
53081893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
53091894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
53101895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
53111896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
53121897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
53131898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
53141899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
5315189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
5316189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
5317189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
5318189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
5319189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
5320189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
532118A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
532218A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
532318A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
532418A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
532518A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
532618A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
532718A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
532818A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
532918A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
533018A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
533118AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;;
533218B0;CANADIAN SYLLABICS OY;Lo;0;L;;;;;N;;;;;
533318B1;CANADIAN SYLLABICS AY;Lo;0;L;;;;;N;;;;;
533418B2;CANADIAN SYLLABICS AAY;Lo;0;L;;;;;N;;;;;
533518B3;CANADIAN SYLLABICS WAY;Lo;0;L;;;;;N;;;;;
533618B4;CANADIAN SYLLABICS POY;Lo;0;L;;;;;N;;;;;
533718B5;CANADIAN SYLLABICS PAY;Lo;0;L;;;;;N;;;;;
533818B6;CANADIAN SYLLABICS PWOY;Lo;0;L;;;;;N;;;;;
533918B7;CANADIAN SYLLABICS TAY;Lo;0;L;;;;;N;;;;;
534018B8;CANADIAN SYLLABICS KAY;Lo;0;L;;;;;N;;;;;
534118B9;CANADIAN SYLLABICS KWAY;Lo;0;L;;;;;N;;;;;
534218BA;CANADIAN SYLLABICS MAY;Lo;0;L;;;;;N;;;;;
534318BB;CANADIAN SYLLABICS NOY;Lo;0;L;;;;;N;;;;;
534418BC;CANADIAN SYLLABICS NAY;Lo;0;L;;;;;N;;;;;
534518BD;CANADIAN SYLLABICS LAY;Lo;0;L;;;;;N;;;;;
534618BE;CANADIAN SYLLABICS SOY;Lo;0;L;;;;;N;;;;;
534718BF;CANADIAN SYLLABICS SAY;Lo;0;L;;;;;N;;;;;
534818C0;CANADIAN SYLLABICS SHOY;Lo;0;L;;;;;N;;;;;
534918C1;CANADIAN SYLLABICS SHAY;Lo;0;L;;;;;N;;;;;
535018C2;CANADIAN SYLLABICS SHWOY;Lo;0;L;;;;;N;;;;;
535118C3;CANADIAN SYLLABICS YOY;Lo;0;L;;;;;N;;;;;
535218C4;CANADIAN SYLLABICS YAY;Lo;0;L;;;;;N;;;;;
535318C5;CANADIAN SYLLABICS RAY;Lo;0;L;;;;;N;;;;;
535418C6;CANADIAN SYLLABICS NWI;Lo;0;L;;;;;N;;;;;
535518C7;CANADIAN SYLLABICS OJIBWAY NWI;Lo;0;L;;;;;N;;;;;
535618C8;CANADIAN SYLLABICS NWII;Lo;0;L;;;;;N;;;;;
535718C9;CANADIAN SYLLABICS OJIBWAY NWII;Lo;0;L;;;;;N;;;;;
535818CA;CANADIAN SYLLABICS NWO;Lo;0;L;;;;;N;;;;;
535918CB;CANADIAN SYLLABICS OJIBWAY NWO;Lo;0;L;;;;;N;;;;;
536018CC;CANADIAN SYLLABICS NWOO;Lo;0;L;;;;;N;;;;;
536118CD;CANADIAN SYLLABICS OJIBWAY NWOO;Lo;0;L;;;;;N;;;;;
536218CE;CANADIAN SYLLABICS RWEE;Lo;0;L;;;;;N;;;;;
536318CF;CANADIAN SYLLABICS RWI;Lo;0;L;;;;;N;;;;;
536418D0;CANADIAN SYLLABICS RWII;Lo;0;L;;;;;N;;;;;
536518D1;CANADIAN SYLLABICS RWO;Lo;0;L;;;;;N;;;;;
536618D2;CANADIAN SYLLABICS RWOO;Lo;0;L;;;;;N;;;;;
536718D3;CANADIAN SYLLABICS RWA;Lo;0;L;;;;;N;;;;;
536818D4;CANADIAN SYLLABICS OJIBWAY P;Lo;0;L;;;;;N;;;;;
536918D5;CANADIAN SYLLABICS OJIBWAY T;Lo;0;L;;;;;N;;;;;
537018D6;CANADIAN SYLLABICS OJIBWAY K;Lo;0;L;;;;;N;;;;;
537118D7;CANADIAN SYLLABICS OJIBWAY C;Lo;0;L;;;;;N;;;;;
537218D8;CANADIAN SYLLABICS OJIBWAY M;Lo;0;L;;;;;N;;;;;
537318D9;CANADIAN SYLLABICS OJIBWAY N;Lo;0;L;;;;;N;;;;;
537418DA;CANADIAN SYLLABICS OJIBWAY S;Lo;0;L;;;;;N;;;;;
537518DB;CANADIAN SYLLABICS OJIBWAY SH;Lo;0;L;;;;;N;;;;;
537618DC;CANADIAN SYLLABICS EASTERN W;Lo;0;L;;;;;N;;;;;
537718DD;CANADIAN SYLLABICS WESTERN W;Lo;0;L;;;;;N;;;;;
537818DE;CANADIAN SYLLABICS FINAL SMALL RING;Lo;0;L;;;;;N;;;;;
537918DF;CANADIAN SYLLABICS FINAL RAISED DOT;Lo;0;L;;;;;N;;;;;
538018E0;CANADIAN SYLLABICS R-CREE RWE;Lo;0;L;;;;;N;;;;;
538118E1;CANADIAN SYLLABICS WEST-CREE LOO;Lo;0;L;;;;;N;;;;;
538218E2;CANADIAN SYLLABICS WEST-CREE LAA;Lo;0;L;;;;;N;;;;;
538318E3;CANADIAN SYLLABICS THWE;Lo;0;L;;;;;N;;;;;
538418E4;CANADIAN SYLLABICS THWA;Lo;0;L;;;;;N;;;;;
538518E5;CANADIAN SYLLABICS TTHWE;Lo;0;L;;;;;N;;;;;
538618E6;CANADIAN SYLLABICS TTHOO;Lo;0;L;;;;;N;;;;;
538718E7;CANADIAN SYLLABICS TTHAA;Lo;0;L;;;;;N;;;;;
538818E8;CANADIAN SYLLABICS TLHWE;Lo;0;L;;;;;N;;;;;
538918E9;CANADIAN SYLLABICS TLHOO;Lo;0;L;;;;;N;;;;;
539018EA;CANADIAN SYLLABICS SAYISI SHWE;Lo;0;L;;;;;N;;;;;
539118EB;CANADIAN SYLLABICS SAYISI SHOO;Lo;0;L;;;;;N;;;;;
539218EC;CANADIAN SYLLABICS SAYISI HOO;Lo;0;L;;;;;N;;;;;
539318ED;CANADIAN SYLLABICS CARRIER GWU;Lo;0;L;;;;;N;;;;;
539418EE;CANADIAN SYLLABICS CARRIER DENE GEE;Lo;0;L;;;;;N;;;;;
539518EF;CANADIAN SYLLABICS CARRIER GAA;Lo;0;L;;;;;N;;;;;
539618F0;CANADIAN SYLLABICS CARRIER GWA;Lo;0;L;;;;;N;;;;;
539718F1;CANADIAN SYLLABICS SAYISI JUU;Lo;0;L;;;;;N;;;;;
539818F2;CANADIAN SYLLABICS CARRIER JWA;Lo;0;L;;;;;N;;;;;
539918F3;CANADIAN SYLLABICS BEAVER DENE L;Lo;0;L;;;;;N;;;;;
540018F4;CANADIAN SYLLABICS BEAVER DENE R;Lo;0;L;;;;;N;;;;;
540118F5;CANADIAN SYLLABICS CARRIER DENTAL S;Lo;0;L;;;;;N;;;;;
54021900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;;
54031901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;;
54041902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;;
54051903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;;
54061904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;;
54071905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;;
54081906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;;
54091907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;;
54101908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;;
54111909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;;
5412190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;;
5413190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;;
5414190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;;
5415190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;;
5416190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;;
5417190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;;
54181910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;;
54191911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;;
54201912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;;
54211913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;;
54221914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;;
54231915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;;
54241916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;;
54251917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;;
54261918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;;
54271919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;;
5428191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;;
5429191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;;
5430191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;;
54311920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;;
54321921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
54331922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
54341923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
54351924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
54361925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
54371926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
54381927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
54391928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
54401929;LIMBU SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;
5441192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
5442192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;N;;;;;
54431930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;;
54441931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;;
54451932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;;
54461933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;;
54471934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;;
54481935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;;
54491936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;;
54501937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;;
54511938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;;
54521939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;;
5453193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;;
5454193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;;
54551940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;;
54561944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
54571945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;;
54581946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
54591947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
54601948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
54611949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
5462194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
5463194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
5464194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
5465194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
5466194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
5467194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
54681950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;;
54691951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;;
54701952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;;
54711953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;;
54721954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;;
54731955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;;
54741956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;;
54751957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;;
54761958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;;
54771959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;;
5478195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;;
5479195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;;
5480195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;;
5481195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;;
5482195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;;
5483195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;;
54841960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;;
54851961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;;
54861962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;;
54871963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;;
54881964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;;
54891965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;;
54901966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;;
54911967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;;
54921968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;;
54931969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;;
5494196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;;
5495196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;;
5496196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;;
5497196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;;
54981970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;;
54991971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;;
55001972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;;
55011973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;;
55021974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;;
55031980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;;
55041981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;;
55051982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;;
55061983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;;
55071984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;;
55081985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;;
55091986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;;
55101987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;;
55111988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;;
55121989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;;
5513198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;;
5514198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;;
5515198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;;
5516198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;;
5517198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;;
5518198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;;
55191990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;;
55201991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;;
55211992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;;
55221993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;;
55231994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;;
55241995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;
55251996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;;
55261997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;;
55271998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;;
55281999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;;
5529199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;;
5530199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;;
5531199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;;
5532199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;;
5533199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;;
5534199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;;
553519A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;;
553619A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;;
553719A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;;
553819A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;;
553919A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;;
554019A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;;
554119A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;;
554219A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;;
554319A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;;
554419A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;;
554519AA;NEW TAI LUE LETTER HIGH SUA;Lo;0;L;;;;;N;;;;;
554619AB;NEW TAI LUE LETTER LOW SUA;Lo;0;L;;;;;N;;;;;
554719B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;;
554819B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
554919B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
555019B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
555119B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
555219B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
555319B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
555419B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
555519B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;;
555619B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;;
555719BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;;
555819BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;;
555919BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;;
556019BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;;
556119BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;;
556219BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;;
556319C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;;
556419C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;;
556519C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
556619C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;;
556719C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;;
556819C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;;
556919C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;;
557019C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;;
557119C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;;
557219C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;;
557319D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
557419D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
557519D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
557619D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
557719D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
557819D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
557919D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
558019D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
558119D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
558219D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
558319DA;NEW TAI LUE THAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
558419DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;;
558519DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;;
558619E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;;
558719E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;;
558819E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;;
558919E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;;
559019E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;;
559119E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;;
559219E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;;
559319E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;;
559419E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;;
559519E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;;
559619EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;;
559719EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;;
559819EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;;
559919ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;;
560019EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;;
560119EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;;
560219F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;;
560319F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;;
560419F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;;
560519F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;;
560619F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;;
560719F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;;
560819F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;;
560919F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;;
561019F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;;
561119F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;;
561219FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;;
561319FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;;
561419FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;;
561519FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;;
561619FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;;
561719FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;;
56181A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;;
56191A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;;
56201A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
56211A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;;
56221A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;;
56231A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;;
56241A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;;
56251A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;;
56261A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;;
56271A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;;
56281A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;;
56291A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;;
56301A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;;
56311A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;;
56321A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
56331A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;;
56341A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;;
56351A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;;
56361A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;;
56371A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;;
56381A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;;
56391A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;;
56401A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;;
56411A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;
56421A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;;
56431A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
56441A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
56451A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
56461A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;;
56471A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;;
56481A20;TAI THAM LETTER HIGH KA;Lo;0;L;;;;;N;;;;;
56491A21;TAI THAM LETTER HIGH KHA;Lo;0;L;;;;;N;;;;;
56501A22;TAI THAM LETTER HIGH KXA;Lo;0;L;;;;;N;;;;;
56511A23;TAI THAM LETTER LOW KA;Lo;0;L;;;;;N;;;;;
56521A24;TAI THAM LETTER LOW KXA;Lo;0;L;;;;;N;;;;;
56531A25;TAI THAM LETTER LOW KHA;Lo;0;L;;;;;N;;;;;
56541A26;TAI THAM LETTER NGA;Lo;0;L;;;;;N;;;;;
56551A27;TAI THAM LETTER HIGH CA;Lo;0;L;;;;;N;;;;;
56561A28;TAI THAM LETTER HIGH CHA;Lo;0;L;;;;;N;;;;;
56571A29;TAI THAM LETTER LOW CA;Lo;0;L;;;;;N;;;;;
56581A2A;TAI THAM LETTER LOW SA;Lo;0;L;;;;;N;;;;;
56591A2B;TAI THAM LETTER LOW CHA;Lo;0;L;;;;;N;;;;;
56601A2C;TAI THAM LETTER NYA;Lo;0;L;;;;;N;;;;;
56611A2D;TAI THAM LETTER RATA;Lo;0;L;;;;;N;;;;;
56621A2E;TAI THAM LETTER HIGH RATHA;Lo;0;L;;;;;N;;;;;
56631A2F;TAI THAM LETTER DA;Lo;0;L;;;;;N;;;;;
56641A30;TAI THAM LETTER LOW RATHA;Lo;0;L;;;;;N;;;;;
56651A31;TAI THAM LETTER RANA;Lo;0;L;;;;;N;;;;;
56661A32;TAI THAM LETTER HIGH TA;Lo;0;L;;;;;N;;;;;
56671A33;TAI THAM LETTER HIGH THA;Lo;0;L;;;;;N;;;;;
56681A34;TAI THAM LETTER LOW TA;Lo;0;L;;;;;N;;;;;
56691A35;TAI THAM LETTER LOW THA;Lo;0;L;;;;;N;;;;;
56701A36;TAI THAM LETTER NA;Lo;0;L;;;;;N;;;;;
56711A37;TAI THAM LETTER BA;Lo;0;L;;;;;N;;;;;
56721A38;TAI THAM LETTER HIGH PA;Lo;0;L;;;;;N;;;;;
56731A39;TAI THAM LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;
56741A3A;TAI THAM LETTER HIGH FA;Lo;0;L;;;;;N;;;;;
56751A3B;TAI THAM LETTER LOW PA;Lo;0;L;;;;;N;;;;;
56761A3C;TAI THAM LETTER LOW FA;Lo;0;L;;;;;N;;;;;
56771A3D;TAI THAM LETTER LOW PHA;Lo;0;L;;;;;N;;;;;
56781A3E;TAI THAM LETTER MA;Lo;0;L;;;;;N;;;;;
56791A3F;TAI THAM LETTER LOW YA;Lo;0;L;;;;;N;;;;;
56801A40;TAI THAM LETTER HIGH YA;Lo;0;L;;;;;N;;;;;
56811A41;TAI THAM LETTER RA;Lo;0;L;;;;;N;;;;;
56821A42;TAI THAM LETTER RUE;Lo;0;L;;;;;N;;;;;
56831A43;TAI THAM LETTER LA;Lo;0;L;;;;;N;;;;;
56841A44;TAI THAM LETTER LUE;Lo;0;L;;;;;N;;;;;
56851A45;TAI THAM LETTER WA;Lo;0;L;;;;;N;;;;;
56861A46;TAI THAM LETTER HIGH SHA;Lo;0;L;;;;;N;;;;;
56871A47;TAI THAM LETTER HIGH SSA;Lo;0;L;;;;;N;;;;;
56881A48;TAI THAM LETTER HIGH SA;Lo;0;L;;;;;N;;;;;
56891A49;TAI THAM LETTER HIGH HA;Lo;0;L;;;;;N;;;;;
56901A4A;TAI THAM LETTER LLA;Lo;0;L;;;;;N;;;;;
56911A4B;TAI THAM LETTER A;Lo;0;L;;;;;N;;;;;
56921A4C;TAI THAM LETTER LOW HA;Lo;0;L;;;;;N;;;;;
56931A4D;TAI THAM LETTER I;Lo;0;L;;;;;N;;;;;
56941A4E;TAI THAM LETTER II;Lo;0;L;;;;;N;;;;;
56951A4F;TAI THAM LETTER U;Lo;0;L;;;;;N;;;;;
56961A50;TAI THAM LETTER UU;Lo;0;L;;;;;N;;;;;
56971A51;TAI THAM LETTER EE;Lo;0;L;;;;;N;;;;;
56981A52;TAI THAM LETTER OO;Lo;0;L;;;;;N;;;;;
56991A53;TAI THAM LETTER LAE;Lo;0;L;;;;;N;;;;;
57001A54;TAI THAM LETTER GREAT SA;Lo;0;L;;;;;N;;;;;
57011A55;TAI THAM CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
57021A56;TAI THAM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
57031A57;TAI THAM CONSONANT SIGN LA TANG LAI;Mc;0;L;;;;;N;;;;;
57041A58;TAI THAM SIGN MAI KANG LAI;Mn;0;NSM;;;;;N;;;;;
57051A59;TAI THAM CONSONANT SIGN FINAL NGA;Mn;0;NSM;;;;;N;;;;;
57061A5A;TAI THAM CONSONANT SIGN LOW PA;Mn;0;NSM;;;;;N;;;;;
57071A5B;TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA;Mn;0;NSM;;;;;N;;;;;
57081A5C;TAI THAM CONSONANT SIGN MA;Mn;0;NSM;;;;;N;;;;;
57091A5D;TAI THAM CONSONANT SIGN BA;Mn;0;NSM;;;;;N;;;;;
57101A5E;TAI THAM CONSONANT SIGN SA;Mn;0;NSM;;;;;N;;;;;
57111A60;TAI THAM SIGN SAKOT;Mn;9;NSM;;;;;N;;;;;
57121A61;TAI THAM VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
57131A62;TAI THAM VOWEL SIGN MAI SAT;Mn;0;NSM;;;;;N;;;;;
57141A63;TAI THAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
57151A64;TAI THAM VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;;
57161A65;TAI THAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
57171A66;TAI THAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
57181A67;TAI THAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;
57191A68;TAI THAM VOWEL SIGN UUE;Mn;0;NSM;;;;;N;;;;;
57201A69;TAI THAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
57211A6A;TAI THAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
57221A6B;TAI THAM VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
57231A6C;TAI THAM VOWEL SIGN OA BELOW;Mn;0;NSM;;;;;N;;;;;
57241A6D;TAI THAM VOWEL SIGN OY;Mc;0;L;;;;;N;;;;;
57251A6E;TAI THAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
57261A6F;TAI THAM VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
57271A70;TAI THAM VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
57281A71;TAI THAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
57291A72;TAI THAM VOWEL SIGN THAM AI;Mc;0;L;;;;;N;;;;;
57301A73;TAI THAM VOWEL SIGN OA ABOVE;Mn;0;NSM;;;;;N;;;;;
57311A74;TAI THAM SIGN MAI KANG;Mn;0;NSM;;;;;N;;;;;
57321A75;TAI THAM SIGN TONE-1;Mn;230;NSM;;;;;N;;;;;
57331A76;TAI THAM SIGN TONE-2;Mn;230;NSM;;;;;N;;;;;
57341A77;TAI THAM SIGN KHUEN TONE-3;Mn;230;NSM;;;;;N;;;;;
57351A78;TAI THAM SIGN KHUEN TONE-4;Mn;230;NSM;;;;;N;;;;;
57361A79;TAI THAM SIGN KHUEN TONE-5;Mn;230;NSM;;;;;N;;;;;
57371A7A;TAI THAM SIGN RA HAAM;Mn;230;NSM;;;;;N;;;;;
57381A7B;TAI THAM SIGN MAI SAM;Mn;230;NSM;;;;;N;;;;;
57391A7C;TAI THAM SIGN KHUEN-LUE KARAN;Mn;230;NSM;;;;;N;;;;;
57401A7F;TAI THAM COMBINING CRYPTOGRAMMIC DOT;Mn;220;NSM;;;;;N;;;;;
57411A80;TAI THAM HORA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
57421A81;TAI THAM HORA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
57431A82;TAI THAM HORA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
57441A83;TAI THAM HORA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
57451A84;TAI THAM HORA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
57461A85;TAI THAM HORA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
57471A86;TAI THAM HORA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
57481A87;TAI THAM HORA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
57491A88;TAI THAM HORA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
57501A89;TAI THAM HORA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
57511A90;TAI THAM THAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
57521A91;TAI THAM THAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
57531A92;TAI THAM THAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
57541A93;TAI THAM THAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
57551A94;TAI THAM THAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
57561A95;TAI THAM THAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
57571A96;TAI THAM THAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
57581A97;TAI THAM THAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
57591A98;TAI THAM THAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
57601A99;TAI THAM THAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
57611AA0;TAI THAM SIGN WIANG;Po;0;L;;;;;N;;;;;
57621AA1;TAI THAM SIGN WIANGWAAK;Po;0;L;;;;;N;;;;;
57631AA2;TAI THAM SIGN SAWAN;Po;0;L;;;;;N;;;;;
57641AA3;TAI THAM SIGN KEOW;Po;0;L;;;;;N;;;;;
57651AA4;TAI THAM SIGN HOY;Po;0;L;;;;;N;;;;;
57661AA5;TAI THAM SIGN DOKMAI;Po;0;L;;;;;N;;;;;
57671AA6;TAI THAM SIGN REVERSED ROTATED RANA;Po;0;L;;;;;N;;;;;
57681AA7;TAI THAM SIGN MAI YAMOK;Lm;0;L;;;;;N;;;;;
57691AA8;TAI THAM SIGN KAAN;Po;0;L;;;;;N;;;;;
57701AA9;TAI THAM SIGN KAANKUU;Po;0;L;;;;;N;;;;;
57711AAA;TAI THAM SIGN SATKAAN;Po;0;L;;;;;N;;;;;
57721AAB;TAI THAM SIGN SATKAANKUU;Po;0;L;;;;;N;;;;;
57731AAC;TAI THAM SIGN HANG;Po;0;L;;;;;N;;;;;
57741AAD;TAI THAM SIGN CAANG;Po;0;L;;;;;N;;;;;
57751B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;;
57761B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;;
57771B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;;
57781B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;;;;
57791B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;;;;
57801B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;;;;
57811B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;;;;
57821B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;;;;
57831B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;;;;
57841B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;;;;
57851B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;;;;
57861B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;;;;
57871B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;;;;
57881B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;;;;
57891B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;;;;
57901B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;;;;
57911B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;;;;
57921B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;;;;
57931B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;;;;
57941B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;;
57951B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;;;;
57961B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;;
57971B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;;;;
57981B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
57991B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;;
58001B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;;;;
58011B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;;
58021B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;;;;
58031B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
58041B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;;;;
58051B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;;
58061B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;;;;
58071B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;;
58081B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;;;;
58091B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;;
58101B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;;;;
58111B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;;
58121B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;;;;
58131B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;;
58141B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;;
58151B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;;;;
58161B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;;
58171B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;;;;
58181B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;;
58191B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;;
58201B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;;
58211B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;;
58221B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;;
58231B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;;;;
58241B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;;;;
58251B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;;
58261B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;;
58271B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;;;;
58281B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;;;;
58291B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;;;;
58301B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;;;;
58311B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;;
58321B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;;;;
58331B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;;;;
58341B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;;;;
58351B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;;;;
58361B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;;;;
58371B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;;
58381B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;;;;
58391B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;;;;
58401B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;;;;
58411B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;;
58421B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;;;;
58431B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;;;;
58441B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;;
58451B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;;
58461B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;;
58471B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;;
58481B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;;
58491B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;
58501B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;
58511B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
58521B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
58531B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
58541B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
58551B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
58561B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
58571B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
58581B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
58591B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
58601B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
58611B5A;BALINESE PANTI;Po;0;L;;;;;N;;;;;
58621B5B;BALINESE PAMADA;Po;0;L;;;;;N;;;;;
58631B5C;BALINESE WINDU;Po;0;L;;;;;N;;;;;
58641B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;;;;
58651B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;;;;
58661B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;;;;
58671B60;BALINESE PAMENENG;Po;0;L;;;;;N;;;;;
58681B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;;
58691B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;;
58701B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;;
58711B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;;
58721B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;;
58731B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;;
58741B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;;
58751B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;;
58761B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;;
58771B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;;
58781B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;;
58791B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;;
58801B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;;
58811B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;;
58821B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;;
58831B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
58841B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
58851B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;;
58861B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;;
58871B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;;
58881B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;;
58891B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;;
58901B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;;
58911B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;;
58921B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;;
58931B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;;
58941B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;;
58951B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;
58961B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;;
58971B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;;
58981B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;;
58991B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;;
59001B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;;
59011B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;;
59021B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;;
59031B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;;
59041B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;;
59051B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;;
59061B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;;
59071B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;;
59081B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;;
59091B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;;
59101B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;;
59111B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;;
59121B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;;
59131B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;;
59141B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;;
59151B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;;
59161B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;;
59171B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;;
59181B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;;
59191B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;;
59201B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;;
59211B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;;
59221B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;;
59231B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;;
59241B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;;
59251B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;;
59261B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;;
59271B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;;
59281BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;;
59291BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;;
59301BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;;
59311BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;;
59321BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;;
59331BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;;
59341BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;;
59351BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;;
59361BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;;
59371BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;;
59381BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;;
59391BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;;
59401BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;;
59411BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
59421BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
59431BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
59441BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
59451BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
59461BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
59471BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
59481BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
59491BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
59501BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
59511C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;;
59521C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;;
59531C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;;
59541C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;;
59551C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;;
59561C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;;
59571C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;;
59581C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;;
59591C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;;
59601C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;;
59611C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;;
59621C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;;
59631C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;;
59641C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;;
59651C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;;
59661C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;;
59671C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;;
59681C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;;
59691C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;;
59701C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;;
59711C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;;
59721C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;;
59731C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;;
59741C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;;
59751C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;;
59761C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;;
59771C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;;
59781C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;;
59791C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;;
59801C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;;
59811C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;;
59821C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;;
59831C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;;
59841C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;;
59851C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;;
59861C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;;
59871C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;
59881C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
59891C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
59901C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
59911C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
59921C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
59931C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
59941C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
59951C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
59961C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;;
59971C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;;
59981C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;;
59991C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
60001C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;;
60011C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
60021C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;;
60031C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;;
60041C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;;
60051C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;;
60061C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
60071C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;;
60081C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;;
60091C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;;
60101C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;;
60111C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;;
60121C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
60131C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
60141C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
60151C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
60161C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
60171C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
60181C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
60191C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
60201C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
60211C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
60221C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;;
60231C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;;
60241C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;;
60251C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
60261C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
60271C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
60281C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
60291C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
60301C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
60311C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
60321C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
60331C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
60341C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
60351C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;;
60361C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;;
60371C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;;
60381C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;;
60391C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;;
60401C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;;
60411C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;;
60421C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;;
60431C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;;
60441C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;;
60451C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;;
60461C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;;
60471C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;;
60481C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;;
60491C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;;
60501C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;;
60511C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;;
60521C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;;
60531C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;;
60541C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;;
60551C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;;
60561C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;;
60571C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;;
60581C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;;
60591C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;;
60601C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;;
60611C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;;
60621C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;;
60631C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;;
60641C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;;
60651C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;;
60661C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
60671C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
60681C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;;
60691C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;;
60701C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;;
60711C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;;
60721C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;;
60731CD0;VEDIC TONE KARSHANA;Mn;230;NSM;;;;;N;;;;;
60741CD1;VEDIC TONE SHARA;Mn;230;NSM;;;;;N;;;;;
60751CD2;VEDIC TONE PRENKHA;Mn;230;NSM;;;;;N;;;;;
60761CD3;VEDIC SIGN NIHSHVASA;Po;0;L;;;;;N;;;;;
60771CD4;VEDIC SIGN YAJURVEDIC MIDLINE SVARITA;Mn;1;NSM;;;;;N;;;;;
60781CD5;VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;
60791CD6;VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;
60801CD7;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;
60811CD8;VEDIC TONE CANDRA BELOW;Mn;220;NSM;;;;;N;;;;;
60821CD9;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER;Mn;220;NSM;;;;;N;;;;;
60831CDA;VEDIC TONE DOUBLE SVARITA;Mn;230;NSM;;;;;N;;;;;
60841CDB;VEDIC TONE TRIPLE SVARITA;Mn;230;NSM;;;;;N;;;;;
60851CDC;VEDIC TONE KATHAKA ANUDATTA;Mn;220;NSM;;;;;N;;;;;
60861CDD;VEDIC TONE DOT BELOW;Mn;220;NSM;;;;;N;;;;;
60871CDE;VEDIC TONE TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
60881CDF;VEDIC TONE THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
60891CE0;VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA;Mn;230;NSM;;;;;N;;;;;
60901CE1;VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA;Mc;0;L;;;;;N;;;;;
60911CE2;VEDIC SIGN VISARGA SVARITA;Mn;1;NSM;;;;;N;;;;;
60921CE3;VEDIC SIGN VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;;
60931CE4;VEDIC SIGN REVERSED VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;;
60941CE5;VEDIC SIGN VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;;
60951CE6;VEDIC SIGN REVERSED VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;;
60961CE7;VEDIC SIGN VISARGA UDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;;
60971CE8;VEDIC SIGN VISARGA ANUDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;;
60981CE9;VEDIC SIGN ANUSVARA ANTARGOMUKHA;Lo;0;L;;;;;N;;;;;
60991CEA;VEDIC SIGN ANUSVARA BAHIRGOMUKHA;Lo;0;L;;;;;N;;;;;
61001CEB;VEDIC SIGN ANUSVARA VAMAGOMUKHA;Lo;0;L;;;;;N;;;;;
61011CEC;VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL;Lo;0;L;;;;;N;;;;;
61021CED;VEDIC SIGN TIRYAK;Mn;220;NSM;;;;;N;;;;;
61031CEE;VEDIC SIGN HEXIFORM LONG ANUSVARA;Lo;0;L;;;;;N;;;;;
61041CEF;VEDIC SIGN LONG ANUSVARA;Lo;0;L;;;;;N;;;;;
61051CF0;VEDIC SIGN RTHANG LONG ANUSVARA;Lo;0;L;;;;;N;;;;;
61061CF1;VEDIC SIGN ANUSVARA UBHAYATO MUKHA;Lo;0;L;;;;;N;;;;;
61071CF2;VEDIC SIGN ARDHAVISARGA;Mc;0;L;;;;;N;;;;;
61081D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;;
61091D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;;
61101D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;;
61111D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;;
61121D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;;
61131D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;;
61141D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;;
61151D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;;
61161D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;;
61171D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;;
61181D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;;
61191D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;;
61201D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;;
61211D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;;
61221D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;;
61231D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;;
61241D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;;
61251D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;;
61261D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;;
61271D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;;
61281D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;;
61291D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;;
61301D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;;
61311D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;;
61321D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;;
61331D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;;
61341D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;;
61351D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;;
61361D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;;
61371D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;;
61381D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;;
61391D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;;
61401D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;;
61411D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;;
61421D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;;
61431D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;;
61441D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;;
61451D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;;
61461D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;;
61471D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;;
61481D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;;
61491D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;;
61501D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;;
61511D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;;
61521D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;;
61531D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;
61541D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;
61551D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;
61561D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;
61571D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;
61581D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;
61591D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;
61601D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;
61611D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;
61621D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;
61631D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;
61641D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;
61651D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;
61661D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;
61671D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;
61681D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;
61691D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;
61701D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;
61711D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;
61721D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;
61731D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;
61741D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;
61751D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;
61761D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;
61771D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;
61781D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;
61791D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;
61801D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;
61811D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;
61821D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;
61831D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;
61841D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
61851D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;
61861D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;
61871D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;
61881D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;
61891D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;
61901D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;
61911D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;
61921D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;
61931D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;
61941D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;
61951D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;
61961D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;
61971D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;
61981D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;
61991D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;
62001D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;
62011D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;
62021D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;
62031D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;
62041D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;
62051D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;
62061D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;;
62071D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;;
62081D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;;
62091D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;;
62101D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;;
62111D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;;
62121D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;;
62131D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;;
62141D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 03C7;;;;N;;;;;
62151D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;;
62161D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
62171D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
62181D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
62191D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
62201D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
62211D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
62221D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
62231D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
62241D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
62251D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
62261D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
62271D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;;
62281D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;;
62291D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D
62301D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;;
62311D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;;
62321D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;;
62331D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63
62341D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;;
62351D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;;
62361D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62371D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62381D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62391D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62401D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62411D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62421D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62431D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62441D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62451D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62461D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62471D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62481D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62491D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62501D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
62511D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
62521D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
62531D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;;
62541D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
62551D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
62561D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
62571D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
62581D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
62591D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
62601D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
62611D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
62621D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
62631D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;;
62641D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;;
62651D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;;
62661D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;;
62671D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
62681DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;;
62691DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;;
62701DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;;
62711DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;;
62721DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;;
62731DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;;
62741DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;;
62751DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;;
62761DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;;
62771DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;;
62781DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;;
62791DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;;
62801DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;;
62811DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;;
62821DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;;
62831DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;;
62841DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;;
62851DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;;
62861DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;;
62871DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;;
62881DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;;
62891DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;;
62901DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;;
62911DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;;
62921DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;;
62931DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;;
62941DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;;
62951DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;;
62961DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;;
62971DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;;
62981DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;;
62991DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;;
63001DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
63011DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
63021DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;;
63031DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;;
63041DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;;
63051DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;;
63061DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;;
63071DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;;
63081DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;;
63091DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;;
63101DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;;
63111DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;;
63121DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;;
63131DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;;
63141DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;;
63151DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;;
63161DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;;
63171DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;;
63181DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;;
63191DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;;
63201DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;;
63211DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;;
63221DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;;
63231DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;;
63241DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;;
63251DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;;
63261DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;;
63271DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;;
63281DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;;
63291DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;;
63301DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;;
63311DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;;
63321DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;;
63331DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;;
63341DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;;
63351DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;;
63361DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;;
63371DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;;
63381DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;;
63391DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;;
63401DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
63411DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
63421E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
63431E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
63441E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
63451E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
63461E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
63471E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
63481E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
63491E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
63501E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
63511E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
63521E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
63531E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
63541E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
63551E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
63561E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
63571E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
63581E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
63591E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
63601E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
63611E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
63621E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
63631E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
63641E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
63651E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
63661E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
63671E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
63681E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
63691E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
63701E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
63711E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
63721E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
63731E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
63741E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
63751E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
63761E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
63771E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
63781E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
63791E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
63801E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
63811E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
63821E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
63831E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
63841E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
63851E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
63861E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
63871E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
63881E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
63891E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
63901E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
63911E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
63921E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
63931E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
63941E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
63951E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
63961E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
63971E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
63981E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
63991E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
64001E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
64011E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
64021E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
64031E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
64041E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
64051E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
64061E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
64071E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
64081E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
64091E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
64101E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
64111E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
64121E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
64131E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
64141E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
64151E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
64161E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
64171E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
64181E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
64191E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
64201E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
64211E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
64221E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
64231E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
64241E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
64251E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
64261E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
64271E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
64281E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
64291E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
64301E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
64311E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
64321E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
64331E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
64341E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
64351E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
64361E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
64371E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
64381E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
64391E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
64401E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
64411E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
64421E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
64431E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
64441E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
64451E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
64461E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
64471E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
64481E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
64491E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
64501E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
64511E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
64521E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
64531E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
64541E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
64551E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
64561E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
64571E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
64581E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
64591E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
64601E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
64611E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
64621E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
64631E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
64641E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
64651E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
64661E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
64671E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
64681E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
64691E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
64701E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
64711E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
64721E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
64731E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
64741E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
64751E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
64761E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
64771E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
64781E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
64791E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
64801E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
64811E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
64821E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
64831E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
64841E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
64851E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
64861E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
64871E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
64881E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
64891E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
64901E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
64911E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
64921E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
64931E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
64941E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
64951E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
64961E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
64971E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
64981E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;;
64991E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;;
65001E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF;
65011E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;;
65021EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
65031EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
65041EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
65051EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
65061EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
65071EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
65081EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
65091EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
65101EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
65111EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
65121EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
65131EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
65141EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
65151EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
65161EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
65171EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
65181EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
65191EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
65201EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
65211EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
65221EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
65231EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
65241EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
65251EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
65261EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
65271EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
65281EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
65291EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
65301EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
65311EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
65321EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
65331EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
65341EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
65351EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
65361EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
65371EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
65381EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
65391EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
65401EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
65411EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
65421EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
65431EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
65441ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
65451ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
65461ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
65471ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
65481ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
65491ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
65501ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
65511ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
65521ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
65531ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
65541ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
65551ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
65561ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
65571ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
65581ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
65591ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
65601EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
65611EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
65621EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
65631EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
65641EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
65651EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
65661EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
65671EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
65681EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
65691EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
65701EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
65711EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
65721EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
65731EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
65741EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
65751EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
65761EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
65771EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
65781EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
65791EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
65801EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
65811EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
65821EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
65831EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
65841EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
65851EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
65861EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
65871EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
65881EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
65891EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
65901EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
65911EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
65921EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB;
65931EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA
65941EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD;
65951EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC
65961EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF;
65971EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE
65981F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
65991F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
66001F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
66011F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
66021F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
66031F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
66041F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
66051F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
66061F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
66071F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
66081F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
66091F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
66101F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
66111F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
66121F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
66131F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
66141F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
66151F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
66161F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
66171F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
66181F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
66191F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
66201F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
66211F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
66221F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
66231F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
66241F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
66251F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
66261F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
66271F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
66281F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
66291F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
66301F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
66311F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
66321F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
66331F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
66341F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
66351F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
66361F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
66371F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
66381F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
66391F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
66401F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
66411F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
66421F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
66431F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
66441F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
66451F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
66461F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
66471F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
66481F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
66491F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
66501F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
66511F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
66521F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
66531F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
66541F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
66551F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
66561F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
66571F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
66581F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
66591F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
66601F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
66611F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
66621F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
66631F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
66641F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
66651F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
66661F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
66671F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
66681F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
66691F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
66701F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
66711F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
66721F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
66731F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
66741F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
66751F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
66761F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
66771F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
66781F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
66791F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
66801F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
66811F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
66821F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
66831F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
66841F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
66851F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
66861F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
66871F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
66881F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
66891F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
66901F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
66911F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
66921F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
66931F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
66941F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
66951F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
66961F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
66971F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
66981F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
66991F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
67001F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
67011F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
67021F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
67031F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
67041F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
67051F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
67061F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
67071F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
67081F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
67091F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
67101F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
67111F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
67121F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
67131F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
67141F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
67151F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
67161F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
67171F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
67181F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
67191F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
67201F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
67211F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
67221F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
67231F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
67241F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
67251F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
67261F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
67271F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
67281F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
67291F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
67301F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
67311F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
67321F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
67331F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
67341F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
67351F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
67361F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
67371F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
67381F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
67391F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
67401F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
67411F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
67421F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
67431F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
67441FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
67451FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
67461FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
67471FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
67481FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
67491FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
67501FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
67511FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
67521FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
67531FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
67541FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
67551FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
67561FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
67571FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
67581FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
67591FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
67601FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
67611FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
67621FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
67631FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
67641FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
67651FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
67661FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
67671FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
67681FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
67691FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
67701FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
67711FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
67721FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
67731FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
67741FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
67751FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
67761FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
67771FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
67781FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
67791FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
67801FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
67811FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
67821FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
67831FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
67841FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
67851FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
67861FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
67871FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
67881FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
67891FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
67901FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
67911FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
67921FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
67931FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
67941FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
67951FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
67961FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
67971FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
67981FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
67991FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
68001FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
68011FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
68021FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
68031FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
68041FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
68051FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
68061FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
68071FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
68081FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
68091FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
68101FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
68111FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
68121FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
68131FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
68141FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
68151FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
68161FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
68171FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
68181FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
68191FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
68201FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
68211FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
68221FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
68231FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
68241FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
68251FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
68261FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
68271FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
68281FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
68291FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
68301FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
68312000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
68322001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
68332002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
68342003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
68352004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
68362005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
68372006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
68382007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
68392008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
68402009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
6841200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
6842200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;;
6843200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
6844200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
6845200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
6846200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
68472010;HYPHEN;Pd;0;ON;;;;;N;;;;;
68482011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
68492012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
68502013;EN DASH;Pd;0;ON;;;;;N;;;;;
68512014;EM DASH;Pd;0;ON;;;;;N;;;;;
68522015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
68532016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
68542017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
68552018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
68562019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
6857201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
6858201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
6859201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
6860201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
6861201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
6862201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
68632020;DAGGER;Po;0;ON;;;;;N;;;;;
68642021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
68652022;BULLET;Po;0;ON;;;;;N;;;;;
68662023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
68672024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
68682025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
68692026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
68702027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
68712028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
68722029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
6873202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
6874202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
6875202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
6876202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
6877202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
6878202F;NARROW NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;;
68792030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
68802031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
68812032;PRIME;Po;0;ET;;;;;N;;;;;
68822033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
68832034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
68842035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
68852036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
68862037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
68872038;CARET;Po;0;ON;;;;;N;;;;;
68882039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
6889203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
6890203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
6891203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
6892203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
6893203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
6894203F;UNDERTIE;Pc;0;ON;;;;;N;;;;;
68952040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
68962041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
68972042;ASTERISM;Po;0;ON;;;;;N;;;;;
68982043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
68992044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;;
69002045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
69012046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
69022047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;;
69032048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
69042049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
6905204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
6906204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
6907204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
6908204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
6909204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;;
6910204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;;
69112050;CLOSE UP;Po;0;ON;;;;;N;;;;;
69122051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;;
69132052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;;
69142053;SWUNG DASH;Po;0;ON;;;;;N;;;;;
69152054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;;
69162055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;;
69172056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
69182057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;
69192058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
69202059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
6921205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
6922205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;;
6923205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;;
6924205D;TRICOLON;Po;0;ON;;;;;N;;;;;
6925205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;;
6926205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
69272060;WORD JOINER;Cf;0;BN;;;;;N;;;;;
69282061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;;
69292062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;
69302063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;
69312064;INVISIBLE PLUS;Cf;0;BN;;;;;N;;;;;
6932206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
6933206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
6934206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
6935206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
6936206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
6937206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
69382070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
69392071;SUPERSCRIPT LATIN SMALL LETTER I;Lm;0;L;<super> 0069;;;;N;;;;;
69402074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
69412075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
69422076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
69432077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
69442078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
69452079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
6946207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;;
6947207B;SUPERSCRIPT MINUS;Sm;0;ES;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
6948207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
6949207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
6950207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
6951207F;SUPERSCRIPT LATIN SMALL LETTER N;Lm;0;L;<super> 006E;;;;N;;;;;
69522080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
69532081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;;
69542082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;;
69552083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;;
69562084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
69572085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
69582086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;;
69592087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
69602088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
69612089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;;
6962208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;;
6963208B;SUBSCRIPT MINUS;Sm;0;ES;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
6964208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
6965208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
6966208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
69672090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;;
69682091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;;
69692092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;;
69702093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;;
69712094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;;
697220A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
697320A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
697420A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
697520A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
697620A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
697720A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
697820A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
697920A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
698020A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
698120A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
698220AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
698320AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
698420AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
698520AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
698620AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
698720AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
698820B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;;
698920B1;PESO SIGN;Sc;0;ET;;;;;N;;;;;
699020B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;;
699120B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;;
699220B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;;
699320B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;;
699420B6;LIVRE TOURNOIS SIGN;Sc;0;ET;;;;;N;;;;;
699520B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;;
699620B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;;
699720D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
699820D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
699920D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
700020D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
700120D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
700220D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
700320D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
700420D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
700520D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
700620D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
700720DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
700820DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
700920DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
701020DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
701120DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
701220DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
701320E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
701420E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
701520E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
701620E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
701720E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;;
701820E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
701920E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;;
702020E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;;
702120E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;;
702220E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
702320EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;;
702420EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
702520EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
702620ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
702720EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
702820EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
702920F0;COMBINING ASTERISK ABOVE;Mn;230;NSM;;;;;N;;;;;
70302100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
70312101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
70322102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
70332103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
70342104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
70352105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
70362106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
70372107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
70382108;SCRUPLE;So;0;ON;;;;;N;;;;;
70392109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
7040210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
7041210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
7042210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
7043210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
7044210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
7045210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
70462110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
70472111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
70482112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
70492113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
70502114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
70512115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
70522116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
70532117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
70542118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
70552119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
7056211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
7057211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
7058211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
7059211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
7060211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
7061211F;RESPONSE;So;0;ON;;;;;N;;;;;
70622120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
70632121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
70642122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
70652123;VERSICLE;So;0;ON;;;;;N;;;;;
70662124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
70672125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
70682126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
70692127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
70702128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
70712129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
7072212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
7073212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
7074212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
7075212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
7076212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
7077212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
70782130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
70792131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
70802132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E;
70812133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
70822134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
70832135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
70842136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
70852137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
70862138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
70872139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
7088213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
7089213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;;
7090213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
7091213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
7092213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
7093213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
70942140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;;
70952141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;;
70962142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
70972143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
70982144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;;
70992145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
71002146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
71012147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
71022148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
71032149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
7104214A;PROPERTY LINE;So;0;ON;;;;;N;;;;;
7105214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;;
7106214C;PER SIGN;So;0;ON;;;;;N;;;;;
7107214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;;
7108214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132
7109214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;N;;;;;
71102150;VULGAR FRACTION ONE SEVENTH;No;0;ON;<fraction> 0031 2044 0037;;;1/7;N;;;;;
71112151;VULGAR FRACTION ONE NINTH;No;0;ON;<fraction> 0031 2044 0039;;;1/9;N;;;;;
71122152;VULGAR FRACTION ONE TENTH;No;0;ON;<fraction> 0031 2044 0031 0030;;;1/10;N;;;;;
71132153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
71142154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
71152155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
71162156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
71172157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
71182158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
71192159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
7120215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
7121215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
7122215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
7123215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
7124215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
7125215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
71262160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
71272161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
71282162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
71292163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
71302164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
71312165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
71322166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
71332167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
71342168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
71352169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
7136216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
7137216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
7138216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
7139216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
7140216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
7141216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
71422170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
71432171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
71442172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
71452173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
71462174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
71472175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
71482176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
71492177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
71502178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
71512179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
7152217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
7153217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
7154217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
7155217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
7156217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
7157217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
71582180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
71592181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
71602182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
71612183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184;
71622184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183
71632185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;;
71642186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;;
71652187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;;
71662188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;;
71672189;VULGAR FRACTION ZERO THIRDS;No;0;ON;<fraction> 0030 2044 0033;;;0;N;;;;;
71682190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
71692191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
71702192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
71712193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
71722194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
71732195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
71742196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
71752197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
71762198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
71772199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
7178219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
7179219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
7180219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
7181219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
7182219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
7183219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
718421A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
718521A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
718621A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
718721A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
718821A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
718921A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
719021A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
719121A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
719221A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
719321A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
719421AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
719521AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
719621AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
719721AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
719821AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
719921AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
720021B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
720121B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
720221B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
720321B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
720421B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
720521B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
720621B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
720721B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
720821B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
720921B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
721021BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
721121BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
721221BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
721321BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
721421BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
721521BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
721621C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
721721C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
721821C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
721921C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
722021C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
722121C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
722221C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
722321C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
722421C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
722521C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
722621CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
722721CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
722821CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
722921CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
723021CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
723121CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
723221D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
723321D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
723421D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
723521D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
723621D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
723721D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
723821D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
723921D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
724021D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
724121D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
724221DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
724321DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
724421DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
724521DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
724621DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
724721DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
724821E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
724921E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
725021E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
725121E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
725221E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
725321E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
725421E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
725521E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
725621E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
725721E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
725821EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
725921EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
726021EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
726121ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
726221EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
726321EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
726421F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
726521F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
726621F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
726721F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
726821F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
726921F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;;
727021F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
727121F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
727221F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
727321F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
727421FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
727521FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
727621FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
727721FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
727821FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
727921FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
72802200;FOR ALL;Sm;0;ON;;;;;N;;;;;
72812201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
72822202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
72832203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
72842204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
72852205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
72862206;INCREMENT;Sm;0;ON;;;;;N;;;;;
72872207;NABLA;Sm;0;ON;;;;;N;;;;;
72882208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
72892209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
7290220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
7291220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
7292220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
7293220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
7294220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
7295220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
72962210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
72972211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
72982212;MINUS SIGN;Sm;0;ES;;;;;N;;;;;
72992213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
73002214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
73012215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
73022216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
73032217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
73042218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
73052219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
7306221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
7307221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
7308221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
7309221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
7310221E;INFINITY;Sm;0;ON;;;;;N;;;;;
7311221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
73122220;ANGLE;Sm;0;ON;;;;;Y;;;;;
73132221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
73142222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
73152223;DIVIDES;Sm;0;ON;;;;;N;;;;;
73162224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
73172225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
73182226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
73192227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
73202228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
73212229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
7322222A;UNION;Sm;0;ON;;;;;N;;;;;
7323222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
7324222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
7325222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
7326222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
7327222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
73282230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
73292231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
73302232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
73312233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
73322234;THEREFORE;Sm;0;ON;;;;;N;;;;;
73332235;BECAUSE;Sm;0;ON;;;;;N;;;;;
73342236;RATIO;Sm;0;ON;;;;;N;;;;;
73352237;PROPORTION;Sm;0;ON;;;;;N;;;;;
73362238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
73372239;EXCESS;Sm;0;ON;;;;;Y;;;;;
7338223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
7339223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
7340223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
7341223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;;;;
7342223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
7343223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
73442240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
73452241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
73462242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
73472243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
73482244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
73492245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
73502246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
73512247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
73522248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
73532249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
7354224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
7355224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
7356224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
7357224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
7358224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
7359224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
73602250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
73612251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
73622252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
73632253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
73642254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
73652255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
73662256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
73672257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
73682258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
73692259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
7370225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
7371225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
7372225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
7373225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
7374225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
7375225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
73762260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
73772261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
73782262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
73792263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
73802264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
73812265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
73822266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
73832267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
73842268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
73852269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
7386226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
7387226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
7388226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
7389226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
7390226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
7391226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
73922270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
73932271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
73942272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
73952273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
73962274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
73972275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
73982276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
73992277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
74002278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
74012279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
7402227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
7403227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
7404227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
7405227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
7406227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
7407227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
74082280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
74092281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
74102282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
74112283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
74122284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
74132285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
74142286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
74152287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
74162288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
74172289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
7418228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
7419228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
7420228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
7421228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
7422228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
7423228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
74242290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
74252291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
74262292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
74272293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
74282294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
74292295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
74302296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
74312297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
74322298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
74332299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
7434229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
7435229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
7436229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
7437229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
7438229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
7439229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
744022A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
744122A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
744222A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
744322A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
744422A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
744522A5;UP TACK;Sm;0;ON;;;;;N;;;;;
744622A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
744722A7;MODELS;Sm;0;ON;;;;;Y;;;;;
744822A8;TRUE;Sm;0;ON;;;;;Y;;;;;
744922A9;FORCES;Sm;0;ON;;;;;Y;;;;;
745022AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
745122AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
745222AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
745322AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
745422AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
745522AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
745622B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
745722B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
745822B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
745922B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
746022B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
746122B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
746222B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
746322B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
746422B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
746522B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
746622BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
746722BB;XOR;Sm;0;ON;;;;;N;;;;;
746822BC;NAND;Sm;0;ON;;;;;N;;;;;
746922BD;NOR;Sm;0;ON;;;;;N;;;;;
747022BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
747122BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
747222C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
747322C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
747422C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
747522C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
747622C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
747722C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
747822C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
747922C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
748022C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
748122C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
748222CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
748322CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
748422CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
748522CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
748622CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
748722CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
748822D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
748922D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
749022D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
749122D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
749222D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
749322D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
749422D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
749522D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
749622D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
749722D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
749822DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
749922DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
750022DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
750122DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
750222DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
750322DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
750422E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
750522E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
750622E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
750722E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
750822E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
750922E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
751022E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
751122E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
751222E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
751322E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
751422EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
751522EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
751622EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
751722ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
751822EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
751922EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
752022F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
752122F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
752222F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
752322F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
752422F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
752522F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
752622F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
752722F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
752822F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
752922F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;;
753022FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
753122FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
753222FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
753322FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
753422FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
753522FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;;
75362300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
75372301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
75382302;HOUSE;So;0;ON;;;;;N;;;;;
75392303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
75402304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
75412305;PROJECTIVE;So;0;ON;;;;;N;;;;;
75422306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
75432307;WAVY LINE;So;0;ON;;;;;N;;;;;
75442308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
75452309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
7546230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
7547230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
7548230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
7549230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
7550230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
7551230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
75522310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
75532311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
75542312;ARC;So;0;ON;;;;;N;;;;;
75552313;SEGMENT;So;0;ON;;;;;N;;;;;
75562314;SECTOR;So;0;ON;;;;;N;;;;;
75572315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
75582316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
75592317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
75602318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
75612319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
7562231A;WATCH;So;0;ON;;;;;N;;;;;
7563231B;HOURGLASS;So;0;ON;;;;;N;;;;;
7564231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
7565231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
7566231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
7567231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
75682320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
75692321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
75702322;FROWN;So;0;ON;;;;;N;;;;;
75712323;SMILE;So;0;ON;;;;;N;;;;;
75722324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
75732325;OPTION KEY;So;0;ON;;;;;N;;;;;
75742326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
75752327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
75762328;KEYBOARD;So;0;ON;;;;;N;;;;;
75772329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
7578232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
7579232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
7580232C;BENZENE RING;So;0;ON;;;;;N;;;;;
7581232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
7582232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
7583232F;SYMMETRY;So;0;ON;;;;;N;;;;;
75842330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
75852331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
75862332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
75872333;SLOPE;So;0;ON;;;;;N;;;;;
75882334;COUNTERBORE;So;0;ON;;;;;N;;;;;
75892335;COUNTERSINK;So;0;ON;;;;;N;;;;;
75902336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
75912337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
75922338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
75932339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
7594233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
7595233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
7596233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
7597233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
7598233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
7599233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
76002340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
76012341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
76022342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
76032343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
76042344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
76052345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
76062346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
76072347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
76082348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
76092349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
7610234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;;;;
7611234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
7612234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
7613234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
7614234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;;;;
7615234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
76162350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
76172351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;;;;
76182352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
76192353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
76202354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
76212355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;;;;
76222356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
76232357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
76242358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
76252359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
7626235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
7627235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
7628235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
7629235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
7630235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
7631235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
76322360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
76332361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;;;;
76342362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
76352363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
76362364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
76372365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
76382366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
76392367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
76402368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
76412369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
7642236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
7643236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
7644236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
7645236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
7646236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
7647236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
76482370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
76492371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
76502372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
76512373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
76522374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
76532375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
76542376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
76552377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
76562378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
76572379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
7658237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
7659237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
7660237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;;
7661237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
7662237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
7663237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
76642380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
76652381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
76662382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
76672383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
76682384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
76692385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
76702386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
76712387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
76722388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
76732389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;;;;
7674238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;;;;
7675238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;;;;
7676238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
7677238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
7678238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
7679238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
76802390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
76812391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
76822392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
76832393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
76842394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
76852395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
76862396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
76872397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
76882398;NEXT PAGE;So;0;ON;;;;;N;;;;;
76892399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
7690239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
7691239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
7692239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
7693239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
7694239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
7695239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
769623A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
769723A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
769823A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
769923A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
770023A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
770123A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
770223A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
770323A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
770423A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
770523A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
770623AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
770723AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
770823AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
770923AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
771023AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;;
771123AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;;
771223B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
771323B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
771423B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;;
771523B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;;
771623B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;
771723B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;;
771823B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;
771923B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;;
772023B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
772123B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
772223BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;;
772323BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;;
772423BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;;
772523BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;;
772623BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
772723BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
772823C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
772923C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
773023C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
773123C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
773223C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
773323C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
773423C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;;
773523C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
773623C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
773723C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;;
773823CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;;
773923CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
774023CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
774123CD;SQUARE FOOT;So;0;ON;;;;;N;;;;;
774223CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;;
774323CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;;
774423D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;;
774523D1;METRICAL BREVE;So;0;ON;;;;;N;;;;;
774623D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;;
774723D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;;
774823D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;;
774923D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;;
775023D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;;
775123D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;;
775223D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;;
775323D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;;
775423DA;EARTH GROUND;So;0;ON;;;;;N;;;;;
775523DB;FUSE;So;0;ON;;;;;N;;;;;
775623DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;;;;
775723DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;;;;
775823DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;;;;
775923DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;;;;
776023E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;;
776123E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;;
776223E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;;
776323E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;;
776423E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;;
776523E5;FLATNESS;So;0;ON;;;;;N;;;;;
776623E6;AC CURRENT;So;0;ON;;;;;N;;;;;
776723E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;;
776823E8;DECIMAL EXPONENT SYMBOL;So;0;ON;;;;;N;;;;;
77692400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
77702401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
77712402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
77722403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
77732404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
77742405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
77752406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
77762407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
77772408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
77782409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
7779240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
7780240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
7781240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
7782240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
7783240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
7784240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
77852410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
77862411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
77872412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
77882413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
77892414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
77902415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
77912416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
77922417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
77932418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
77942419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
7795241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
7796241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
7797241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
7798241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
7799241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
7800241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
78012420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
78022421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
78032422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
78042423;OPEN BOX;So;0;ON;;;;;N;;;;;
78052424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
78062425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
78072426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
78082440;OCR HOOK;So;0;ON;;;;;N;;;;;
78092441;OCR CHAIR;So;0;ON;;;;;N;;;;;
78102442;OCR FORK;So;0;ON;;;;;N;;;;;
78112443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
78122444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
78132445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
78142446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
78152447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
78162448;OCR DASH;So;0;ON;;;;;N;;;;;
78172449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
7818244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
78192460;CIRCLED DIGIT ONE;No;0;ON;<circle> 0031;;1;1;N;;;;;
78202461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;;
78212462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;;
78222463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;;
78232464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;;
78242465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;;
78252466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;;
78262467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;;
78272468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;;
78282469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;;
7829246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;;
7830246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;;
7831246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;;
7832246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;;
7833246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;;
7834246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;;
78352470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;;
78362471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;;
78372472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;;
78382473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;;
78392474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;
78402475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;
78412476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;
78422477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;
78432478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;
78442479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;
7845247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;
7846247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;
7847247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;
7848247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;
7849247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;
7850247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;
78512480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;
78522481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;
78532482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;
78542483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;
78552484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;
78562485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;
78572486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;
78582487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;;
78592488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
78602489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
7861248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
7862248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
7863248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
7864248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
7865248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
7866248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
78672490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
78682491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
78692492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
78702493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
78712494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
78722495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
78732496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
78742497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
78752498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
78762499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
7877249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
7878249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
7879249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
7880249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
7881249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
7882249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
788324A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
788424A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
788524A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
788624A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
788724A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
788824A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
788924A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
789024A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
789124A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
789224A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
789324AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
789424AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
789524AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
789624AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
789724AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
789824AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
789924B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
790024B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
790124B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
790224B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
790324B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
790424B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
790524B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
790624B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
790724B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
790824B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
790924BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
791024BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
791124BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
791224BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
791324BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
791424BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
791524C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
791624C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
791724C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
791824C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
791924C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
792024C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
792124C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
792224C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
792324C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
792424C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
792524CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
792624CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
792724CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
792824CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
792924CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
793024CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
793124D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
793224D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
793324D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
793424D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
793524D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
793624D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
793724D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
793824D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
793924D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
794024D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
794124DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
794224DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
794324DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
794424DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
794524DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
794624DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
794724E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
794824E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
794924E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
795024E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
795124E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
795224E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
795324E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
795424E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
795524E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
795624E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
795724EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 0030;;0;0;N;;;;;
795824EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
795924EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
796024ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
796124EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
796224EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
796324F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
796424F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
796524F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
796624F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
796724F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
796824F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
796924F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
797024F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
797124F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
797224F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
797324FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
797424FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
797524FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
797624FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
797724FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
797824FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;;
79792500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
79802501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
79812502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
79822503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
79832504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
79842505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
79852506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
79862507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
79872508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
79882509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
7989250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
7990250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
7991250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
7992250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
7993250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
7994250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
79952510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
79962511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
79972512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
79982513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
79992514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
80002515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
80012516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
80022517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
80032518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
80042519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
8005251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
8006251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
8007251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
8008251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
8009251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
8010251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
80112520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
80122521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
80132522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
80142523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
80152524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
80162525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
80172526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
80182527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
80192528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
80202529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
8021252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
8022252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
8023252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
8024252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
8025252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
8026252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
80272530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
80282531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
80292532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
80302533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
80312534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
80322535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
80332536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
80342537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
80352538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
80362539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
8037253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
8038253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
8039253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
8040253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
8041253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
8042253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
80432540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
80442541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
80452542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
80462543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
80472544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
80482545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
80492546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
80502547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
80512548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
80522549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
8053254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
8054254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
8055254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
8056254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
8057254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
8058254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
80592550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
80602551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
80612552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
80622553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
80632554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
80642555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
80652556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
80662557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
80672558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
80682559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
8069255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
8070255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
8071255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
8072255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
8073255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
8074255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
80752560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
80762561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
80772562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
80782563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
80792564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
80802565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
80812566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
80822567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
80832568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
80842569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
8085256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
8086256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
8087256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
8088256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
8089256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
8090256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
80912570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
80922571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
80932572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
80942573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
80952574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
80962575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
80972576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
80982577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
80992578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
81002579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
8101257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
8102257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
8103257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
8104257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
8105257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
8106257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
81072580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
81082581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
81092582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
81102583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
81112584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
81122585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
81132586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
81142587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
81152588;FULL BLOCK;So;0;ON;;;;;N;;;;;
81162589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
8117258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
8118258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
8119258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
8120258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
8121258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
8122258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
81232590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
81242591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
81252592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
81262593;DARK SHADE;So;0;ON;;;;;N;;;;;
81272594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
81282595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
81292596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;;
81302597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;;
81312598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;;
81322599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
8133259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
8134259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
8135259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
8136259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;;
8137259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
8138259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
813925A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
814025A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
814125A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
814225A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
814325A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
814425A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
814525A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
814625A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
814725A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
814825A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
814925AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
815025AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
815125AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
815225AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
815325AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
815425AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
815525B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
815625B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
815725B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
815825B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
815925B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
816025B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
816125B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
816225B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
816325B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
816425B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
816525BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
816625BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
816725BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
816825BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
816925BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
817025BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
817125C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
817225C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
817325C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
817425C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
817525C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
817625C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
817725C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
817825C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
817925C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
818025C9;FISHEYE;So;0;ON;;;;;N;;;;;
818125CA;LOZENGE;So;0;ON;;;;;N;;;;;
818225CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
818325CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
818425CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
818525CE;BULLSEYE;So;0;ON;;;;;N;;;;;
818625CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
818725D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
818825D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
818925D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
819025D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
819125D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
819225D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
819325D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
819425D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
819525D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
819625D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
819725DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
819825DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
819925DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
820025DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
820125DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
820225DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
820325E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
820425E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
820525E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
820625E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
820725E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
820825E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
820925E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
821025E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
821125E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
821225E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
821325EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
821425EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
821525EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
821625ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
821725EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
821825EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
821925F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
822025F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
822125F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
822225F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
822325F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
822425F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
822525F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
822625F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
822725F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
822825F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
822925FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
823025FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
823125FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
823225FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
823325FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
823425FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
82352600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
82362601;CLOUD;So;0;ON;;;;;N;;;;;
82372602;UMBRELLA;So;0;ON;;;;;N;;;;;
82382603;SNOWMAN;So;0;ON;;;;;N;;;;;
82392604;COMET;So;0;ON;;;;;N;;;;;
82402605;BLACK STAR;So;0;ON;;;;;N;;;;;
82412606;WHITE STAR;So;0;ON;;;;;N;;;;;
82422607;LIGHTNING;So;0;ON;;;;;N;;;;;
82432608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
82442609;SUN;So;0;ON;;;;;N;;;;;
8245260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
8246260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
8247260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
8248260D;OPPOSITION;So;0;ON;;;;;N;;;;;
8249260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
8250260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
82512610;BALLOT BOX;So;0;ON;;;;;N;;;;;
82522611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
82532612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
82542613;SALTIRE;So;0;ON;;;;;N;;;;;
82552614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;;
82562615;HOT BEVERAGE;So;0;ON;;;;;N;;;;;
82572616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
82582617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
82592618;SHAMROCK;So;0;ON;;;;;N;;;;;
82602619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
8261261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
8262261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
8263261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
8264261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
8265261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
8266261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
82672620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
82682621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
82692622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
82702623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
82712624;CADUCEUS;So;0;ON;;;;;N;;;;;
82722625;ANKH;So;0;ON;;;;;N;;;;;
82732626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
82742627;CHI RHO;So;0;ON;;;;;N;;;;;
82752628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
82762629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
8277262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
8278262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
8279262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
8280262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
8281262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
8282262F;YIN YANG;So;0;ON;;;;;N;;;;;
82832630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
82842631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
82852632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
82862633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
82872634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
82882635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
82892636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
82902637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
82912638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
82922639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
8293263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
8294263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
8295263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
8296263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
8297263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
8298263F;MERCURY;So;0;ON;;;;;N;;;;;
82992640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
83002641;EARTH;So;0;ON;;;;;N;;;;;
83012642;MALE SIGN;So;0;ON;;;;;N;;;;;
83022643;JUPITER;So;0;ON;;;;;N;;;;;
83032644;SATURN;So;0;ON;;;;;N;;;;;
83042645;URANUS;So;0;ON;;;;;N;;;;;
83052646;NEPTUNE;So;0;ON;;;;;N;;;;;
83062647;PLUTO;So;0;ON;;;;;N;;;;;
83072648;ARIES;So;0;ON;;;;;N;;;;;
83082649;TAURUS;So;0;ON;;;;;N;;;;;
8309264A;GEMINI;So;0;ON;;;;;N;;;;;
8310264B;CANCER;So;0;ON;;;;;N;;;;;
8311264C;LEO;So;0;ON;;;;;N;;;;;
8312264D;VIRGO;So;0;ON;;;;;N;;;;;
8313264E;LIBRA;So;0;ON;;;;;N;;;;;
8314264F;SCORPIUS;So;0;ON;;;;;N;;;;;
83152650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
83162651;CAPRICORN;So;0;ON;;;;;N;;;;;
83172652;AQUARIUS;So;0;ON;;;;;N;;;;;
83182653;PISCES;So;0;ON;;;;;N;;;;;
83192654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
83202655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
83212656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
83222657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
83232658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
83242659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
8325265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
8326265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
8327265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
8328265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
8329265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
8330265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
83312660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
83322661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
83332662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
83342663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
83352664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
83362665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
83372666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
83382667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
83392668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
83402669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
8341266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
8342266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
8343266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
8344266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
8345266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
8346266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
83472670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
83482671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
83492672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
83502673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;;;;
83512674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;;;;
83522675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;;;;
83532676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;;;;
83542677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;;;;
83552678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;;;;
83562679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;;;;
8357267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;;
8358267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
8359267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
8360267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
8361267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;;
8362267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;;
83632680;DIE FACE-1;So;0;ON;;;;;N;;;;;
83642681;DIE FACE-2;So;0;ON;;;;;N;;;;;
83652682;DIE FACE-3;So;0;ON;;;;;N;;;;;
83662683;DIE FACE-4;So;0;ON;;;;;N;;;;;
83672684;DIE FACE-5;So;0;ON;;;;;N;;;;;
83682685;DIE FACE-6;So;0;ON;;;;;N;;;;;
83692686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;;
83702687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
83712688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;;
83722689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;;
8373268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;;
8374268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;;
8375268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;;
8376268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;;
8377268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;;
8378268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;;
83792690;WHITE FLAG;So;0;ON;;;;;N;;;;;
83802691;BLACK FLAG;So;0;ON;;;;;N;;;;;
83812692;HAMMER AND PICK;So;0;ON;;;;;N;;;;;
83822693;ANCHOR;So;0;ON;;;;;N;;;;;
83832694;CROSSED SWORDS;So;0;ON;;;;;N;;;;;
83842695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;;
83852696;SCALES;So;0;ON;;;;;N;;;;;
83862697;ALEMBIC;So;0;ON;;;;;N;;;;;
83872698;FLOWER;So;0;ON;;;;;N;;;;;
83882699;GEAR;So;0;ON;;;;;N;;;;;
8389269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;;
8390269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;;
8391269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;;
8392269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
8393269E;THREE LINES CONVERGING RIGHT;So;0;ON;;;;;N;;;;;
8394269F;THREE LINES CONVERGING LEFT;So;0;ON;;;;;N;;;;;
839526A0;WARNING SIGN;So;0;ON;;;;;N;;;;;
839626A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;;
839726A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;;
839826A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;;
839926A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;;
840026A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
840126A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
840226A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
840326A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
840426A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
840526AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;;
840626AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;;
840726AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;;
840826AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;;
840926AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;;
841026AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;;
841126B0;COFFIN;So;0;ON;;;;;N;;;;;
841226B1;FUNERAL URN;So;0;ON;;;;;N;;;;;
841326B2;NEUTER;So;0;ON;;;;;N;;;;;
841426B3;CERES;So;0;ON;;;;;N;;;;;
841526B4;PALLAS;So;0;ON;;;;;N;;;;;
841626B5;JUNO;So;0;ON;;;;;N;;;;;
841726B6;VESTA;So;0;ON;;;;;N;;;;;
841826B7;CHIRON;So;0;ON;;;;;N;;;;;
841926B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;;
842026B9;SEXTILE;So;0;ON;;;;;N;;;;;
842126BA;SEMISEXTILE;So;0;ON;;;;;N;;;;;
842226BB;QUINCUNX;So;0;ON;;;;;N;;;;;
842326BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;;
842426BD;SOCCER BALL;So;0;ON;;;;;N;;;;;
842526BE;BASEBALL;So;0;ON;;;;;N;;;;;
842626BF;SQUARED KEY;So;0;ON;;;;;N;;;;;
842726C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
842826C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;;
842926C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
843026C3;BLACK DRAUGHTS KING;So;0;ON;;;;;N;;;;;
843126C4;SNOWMAN WITHOUT SNOW;So;0;ON;;;;;N;;;;;
843226C5;SUN BEHIND CLOUD;So;0;ON;;;;;N;;;;;
843326C6;RAIN;So;0;ON;;;;;N;;;;;
843426C7;BLACK SNOWMAN;So;0;ON;;;;;N;;;;;
843526C8;THUNDER CLOUD AND RAIN;So;0;ON;;;;;N;;;;;
843626C9;TURNED WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
843726CA;TURNED BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
843826CB;WHITE DIAMOND IN SQUARE;So;0;ON;;;;;N;;;;;
843926CC;CROSSING LANES;So;0;ON;;;;;N;;;;;
844026CD;DISABLED CAR;So;0;ON;;;;;N;;;;;
844126CF;PICK;So;0;ON;;;;;N;;;;;
844226D0;CAR SLIDING;So;0;ON;;;;;N;;;;;
844326D1;HELMET WITH WHITE CROSS;So;0;ON;;;;;N;;;;;
844426D2;CIRCLED CROSSING LANES;So;0;ON;;;;;N;;;;;
844526D3;CHAINS;So;0;ON;;;;;N;;;;;
844626D4;NO ENTRY;So;0;ON;;;;;N;;;;;
844726D5;ALTERNATE ONE-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;
844826D6;BLACK TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;
844926D7;WHITE TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;
845026D8;BLACK LEFT LANE MERGE;So;0;ON;;;;;N;;;;;
845126D9;WHITE LEFT LANE MERGE;So;0;ON;;;;;N;;;;;
845226DA;DRIVE SLOW SIGN;So;0;ON;;;;;N;;;;;
845326DB;HEAVY WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
845426DC;LEFT CLOSED ENTRY;So;0;ON;;;;;N;;;;;
845526DD;SQUARED SALTIRE;So;0;ON;;;;;N;;;;;
845626DE;FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE;So;0;ON;;;;;N;;;;;
845726DF;BLACK TRUCK;So;0;ON;;;;;N;;;;;
845826E0;RESTRICTED LEFT ENTRY-1;So;0;ON;;;;;N;;;;;
845926E1;RESTRICTED LEFT ENTRY-2;So;0;ON;;;;;N;;;;;
846026E3;HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE;So;0;ON;;;;;N;;;;;
846126E8;BLACK CROSS ON SHIELD;So;0;ON;;;;;N;;;;;
846226E9;SHINTO SHRINE;So;0;ON;;;;;N;;;;;
846326EA;CHURCH;So;0;ON;;;;;N;;;;;
846426EB;CASTLE;So;0;ON;;;;;N;;;;;
846526EC;HISTORIC SITE;So;0;ON;;;;;N;;;;;
846626ED;GEAR WITHOUT HUB;So;0;ON;;;;;N;;;;;
846726EE;GEAR WITH HANDLES;So;0;ON;;;;;N;;;;;
846826EF;MAP SYMBOL FOR LIGHTHOUSE;So;0;ON;;;;;N;;;;;
846926F0;MOUNTAIN;So;0;ON;;;;;N;;;;;
847026F1;UMBRELLA ON GROUND;So;0;ON;;;;;N;;;;;
847126F2;FOUNTAIN;So;0;ON;;;;;N;;;;;
847226F3;FLAG IN HOLE;So;0;ON;;;;;N;;;;;
847326F4;FERRY;So;0;ON;;;;;N;;;;;
847426F5;SAILBOAT;So;0;ON;;;;;N;;;;;
847526F6;SQUARE FOUR CORNERS;So;0;ON;;;;;N;;;;;
847626F7;SKIER;So;0;ON;;;;;N;;;;;
847726F8;ICE SKATE;So;0;ON;;;;;N;;;;;
847826F9;PERSON WITH BALL;So;0;ON;;;;;N;;;;;
847926FA;TENT;So;0;ON;;;;;N;;;;;
848026FB;JAPANESE BANK SYMBOL;So;0;ON;;;;;N;;;;;
848126FC;HEADSTONE GRAVEYARD SYMBOL;So;0;ON;;;;;N;;;;;
848226FD;FUEL PUMP;So;0;ON;;;;;N;;;;;
848326FE;CUP ON BLACK SQUARE;So;0;ON;;;;;N;;;;;
848426FF;WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE;So;0;ON;;;;;N;;;;;
84852701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
84862702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
84872703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
84882704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
84892706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
84902707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
84912708;AIRPLANE;So;0;ON;;;;;N;;;;;
84922709;ENVELOPE;So;0;ON;;;;;N;;;;;
8493270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
8494270D;WRITING HAND;So;0;ON;;;;;N;;;;;
8495270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
8496270F;PENCIL;So;0;ON;;;;;N;;;;;
84972710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
84982711;WHITE NIB;So;0;ON;;;;;N;;;;;
84992712;BLACK NIB;So;0;ON;;;;;N;;;;;
85002713;CHECK MARK;So;0;ON;;;;;N;;;;;
85012714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
85022715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
85032716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
85042717;BALLOT X;So;0;ON;;;;;N;;;;;
85052718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
85062719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
8507271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
8508271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
8509271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
8510271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
8511271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
8512271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
85132720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
85142721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
85152722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
85162723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
85172724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
85182725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
85192726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
85202727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
85212729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
8522272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
8523272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
8524272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
8525272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
8526272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
8527272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
85282730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
85292731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
85302732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
85312733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
85322734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
85332735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
85342736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
85352737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
85362738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
85372739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
8538273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
8539273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
8540273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
8541273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
8542273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
8543273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
85442740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
85452741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
85462742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
85472743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
85482744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
85492745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
85502746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
85512747;SPARKLE;So;0;ON;;;;;N;;;;;
85522748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
85532749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
8554274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
8555274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
8556274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
8557274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
85582750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
85592751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
85602752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
85612756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
85622757;HEAVY EXCLAMATION MARK SYMBOL;So;0;ON;;;;;N;;;;;
85632758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
85642759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
8565275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
8566275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
8567275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
8568275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
8569275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
85702761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
85712762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
85722763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
85732764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
85742765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
85752766;FLORAL HEART;So;0;ON;;;;;N;;;;;
85762767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
85772768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
85782769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
8579276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
8580276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
8581276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
8582276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
8583276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
8584276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
85852770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
85862771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
85872772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
85882773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
85892774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
85902775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
85912776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
85922777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
85932778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
85942779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
8595277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
8596277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
8597277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
8598277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
8599277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
8600277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
86012780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
86022781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
86032782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
86042783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
86052784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
86062785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
86072786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
86082787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
86092788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
86102789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
8611278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
8612278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
8613278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
8614278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
8615278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
8616278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
86172790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
86182791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
86192792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
86202793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
86212794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
86222798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
86232799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
8624279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
8625279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
8626279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
8627279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
8628279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
8629279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
863027A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
863127A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
863227A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
863327A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
863427A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
863527A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
863627A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
863727A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
863827A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
863927A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
864027AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
864127AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
864227AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
864327AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
864427AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
864527AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
864627B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
864727B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
864827B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
864927B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
865027B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
865127B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
865227B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
865327B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
865427B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
865527BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
865627BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
865727BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
865827BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
865927BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
866027C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;;
866127C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;;
866227C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
866327C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;;
866427C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;;
866527C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;;
866627C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;;
866727C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;;
866827C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;;
866927C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;;
867027CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
867127CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;;
867227D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;;
867327D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;;
867427D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;;
867527D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
867627D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
867727D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
867827D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
867927D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;;
868027D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;;
868127D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;;
868227DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;;
868327DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;;
868427DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;;
868527DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
868627DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;;
868727DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
868827E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;;
868927E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;;
869027E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
869127E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
869227E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
869327E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
869427E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;;
869527E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;;
869627E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
869727E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
869827EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
869927EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
870027EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
870127ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
870227EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
870327EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
870427F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
870527F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
870627F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
870727F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
870827F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
870927F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
871027F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
871127F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
871227F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
871327F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
871427FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
871527FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
871627FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
871727FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
871827FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
871927FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
87202800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;;
87212801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;;
87222802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;;
87232803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;;
87242804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;;
87252805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;;
87262806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;;
87272807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;;
87282808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;;
87292809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;;
8730280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;;
8731280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;;
8732280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;;
8733280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;;
8734280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;;
8735280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;;
87362810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;;
87372811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;;
87382812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;;
87392813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;;
87402814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;;
87412815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;;
87422816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;;
87432817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;;
87442818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;;
87452819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;;
8746281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;;
8747281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;;
8748281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;;
8749281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;;
8750281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;;
8751281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;;
87522820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;;
87532821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;;
87542822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;;
87552823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;;
87562824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;;
87572825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;;
87582826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;;
87592827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;;
87602828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;;
87612829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;;
8762282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;;
8763282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;;
8764282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;;
8765282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;;
8766282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;;
8767282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;;
87682830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;;
87692831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;;
87702832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;;
87712833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;;
87722834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;;
87732835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;;
87742836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;;
87752837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;;
87762838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;;
87772839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;;
8778283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;;
8779283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;;
8780283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;;
8781283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;;
8782283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;;
8783283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;;
87842840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;;
87852841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;;
87862842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;;
87872843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;;
87882844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;;
87892845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;;
87902846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;;
87912847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;;
87922848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;;
87932849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;;
8794284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;;
8795284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;;
8796284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;;
8797284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;;
8798284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;;
8799284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;;
88002850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;;
88012851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;;
88022852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;;
88032853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;;
88042854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;;
88052855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;;
88062856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;;
88072857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;;
88082858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;;
88092859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;;
8810285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;;
8811285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;;
8812285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;;
8813285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;;
8814285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;;
8815285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;;
88162860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;;
88172861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;;
88182862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;;
88192863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;;
88202864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;;
88212865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;;
88222866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;;
88232867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;;
88242868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;;
88252869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;;
8826286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;;
8827286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;;
8828286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;;
8829286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;;
8830286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;;
8831286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;;
88322870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;;
88332871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;;
88342872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;;
88352873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;;
88362874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;;
88372875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;;
88382876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;;
88392877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;;
88402878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;;
88412879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;;
8842287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;;
8843287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;;
8844287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;;
8845287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;;
8846287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;;
8847287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;;
88482880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;;
88492881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;;
88502882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;;
88512883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;;
88522884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;;
88532885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;;
88542886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;;
88552887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;;
88562888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;;
88572889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;;
8858288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;;
8859288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;;
8860288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;;
8861288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;;
8862288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;;
8863288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;;
88642890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;;
88652891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;;
88662892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;;
88672893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;;
88682894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;;
88692895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;;
88702896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;;
88712897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;;
88722898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;;
88732899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;;
8874289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;;
8875289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;;
8876289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;;
8877289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;;
8878289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;;
8879289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;;
888028A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;;
888128A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;;
888228A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;;
888328A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;;
888428A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;;
888528A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;;
888628A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;;
888728A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;;
888828A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;;
888928A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;;
889028AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;;
889128AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;;
889228AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;;
889328AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;;
889428AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;;
889528AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;;
889628B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;;
889728B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;;
889828B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;;
889928B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;;
890028B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;;
890128B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;;
890228B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;;
890328B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;;
890428B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;;
890528B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;;
890628BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;;
890728BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;;
890828BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;;
890928BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;;
891028BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;;
891128BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;;
891228C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;;
891328C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;;
891428C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;;
891528C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;;
891628C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;;
891728C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;;
891828C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;;
891928C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;;
892028C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;;
892128C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;;
892228CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;;
892328CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;;
892428CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;;
892528CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;;
892628CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;;
892728CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;;
892828D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;;
892928D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;;
893028D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;;
893128D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;;
893228D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;;
893328D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;;
893428D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;;
893528D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;;
893628D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;;
893728D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;;
893828DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;;
893928DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;;
894028DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;;
894128DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;;
894228DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;;
894328DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;;
894428E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;;
894528E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;;
894628E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;;
894728E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;;
894828E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;;
894928E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;;
895028E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;;
895128E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;;
895228E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;;
895328E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;;
895428EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;;
895528EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;;
895628EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;;
895728ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;;
895828EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;;
895928EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;;
896028F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;;
896128F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;;
896228F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;;
896328F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;;
896428F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;;
896528F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;;
896628F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;;
896728F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;;
896828F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;;
896928F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;;
897028FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;;
897128FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;;
897228FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;;
897328FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;;
897428FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;;
897528FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;;
89762900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
89772901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
89782902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
89792903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
89802904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
89812905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
89822906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
89832907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
89842908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
89852909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
8986290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
8987290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
8988290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
8989290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
8990290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
8991290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
89922910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
89932911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
89942912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
89952913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
89962914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
89972915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
89982916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
89992917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
90002918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
90012919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
9002291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
9003291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
9004291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
9005291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
9006291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
9007291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
90082920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
90092921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
90102922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
90112923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
90122924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
90132925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
90142926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
90152927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
90162928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
90172929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
9018292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
9019292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;;
9020292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;;
9021292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
9022292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
9023292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
90242930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
90252931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
90262932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
90272933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;;
90282934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;;
90292935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
90302936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;;
90312937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;;
90322938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
90332939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
9034293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
9035293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
9036293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;;
9037293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;;
9038293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
9039293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
90402940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
90412941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
90422942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
90432943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
90442944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
90452945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
90462946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
90472947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
90482948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
90492949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
9050294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
9051294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
9052294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
9053294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
9054294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
9055294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
90562950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
90572951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
90582952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
90592953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
90602954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
90612955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
90622956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
90632957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
90642958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
90652959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
9066295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
9067295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
9068295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
9069295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
9070295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
9071295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
90722960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
90732961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
90742962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
90752963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
90762964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
90772965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
90782966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
90792967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
90802968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
90812969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
9082296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
9083296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
9084296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
9085296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
9086296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
9087296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
90882970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;;
90892971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
90902972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
90912973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
90922974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
90932975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
90942976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
90952977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;;
90962978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
90972979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
9098297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;;
9099297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
9100297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;;
9101297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;;
9102297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;;
9103297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;;
91042980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;;
91052981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;;
91062982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;;
91072983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;;
91082984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;;
91092985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
91102986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
91112987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;;
91122988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;;
91132989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;;
9114298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;;
9115298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;;
9116298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;;
9117298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;;
9118298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;;
9119298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;;
91202990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;;
91212991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;;
91222992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;;
91232993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
91242994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
91252995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
91262996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
91272997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
91282998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
91292999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;;
9130299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;;
9131299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
9132299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;;
9133299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;;
9134299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
9135299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
913629A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
913729A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
913829A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
913929A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
914029A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
914129A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
914229A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
914329A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;;
914429A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;;
914529A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;;
914629AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;;
914729AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;;
914829AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;;
914929AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;;
915029AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;;
915129AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;;
915229B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;;
915329B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
915429B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
915529B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
915629B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
915729B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;;
915829B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
915929B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;;
916029B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
916129B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
916229BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
916329BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;;
916429BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
916529BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;;
916629BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;;
916729BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;;
916829C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
916929C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
917029C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
917129C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
917229C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
917329C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
917429C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;;
917529C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
917629C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;;
917729C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;;
917829CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
917929CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
918029CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
918129CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;;
918229CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
918329CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;;
918429D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
918529D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
918629D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
918729D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;;
918829D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
918929D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
919029D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;;
919129D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;;
919229D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
919329D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
919429DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
919529DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
919629DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;;
919729DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;;
919829DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
919929DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;;
920029E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;;
920129E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;;
920229E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;;
920329E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
920429E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
920529E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
920629E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;;
920729E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;;
920829E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
920929E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
921029EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
921129EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;;
921229EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
921329ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
921429EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;;
921529EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;;
921629F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;;
921729F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
921829F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;;
921929F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;;
922029F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;;
922129F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
922229F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
922329F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
922429F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;;
922529F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
922629FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;;
922729FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;;
922829FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
922929FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
923029FE;TINY;Sm;0;ON;;;;;N;;;;;
923129FF;MINY;Sm;0;ON;;;;;N;;;;;
92322A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
92332A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;;
92342A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
92352A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;;
92362A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;;
92372A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;;
92382A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;;
92392A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;;
92402A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;;
92412A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
92422A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;;
92432A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;;
92442A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;;
92452A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;;
92462A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;;
92472A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;;
92482A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;;
92492A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;;
92502A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
92512A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
92522A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;;
92532A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;;
92542A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;;
92552A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;;
92562A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;;
92572A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;;
92582A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;;
92592A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
92602A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
92612A1D;JOIN;Sm;0;ON;;;;;N;;;;;
92622A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;;
92632A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;;
92642A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;;
92652A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;;
92662A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
92672A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;;
92682A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
92692A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
92702A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;;
92712A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;;
92722A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;;
92732A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;;
92742A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
92752A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;;
92762A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
92772A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
92782A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
92792A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;;
92802A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
92812A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
92822A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;;
92832A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
92842A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
92852A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
92862A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;;
92872A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;;
92882A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
92892A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
92902A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
92912A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
92922A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
92932A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
92942A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;;
92952A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;;
92962A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;;
92972A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;;
92982A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
92992A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
93002A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;;
93012A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;;
93022A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
93032A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;;
93042A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
93052A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;;
93062A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;;
93072A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;;
93082A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
93092A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
93102A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;;
93112A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;;
93122A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
93132A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
93142A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
93152A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;;
93162A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;;
93172A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
93182A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;;
93192A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;;
93202A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;;
93212A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
93222A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
93232A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
93242A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
93252A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
93262A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
93272A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
93282A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
93292A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
93302A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
93312A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
93322A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
93332A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
93342A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
93352A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
93362A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
93372A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
93382A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
93392A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
93402A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;;
93412A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
93422A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;;
93432A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;;
93442A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
93452A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;;
93462A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
93472A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
93482A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;;
93492A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;
93502A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;;
93512A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;;
93522A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;;
93532A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
93542A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
93552A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
93562A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
93572A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
93582A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
93592A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
93602A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
93612A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
93622A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
93632A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;;
93642A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;;
93652A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
93662A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
93672A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
93682A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
93692A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
93702A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
93712A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
93722A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
93732A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
93742A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
93752A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
93762A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
93772A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
93782A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
93792A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
93802A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
93812A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
93822A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
93832A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
93842A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
93852A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
93862A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
93872A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
93882A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
93892A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
93902A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
93912A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
93922AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
93932AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
93942AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
93952AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
93962AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;;
93972AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;;
93982AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
93992AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
94002AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
94012AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
94022AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;;
94032AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;;
94042AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94052AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94062AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;;
94072AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
94082AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
94092AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94102AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94112AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
94122AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
94132AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94142AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94152AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94162AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94172AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94182ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94192ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;;
94202ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
94212ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
94222ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
94232ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
94242AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
94252AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
94262AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
94272AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
94282AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
94292AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
94302AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
94312AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
94322AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
94332AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94342ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94352ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94362ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94372ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
94382ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
94392ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;;
94402AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;;
94412AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94422AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94432AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
94442AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
94452AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
94462AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
94472AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;;
94482AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;;
94492AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
94502ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;;
94512ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;;
94522ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;;;;
94532ADD;NONFORKING;Sm;0;ON;;;;;N;;;;;
94542ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;;
94552ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
94562AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;;
94572AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;;
94582AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
94592AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
94602AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
94612AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
94622AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;;
94632AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
94642AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
94652AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
94662AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;;
94672AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;;
94682AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
94692AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
94702AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;;
94712AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
94722AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
94732AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
94742AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
94752AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
94762AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;;
94772AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
94782AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;;
94792AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
94802AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
94812AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94822AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
94832AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;;
94842AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;;
94852AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
94862AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
94872AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
94882B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
94892B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
94902B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
94912B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
94922B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;;
94932B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
94942B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
94952B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
94962B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
94972B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
94982B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
94992B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
95002B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;;
95012B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;;
95022B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
95032B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
95042B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
95052B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
95062B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
95072B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
95082B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
95092B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
95102B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
95112B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
95122B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
95132B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
95142B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;;
95152B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;;
95162B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;;
95172B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
95182B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
95192B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;;
95202B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;;
95212B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;;
95222B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;;
95232B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;;
95242B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;;
95252B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
95262B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
95272B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
95282B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
95292B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
95302B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;;
95312B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;;
95322B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
95332B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
95342B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
95352B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
95362B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
95372B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
95382B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
95392B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
95402B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
95412B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
95422B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
95432B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
95442B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
95452B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
95462B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
95472B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
95482B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
95492B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
95502B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
95512B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;;
95522B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
95532B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
95542B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
95552B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;;
95562B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;;
95572B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
95582B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
95592B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
95602B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
95612B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
95622B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
95632B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
95642B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
95652B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;;
95662B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;;
95672B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;;
95682B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
95692B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
95702B55;HEAVY LARGE CIRCLE;So;0;ON;;;;;N;;;;;
95712B56;HEAVY OVAL WITH OVAL INSIDE;So;0;ON;;;;;N;;;;;
95722B57;HEAVY CIRCLE WITH CIRCLE INSIDE;So;0;ON;;;;;N;;;;;
95732B58;HEAVY CIRCLE;So;0;ON;;;;;N;;;;;
95742B59;HEAVY CIRCLED SALTIRE;So;0;ON;;;;;N;;;;;
95752C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30;
95762C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31;
95772C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32;
95782C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33;
95792C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34;
95802C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35;
95812C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36;
95822C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37;
95832C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38;
95842C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39;
95852C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A;
95862C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B;
95872C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C;
95882C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D;
95892C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E;
95902C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F;
95912C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40;
95922C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41;
95932C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42;
95942C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43;
95952C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44;
95962C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45;
95972C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46;
95982C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47;
95992C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48;
96002C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49;
96012C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A;
96022C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B;
96032C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C;
96042C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D;
96052C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E;
96062C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F;
96072C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50;
96082C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51;
96092C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52;
96102C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53;
96112C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54;
96122C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55;
96132C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56;
96142C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57;
96152C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58;
96162C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59;
96172C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A;
96182C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B;
96192C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C;
96202C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D;
96212C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E;
96222C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00
96232C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01
96242C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02
96252C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03
96262C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04
96272C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05
96282C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06
96292C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07
96302C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08
96312C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09
96322C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A
96332C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B
96342C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C
96352C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D
96362C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E
96372C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F
96382C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10
96392C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11
96402C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12
96412C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13
96422C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14
96432C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15
96442C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16
96452C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17
96462C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18
96472C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19
96482C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A
96492C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B
96502C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C
96512C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D
96522C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E
96532C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F
96542C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20
96552C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21
96562C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22
96572C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23
96582C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24
96592C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25
96602C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26
96612C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27
96622C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28
96632C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29
96642C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A
96652C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B
96662C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C
96672C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D
96682C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E
96692C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61;
96702C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60
96712C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B;
96722C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D;
96732C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D;
96742C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A
96752C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E
96762C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68;
96772C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67
96782C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A;
96792C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69
96802C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C;
96812C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B
96822C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251;
96832C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271;
96842C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250;
96852C70;LATIN CAPITAL LETTER TURNED ALPHA;Lu;0;L;;;;;N;;;;0252;
96862C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;;
96872C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73;
96882C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72
96892C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;;
96902C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76;
96912C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75
96922C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;;
96932C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;;
96942C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;;
96952C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;;
96962C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;;
96972C7C;LATIN SUBSCRIPT SMALL LETTER J;Ll;0;L;<sub> 006A;;;;N;;;;;
96982C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;;
96992C7E;LATIN CAPITAL LETTER S WITH SWASH TAIL;Lu;0;L;;;;;N;;;;023F;
97002C7F;LATIN CAPITAL LETTER Z WITH SWASH TAIL;Lu;0;L;;;;;N;;;;0240;
97012C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81;
97022C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80
97032C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83;
97042C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82
97052C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85;
97062C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84
97072C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87;
97082C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86
97092C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89;
97102C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88
97112C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B;
97122C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A
97132C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D;
97142C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C
97152C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F;
97162C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E
97172C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91;
97182C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90
97192C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93;
97202C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92
97212C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95;
97222C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94
97232C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97;
97242C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96
97252C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99;
97262C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98
97272C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B;
97282C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A
97292C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D;
97302C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C
97312C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F;
97322C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E
97332CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1;
97342CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0
97352CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3;
97362CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2
97372CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5;
97382CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4
97392CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7;
97402CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6
97412CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9;
97422CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8
97432CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB;
97442CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA
97452CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD;
97462CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC
97472CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF;
97482CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE
97492CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1;
97502CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0
97512CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3;
97522CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2
97532CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5;
97542CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4
97552CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7;
97562CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6
97572CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9;
97582CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8
97592CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB;
97602CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA
97612CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD;
97622CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC
97632CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF;
97642CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE
97652CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1;
97662CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0
97672CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3;
97682CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2
97692CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5;
97702CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4
97712CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7;
97722CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6
97732CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9;
97742CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8
97752CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB;
97762CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA
97772CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD;
97782CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC
97792CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF;
97802CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE
97812CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1;
97822CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0
97832CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3;
97842CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2
97852CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5;
97862CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4
97872CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7;
97882CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6
97892CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9;
97902CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8
97912CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB;
97922CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA
97932CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD;
97942CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC
97952CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF;
97962CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE
97972CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1;
97982CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0
97992CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3;
98002CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2
98012CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;;
98022CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;;
98032CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;;
98042CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;;
98052CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;;
98062CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;;
98072CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;;
98082CEB;COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI;Lu;0;L;;;;;N;;;;2CEC;
98092CEC;COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI;Ll;0;L;;;;;N;;;2CEB;;2CEB
98102CED;COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA;Lu;0;L;;;;;N;;;;2CEE;
98112CEE;COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA;Ll;0;L;;;;;N;;;2CED;;2CED
98122CEF;COPTIC COMBINING NI ABOVE;Mn;230;NSM;;;;;N;;;;;
98132CF0;COPTIC COMBINING SPIRITUS ASPER;Mn;230;NSM;;;;;N;;;;;
98142CF1;COPTIC COMBINING SPIRITUS LENIS;Mn;230;NSM;;;;;N;;;;;
98152CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;;
98162CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
98172CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
98182CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;;
98192CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;;
98202CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;;
98212CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;;
98222D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;;10A0;;10A0
98232D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;;10A1;;10A1
98242D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;;10A2;;10A2
98252D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;;10A3;;10A3
98262D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;;10A4;;10A4
98272D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;;10A5;;10A5
98282D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;;10A6;;10A6
98292D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;;10A7;;10A7
98302D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;;10A8;;10A8
98312D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;;10A9;;10A9
98322D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;;10AA;;10AA
98332D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;;10AB;;10AB
98342D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;;10AC;;10AC
98352D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;;10AD;;10AD
98362D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;;10AE;;10AE
98372D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;;10AF;;10AF
98382D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;;10B0;;10B0
98392D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;;10B1;;10B1
98402D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;;10B2;;10B2
98412D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;;10B3;;10B3
98422D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;;10B4;;10B4
98432D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;;10B5;;10B5
98442D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;;10B6;;10B6
98452D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;;10B7;;10B7
98462D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;;10B8;;10B8
98472D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;;10B9;;10B9
98482D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;;10BA;;10BA
98492D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;;10BB;;10BB
98502D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;;10BC;;10BC
98512D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;;10BD;;10BD
98522D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;;10BE;;10BE
98532D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;;10BF;;10BF
98542D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;;10C0;;10C0
98552D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;;10C1;;10C1
98562D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;;10C2;;10C2
98572D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;;10C3;;10C3
98582D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;;10C4;;10C4
98592D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;;10C5;;10C5
98602D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;;
98612D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;;
98622D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;;
98632D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;;
98642D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;;
98652D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;;
98662D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;;
98672D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;;
98682D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;;
98692D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;;
98702D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;;
98712D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;;
98722D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;;
98732D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;;
98742D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;;
98752D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;;
98762D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;;;;
98772D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;;
98782D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;;
98792D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;;
98802D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;;
98812D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;;
98822D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;;
98832D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;;
98842D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;;
98852D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;;
98862D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;;
98872D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;;
98882D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;;
98892D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;;
98902D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;;
98912D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;;
98922D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;;
98932D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;;
98942D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;;
98952D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;;;;
98962D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;;
98972D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;;
98982D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;;
98992D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;;
99002D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;;;;
99012D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;;
99022D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;;
99032D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;;
99042D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;;
99052D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;;
99062D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;;
99072D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;;
99082D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;;
99092D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;;
99102D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;;
99112D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;;
99122D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;;;;
99132D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;;
99142D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;;;;
99152D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;;
99162D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;;
99172D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;;
99182D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;;
99192D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;;
99202D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;;
99212D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;;
99222D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;;
99232D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;;
99242D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;;
99252D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;;
99262D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;;
99272D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;;
99282D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;;
99292D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;;
99302D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;;
99312D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;;
99322D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;;
99332D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;;
99342D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;;
99352D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;;
99362D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;;
99372D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;;
99382DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
99392DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
99402DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
99412DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;;
99422DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;;
99432DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
99442DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
99452DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;;
99462DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;;
99472DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;;
99482DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;;
99492DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;;
99502DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;;
99512DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;;
99522DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
99532DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
99542DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
99552DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;;
99562DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;;
99572DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
99582DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
99592DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;;
99602DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;;
99612DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;;
99622DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;;
99632DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;;
99642DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;;
99652DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;;
99662DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;;
99672DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;;
99682DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;;
99692DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;;
99702DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;;
99712DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;;
99722DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;;
99732DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;;
99742DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;;
99752DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;;
99762DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;;
99772DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;;
99782DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;;
99792DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;;
99802DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;;
99812DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;;
99822DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;;
99832DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;;
99842DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;;
99852DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;;
99862DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;;
99872DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;;
99882DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;;
99892DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;;
99902DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;;
99912DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;;
99922DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;;
99932DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;;
99942DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;;
99952DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;;
99962DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;;
99972DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;;
99982DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;;
99992DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;;
100002DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;;
100012DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;;
100022DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;;
100032DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;;
100042DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;;
100052DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;;
100062DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;;
100072DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;;
100082DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;;
100092DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;;
100102DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;;
100112DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;;
100122DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;;
100132DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;;
100142DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;
100152DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;;
100162DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;;
100172DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;;
100182DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;;
100192DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;;
100202DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;;
100212DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;;
100222DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;;
100232DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;;
100242DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;
100252DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;;
100262E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
100272E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
100282E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
100292E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
100302E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
100312E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
100322E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
100332E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
100342E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;;
100352E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;;
100362E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;;
100372E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;;
100382E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;;
100392E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;;
100402E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;;
100412E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
100422E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
100432E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
100442E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;;
100452E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;;
100462E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;;
100472E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;;
100482E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;;
100492E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;;
100502E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;;
100512E19;PALM BRANCH;Po;0;ON;;;;;N;;;;;
100522E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;;
100532E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;;
100542E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;;
100552E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;;
100562E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;;
100572E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;;
100582E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;;
100592E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;;
100602E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
100612E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
100622E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
100632E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
100642E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;;
100652E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;;
100662E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
100672E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
100682E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
100692E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;;
100702E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
100712E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;;
100722E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;;
100732E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;;
100742E30;RING POINT;Po;0;ON;;;;;N;;;;;
100752E31;WORD SEPARATOR MIDDLE DOT;Po;0;ON;;;;;N;;;;;
100762E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
100772E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
100782E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
100792E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
100802E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
100812E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
100822E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
100832E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
100842E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
100852E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
100862E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
100872E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
100882E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
100892E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
100902E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
100912E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
100922E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
100932E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
100942E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
100952E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
100962E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
100972E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
100982E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
100992E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
101002E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
101012E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
101022E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
101032E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
101042E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
101052E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
101062E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
101072EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
101082EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
101092EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
101102EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
101112EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
101122EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
101132EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
101142EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
101152EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
101162EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
101172EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
101182EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
101192EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
101202EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
101212EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
101222EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
101232EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
101242EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
101252EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
101262EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
101272EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
101282EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
101292EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
101302EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
101312EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
101322EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
101332EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
101342EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
101352EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
101362EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
101372EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
101382EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
101392EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
101402EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
101412EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
101422EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
101432EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
101442EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
101452EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
101462EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
101472EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
101482EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
101492ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
101502ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
101512ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
101522ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
101532ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
101542ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
101552ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
101562ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
101572ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
101582ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
101592ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
101602ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
101612ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
101622ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
101632ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
101642ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
101652EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
101662EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
101672EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
101682EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
101692EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
101702EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
101712EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
101722EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
101732EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
101742EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
101752EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
101762EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
101772EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
101782EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
101792EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
101802EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
101812EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
101822EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
101832EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
101842EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
101852EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
101862EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
101872EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
101882EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
101892EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
101902EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
101912F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
101922F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
101932F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
101942F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
101952F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
101962F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
101972F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
101982F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
101992F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
102002F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
102012F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
102022F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
102032F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
102042F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
102052F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
102062F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
102072F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
102082F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
102092F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
102102F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
102112F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
102122F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
102132F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
102142F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
102152F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
102162F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
102172F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
102182F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
102192F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
102202F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
102212F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
102222F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
102232F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
102242F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
102252F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
102262F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
102272F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
102282F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
102292F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
102302F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
102312F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
102322F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
102332F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
102342F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
102352F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
102362F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
102372F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
102382F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
102392F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
102402F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
102412F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
102422F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
102432F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
102442F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
102452F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
102462F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
102472F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
102482F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
102492F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
102502F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
102512F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
102522F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
102532F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
102542F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
102552F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
102562F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
102572F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
102582F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
102592F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
102602F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
102612F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
102622F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
102632F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
102642F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
102652F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
102662F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
102672F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
102682F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
102692F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
102702F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
102712F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
102722F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
102732F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
102742F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
102752F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
102762F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
102772F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
102782F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
102792F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
102802F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
102812F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
102822F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
102832F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
102842F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
102852F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
102862F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
102872F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
102882F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
102892F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
102902F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
102912F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
102922F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
102932F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
102942F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
102952F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
102962F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
102972F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
102982F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
102992F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
103002F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
103012F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
103022F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
103032F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
103042F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
103052F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
103062F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
103072F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
103082F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
103092F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
103102F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
103112F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
103122F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
103132F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
103142F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
103152F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
103162F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
103172F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
103182F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
103192F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
103202F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
103212F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
103222F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
103232F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
103242F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
103252F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
103262F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
103272F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
103282F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
103292F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
103302F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
103312F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
103322F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
103332F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
103342F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
103352F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
103362F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
103372F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
103382F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
103392F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
103402F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
103412F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
103422F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
103432F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
103442F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
103452F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
103462F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
103472F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
103482F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
103492F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
103502F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
103512FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
103522FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
103532FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
103542FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
103552FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
103562FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
103572FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
103582FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
103592FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
103602FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
103612FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
103622FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
103632FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
103642FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
103652FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
103662FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
103672FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
103682FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
103692FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
103702FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
103712FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
103722FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
103732FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
103742FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
103752FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
103762FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
103772FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
103782FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
103792FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
103802FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
103812FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
103822FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
103832FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
103842FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
103852FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
103862FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
103872FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
103882FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
103892FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
103902FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
103912FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
103922FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
103932FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
103942FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
103952FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
103962FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
103972FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
103982FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
103992FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
104002FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
104012FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
104022FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
104032FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
104042FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
104052FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
104062FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
104072FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
104082FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
104092FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
104102FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
104112FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
104122FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
104132FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
104142FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
104152FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
104162FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
104173000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
104183001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
104193002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
104203003;DITTO MARK;Po;0;ON;;;;;N;;;;;
104213004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
104223005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
104233006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
104243007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
104253008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
104263009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
10427300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
10428300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
10429300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
10430300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
10431300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
10432300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
104333010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
104343011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
104353012;POSTAL MARK;So;0;ON;;;;;N;;;;;
104363013;GETA MARK;So;0;ON;;;;;N;;;;;
104373014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
104383015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
104393016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
104403017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
104413018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
104423019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
10443301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
10444301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
10445301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
10446301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
10447301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
10448301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
104493020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
104503021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
104513022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
104523023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
104533024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
104543025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
104553026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
104563027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
104573028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
104583029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
10459302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
10460302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
10461302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
10462302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
10463302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
10464302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
104653030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
104663031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
104673032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
104683033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
104693034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
104703035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
104713036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
104723037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
104733038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
104743039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
10475303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
10476303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
10477303C;MASU MARK;Lo;0;L;;;;;N;;;;;
10478303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;;
10479303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
10480303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
104813041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
104823042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
104833043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
104843044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
104853045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
104863046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
104873047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
104883048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
104893049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
10490304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
10491304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
10492304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
10493304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
10494304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
10495304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
104963050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
104973051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
104983052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
104993053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
105003054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
105013055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
105023056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
105033057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
105043058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
105053059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
10506305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
10507305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
10508305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
10509305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
10510305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
10511305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
105123060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
105133061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
105143062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
105153063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
105163064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
105173065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
105183066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
105193067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
105203068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
105213069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
10522306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
10523306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
10524306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
10525306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
10526306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
10527306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
105283070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
105293071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
105303072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
105313073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
105323074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
105333075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
105343076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
105353077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
105363078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
105373079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
10538307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
10539307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
10540307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
10541307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
10542307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
10543307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
105443080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
105453081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
105463082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
105473083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
105483084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
105493085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
105503086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
105513087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
105523088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
105533089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
10554308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
10555308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
10556308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
10557308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
10558308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
10559308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
105603090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
105613091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
105623092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
105633093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
105643094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
105653095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
105663096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
105673099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
10568309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
10569309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
10570309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
10571309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
10572309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
10573309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;;
1057430A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;
1057530A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
1057630A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
1057730A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
1057830A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
1057930A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
1058030A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
1058130A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
1058230A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
1058330A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
1058430AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
1058530AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
1058630AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
1058730AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
1058830AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
1058930AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
1059030B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
1059130B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
1059230B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
1059330B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
1059430B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
1059530B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
1059630B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
1059730B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
1059830B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
1059930B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
1060030BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
1060130BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
1060230BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
1060330BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
1060430BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
1060530BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
1060630C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
1060730C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
1060830C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
1060930C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
1061030C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
1061130C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
1061230C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
1061330C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
1061430C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
1061530C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
1061630CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
1061730CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
1061830CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
1061930CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
1062030CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
1062130CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
1062230D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
1062330D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
1062430D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
1062530D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
1062630D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
1062730D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
1062830D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
1062930D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
1063030D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
1063130D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
1063230DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
1063330DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
1063430DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
1063530DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
1063630DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
1063730DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
1063830E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
1063930E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
1064030E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
1064130E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
1064230E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
1064330E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
1064430E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
1064530E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
1064630E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
1064730E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
1064830EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
1064930EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
1065030EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
1065130ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
1065230EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
1065330EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
1065430F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
1065530F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
1065630F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
1065730F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
1065830F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
1065930F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
1066030F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
1066130F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
1066230F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
1066330F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
1066430FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
1066530FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;;
1066630FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
1066730FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
1066830FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
1066930FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;;
106703105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
106713106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
106723107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
106733108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
106743109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
10675310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
10676310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
10677310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
10678310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
10679310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
10680310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
106813110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
106823111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
106833112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
106843113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
106853114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
106863115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
106873116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
106883117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
106893118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
106903119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
10691311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
10692311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
10693311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
10694311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
10695311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
10696311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
106973120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
106983121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
106993122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
107003123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
107013124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
107023125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
107033126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
107043127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
107053128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
107063129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
10707312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
10708312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
10709312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
10710312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;;
107113131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
107123132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
107133133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
107143134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
107153135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
107163136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
107173137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
107183138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
107193139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
10720313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
10721313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
10722313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
10723313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
10724313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
10725313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
107263140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
107273141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
107283142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
107293143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
107303144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
107313145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
107323146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
107333147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
107343148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
107353149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
10736314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
10737314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
10738314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
10739314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
10740314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
10741314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
107423150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
107433151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
107443152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
107453153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
107463154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
107473155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
107483156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
107493157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
107503158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
107513159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
10752315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
10753315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
10754315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
10755315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
10756315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
10757315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
107583160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
107593161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
107603162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
107613163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
107623164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
107633165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
107643166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
107653167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
107663168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
107673169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
10768316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
10769316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
10770316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
10771316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
10772316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
10773316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
107743170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
107753171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
107763172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
107773173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
107783174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
107793175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
107803176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
107813177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
107823178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
107833179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
10784317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
10785317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
10786317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
10787317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
10788317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
10789317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
107903180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
107913181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
107923182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
107933183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
107943184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
107953185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
107963186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
107973187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
107983188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
107993189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
10800318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
10801318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
10802318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
10803318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
10804318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
108053190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;;;;
108063191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;;;;
108073192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;;;;
108083193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;;;;
108093194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;;;;
108103195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;;;;
108113196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;;;;
108123197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;;;;
108133198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;;;;
108143199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;;;;
10815319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;;;;
10816319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;;;;
10817319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;;;;
10818319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;;;;
10819319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;;;;
10820319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;;;;
1082131A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
1082231A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
1082331A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
1082431A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
1082531A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
1082631A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
1082731A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
1082831A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
1082931A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
1083031A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
1083131AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
1083231AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
1083331AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
1083431AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
1083531AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
1083631AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
1083731B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
1083831B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
1083931B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
1084031B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
1084131B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
1084231B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
1084331B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
1084431B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
1084531C0;CJK STROKE T;So;0;ON;;;;;N;;;;;
1084631C1;CJK STROKE WG;So;0;ON;;;;;N;;;;;
1084731C2;CJK STROKE XG;So;0;ON;;;;;N;;;;;
1084831C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;;
1084931C4;CJK STROKE SW;So;0;ON;;;;;N;;;;;
1085031C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;;
1085131C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;;
1085231C7;CJK STROKE HP;So;0;ON;;;;;N;;;;;
1085331C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;;
1085431C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;;
1085531CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;;
1085631CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;;
1085731CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;;
1085831CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;;
1085931CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;;
1086031CF;CJK STROKE N;So;0;ON;;;;;N;;;;;
1086131D0;CJK STROKE H;So;0;ON;;;;;N;;;;;
1086231D1;CJK STROKE S;So;0;ON;;;;;N;;;;;
1086331D2;CJK STROKE P;So;0;ON;;;;;N;;;;;
1086431D3;CJK STROKE SP;So;0;ON;;;;;N;;;;;
1086531D4;CJK STROKE D;So;0;ON;;;;;N;;;;;
1086631D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;;
1086731D6;CJK STROKE HG;So;0;ON;;;;;N;;;;;
1086831D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;;
1086931D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;;
1087031D9;CJK STROKE ST;So;0;ON;;;;;N;;;;;
1087131DA;CJK STROKE SG;So;0;ON;;;;;N;;;;;
1087231DB;CJK STROKE PD;So;0;ON;;;;;N;;;;;
1087331DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;;
1087431DD;CJK STROKE TN;So;0;ON;;;;;N;;;;;
1087531DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;;
1087631DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;;
1087731E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;;
1087831E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;
1087931E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;
1088031E3;CJK STROKE Q;So;0;ON;;;;;N;;;;;
1088131F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
1088231F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
1088331F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;
1088431F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;;
1088531F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;;
1088631F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;;
1088731F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;;
1088831F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;;
1088931F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;;
1089031F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;;
1089131FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;;
1089231FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;;
1089331FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;;
1089431FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;;
1089531FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;;
1089631FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;;
108973200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
108983201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
108993202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
109003203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
109013204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
109023205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
109033206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
109043207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
109053208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
109063209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
10907320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
10908320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
10909320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
10910320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
10911320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
10912320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
109133210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
109143211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
109153212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
109163213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
109173214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
109183215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
109193216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
109203217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
109213218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
109223219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
10923321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
10924321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
10925321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
10926321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;;
10927321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;;
109283220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
109293221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
109303222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
109313223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
109323224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
109333225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
109343226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
109353227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
109363228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
109373229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
10938322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
10939322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
10940322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
10941322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
10942322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
10943322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
109443230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
109453231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
109463232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
109473233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
109483234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
109493235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
109503236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
109513237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
109523238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
109533239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
10954323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
10955323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
10956323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
10957323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
10958323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
10959323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
109603240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
109613241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
109623242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
109633243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
109643244;CIRCLED IDEOGRAPH QUESTION;So;0;L;<circle> 554F;;;;N;;;;;
109653245;CIRCLED IDEOGRAPH KINDERGARTEN;So;0;L;<circle> 5E7C;;;;N;;;;;
109663246;CIRCLED IDEOGRAPH SCHOOL;So;0;L;<circle> 6587;;;;N;;;;;
109673247;CIRCLED IDEOGRAPH KOTO;So;0;L;<circle> 7B8F;;;;N;;;;;
109683248;CIRCLED NUMBER TEN ON BLACK SQUARE;So;0;L;;;;;N;;;;;
109693249;CIRCLED NUMBER TWENTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
10970324A;CIRCLED NUMBER THIRTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
10971324B;CIRCLED NUMBER FORTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
10972324C;CIRCLED NUMBER FIFTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
10973324D;CIRCLED NUMBER SIXTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
10974324E;CIRCLED NUMBER SEVENTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
10975324F;CIRCLED NUMBER EIGHTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
109763250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;;
109773251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;
109783252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;
109793253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;
109803254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;
109813255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;
109823256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;
109833257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;
109843258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;
109853259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;
10986325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;
10987325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;
10988325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;
10989325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;
10990325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;
10991325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;
109923260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
109933261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
109943262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
109953263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
109963264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
109973265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
109983266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
109993267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
110003268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
110013269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
11002326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
11003326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
11004326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
11005326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
11006326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
11007326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
110083270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
110093271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
110103272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
110113273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
110123274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
110133275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
110143276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
110153277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
110163278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
110173279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
11018327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
11019327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
11020327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;;
11021327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;;
11022327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;;
11023327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
110243280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
110253281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
110263282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
110273283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
110283284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
110293285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
110303286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
110313287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
110323288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
110333289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
11034328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
11035328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
11036328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
11037328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
11038328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
11039328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
110403290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
110413291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
110423292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
110433293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
110443294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
110453295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
110463296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
110473297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
110483298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
110493299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
11050329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
11051329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
11052329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
11053329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
11054329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
11055329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
1105632A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
1105732A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
1105832A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
1105932A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
1106032A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
1106132A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
1106232A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
1106332A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
1106432A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
1106532A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
1106632AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
1106732AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
1106832AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
1106932AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
1107032AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
1107132AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
1107232B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
1107332B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;
1107432B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;
1107532B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;
1107632B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;
1107732B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;
1107832B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;
1107932B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;
1108032B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;
1108132B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;
1108232BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;
1108332BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;
1108432BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;
1108532BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;
1108632BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;
1108732BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;
1108832C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
1108932C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
1109032C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
1109132C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
1109232C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
1109332C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
1109432C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
1109532C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
1109632C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
1109732C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
1109832CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
1109932CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
1110032CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;;
1110132CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;;
1110232CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;;
1110332CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;;
1110432D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
1110532D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
1110632D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
1110732D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
1110832D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
1110932D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
1111032D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
1111132D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
1111232D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
1111332D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
1111432DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
1111532DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
1111632DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
1111732DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
1111832DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
1111932DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
1112032E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
1112132E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
1112232E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
1112332E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
1112432E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
1112532E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
1112632E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
1112732E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
1112832E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
1112932E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
1113032EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
1113132EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
1113232EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
1113332ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
1113432EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
1113532EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
1113632F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
1113732F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
1113832F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
1113932F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
1114032F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
1114132F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
1114232F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
1114332F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
1114432F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
1114532F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
1114632FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
1114732FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
1114832FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
1114932FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
1115032FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
111513300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
111523301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
111533302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
111543303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
111553304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
111563305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
111573306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
111583307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
111593308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
111603309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
11161330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
11162330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
11163330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
11164330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
11165330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
11166330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
111673310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
111683311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
111693312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
111703313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
111713314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
111723315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
111733316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
111743317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
111753318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
111763319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
11177331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
11178331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
11179331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
11180331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
11181331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
11182331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
111833320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
111843321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
111853322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
111863323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
111873324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
111883325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
111893326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
111903327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
111913328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
111923329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
11193332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
11194332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
11195332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
11196332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
11197332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
11198332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
111993330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
112003331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
112013332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
112023333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
112033334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
112043335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
112053336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
112063337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
112073338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
112083339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
11209333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
11210333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
11211333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
11212333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
11213333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
11214333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
112153340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
112163341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
112173342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
112183343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
112193344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
112203345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
112213346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
112223347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
112233348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
112243349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
11225334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
11226334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
11227334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
11228334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
11229334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
11230334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
112313350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
112323351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
112333352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
112343353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
112353354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
112363355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
112373356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
112383357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
112393358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
112403359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
11241335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
11242335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
11243335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
11244335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
11245335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
11246335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
112473360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
112483361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
112493362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
112503363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
112513364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
112523365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
112533366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
112543367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
112553368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
112563369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
11257336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
11258336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
11259336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
11260336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
11261336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
11262336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
112633370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
112643371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
112653372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
112663373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
112673374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
112683375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
112693376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
112703377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;;
112713378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;;
112723379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;;
11273337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;;
11274337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
11275337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
11276337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
11277337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
11278337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
112793380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
112803381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
112813382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
112823383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
112833384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
112843385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
112853386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
112863387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
112873388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
112883389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
11289338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
11290338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
11291338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
11292338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
11293338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
11294338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
112953390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
112963391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
112973392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
112983393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
112993394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
113003395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
113013396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
113023397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
113033398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
113043399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
11305339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
11306339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
11307339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
11308339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
11309339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
11310339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
1131133A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
1131233A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
1131333A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
1131433A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
1131533A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
1131633A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
1131733A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
1131833A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
1131933A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
1132033A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
1132133AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
1132233AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
1132333AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
1132433AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
1132533AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
1132633AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
1132733B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
1132833B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
1132933B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
1133033B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
1133133B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
1133233B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
1133333B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
1133433B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
1133533B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
1133633B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
1133733BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
1133833BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
1133933BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
1134033BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
1134133BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
1134233BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
1134333C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
1134433C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
1134533C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
1134633C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
1134733C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
1134833C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
1134933C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
1135033C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
1135133C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
1135233C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
1135333CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
1135433CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
1135533CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
1135633CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
1135733CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
1135833CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
1135933D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
1136033D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
1136133D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
1136233D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
1136333D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
1136433D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
1136533D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
1136633D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
1136733D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
1136833D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
1136933DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
1137033DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
1137133DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
1137233DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
1137333DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;;
1137433DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;;
1137533E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
1137633E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
1137733E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
1137833E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
1137933E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
1138033E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
1138133E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
1138233E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
1138333E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
1138433E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
1138533EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
1138633EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
1138733EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
1138833ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
1138933EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
1139033EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
1139133F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
1139233F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
1139333F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
1139433F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
1139533F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
1139633F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
1139733F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
1139833F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
1139933F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
1140033F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
1140133FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
1140233FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
1140333FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
1140433FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
1140533FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
1140633FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;
114073400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
114084DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
114094DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;;
114104DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;;
114114DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;;
114124DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;;
114134DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
114144DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;;
114154DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;;
114164DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;;
114174DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;;
114184DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;;
114194DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;;
114204DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;;
114214DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;;
114224DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;;
114234DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;;
114244DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;;
114254DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
114264DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;;
114274DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;;
114284DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;;
114294DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;;
114304DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;;
114314DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;;
114324DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;;
114334DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;;
114344DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;;
114354DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;;
114364DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;;
114374DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;;
114384DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;;
114394DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;;
114404DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;;
114414DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;;
114424DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;;
114434DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;;
114444DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;;
114454DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;;
114464DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
114474DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;;
114484DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;;
114494DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;;
114504DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
114514DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;;
114524DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;;
114534DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;;
114544DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;;
114554DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;;
114564DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;;
114574DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;;
114584DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;;
114594DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;;
114604DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;;
114614DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;;
114624DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;;
114634DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;;
114644DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;;
114654DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;;
114664DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;;
114674DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;;
114684DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;;
114694DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;;
114704DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;;
114714DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
114724DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
114734E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
114749FCB;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
11475A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
11476A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
11477A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
11478A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
11479A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
11480A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
11481A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
11482A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
11483A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
11484A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
11485A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
11486A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
11487A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
11488A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
11489A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
11490A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
11491A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
11492A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
11493A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
11494A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
11495A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
11496A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;;
11497A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
11498A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
11499A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
11500A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
11501A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
11502A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
11503A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
11504A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
11505A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
11506A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
11507A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
11508A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
11509A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
11510A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
11511A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
11512A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
11513A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
11514A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
11515A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
11516A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
11517A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
11518A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
11519A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
11520A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
11521A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
11522A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
11523A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
11524A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
11525A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
11526A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
11527A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
11528A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
11529A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
11530A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
11531A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
11532A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
11533A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
11534A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
11535A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
11536A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
11537A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
11538A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
11539A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
11540A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
11541A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
11542A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
11543A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
11544A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
11545A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
11546A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
11547A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
11548A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
11549A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
11550A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
11551A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
11552A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
11553A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
11554A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
11555A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
11556A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
11557A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
11558A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
11559A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
11560A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
11561A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
11562A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
11563A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
11564A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
11565A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
11566A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
11567A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
11568A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
11569A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
11570A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
11571A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
11572A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
11573A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
11574A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
11575A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
11576A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
11577A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
11578A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
11579A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
11580A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
11581A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
11582A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
11583A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
11584A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
11585A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
11586A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
11587A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
11588A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
11589A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
11590A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
11591A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
11592A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
11593A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
11594A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
11595A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
11596A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
11597A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
11598A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
11599A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
11600A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
11601A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
11602A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
11603A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
11604A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
11605A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
11606A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
11607A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
11608A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
11609A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
11610A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
11611A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
11612A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
11613A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
11614A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
11615A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
11616A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
11617A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
11618A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
11619A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
11620A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
11621A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
11622A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
11623A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
11624A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
11625A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
11626A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
11627A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
11628A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
11629A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
11630A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
11631A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
11632A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
11633A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
11634A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
11635A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
11636A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
11637A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
11638A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
11639A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
11640A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
11641A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
11642A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
11643A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
11644A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
11645A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
11646A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
11647A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
11648A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
11649A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
11650A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
11651A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
11652A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
11653A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
11654A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
11655A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
11656A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
11657A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
11658A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
11659A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
11660A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
11661A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
11662A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
11663A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
11664A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
11665A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
11666A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
11667A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
11668A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
11669A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
11670A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
11671A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
11672A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
11673A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
11674A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
11675A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
11676A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
11677A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
11678A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
11679A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
11680A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
11681A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
11682A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
11683A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
11684A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
11685A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
11686A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
11687A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
11688A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
11689A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
11690A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
11691A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
11692A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
11693A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
11694A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
11695A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
11696A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
11697A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
11698A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
11699A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
11700A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
11701A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
11702A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
11703A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
11704A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
11705A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
11706A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
11707A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
11708A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
11709A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
11710A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
11711A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
11712A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
11713A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
11714A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
11715A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
11716A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
11717A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
11718A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
11719A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
11720A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
11721A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
11722A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
11723A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
11724A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
11725A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
11726A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
11727A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
11728A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
11729A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
11730A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
11731A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
11732A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
11733A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
11734A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
11735A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
11736A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
11737A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
11738A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
11739A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
11740A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
11741A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
11742A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
11743A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
11744A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
11745A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
11746A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
11747A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
11748A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
11749A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
11750A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
11751A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
11752A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
11753A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
11754A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
11755A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
11756A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
11757A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
11758A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
11759A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
11760A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
11761A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
11762A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
11763A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
11764A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
11765A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
11766A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
11767A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
11768A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
11769A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
11770A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
11771A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
11772A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
11773A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
11774A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
11775A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
11776A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
11777A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
11778A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
11779A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
11780A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
11781A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
11782A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
11783A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
11784A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
11785A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
11786A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
11787A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
11788A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
11789A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
11790A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
11791A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
11792A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
11793A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
11794A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
11795A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
11796A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
11797A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
11798A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
11799A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
11800A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
11801A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
11802A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
11803A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
11804A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
11805A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
11806A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
11807A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
11808A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
11809A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
11810A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
11811A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
11812A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
11813A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
11814A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
11815A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
11816A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
11817A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
11818A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
11819A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
11820A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
11821A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
11822A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
11823A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
11824A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
11825A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
11826A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
11827A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
11828A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
11829A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
11830A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
11831A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
11832A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
11833A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
11834A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
11835A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
11836A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
11837A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
11838A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
11839A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
11840A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
11841A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
11842A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
11843A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
11844A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
11845A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
11846A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
11847A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
11848A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
11849A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
11850A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
11851A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
11852A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
11853A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
11854A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
11855A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
11856A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
11857A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
11858A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
11859A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
11860A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
11861A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
11862A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
11863A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
11864A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
11865A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
11866A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
11867A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
11868A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
11869A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
11870A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
11871A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
11872A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
11873A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
11874A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
11875A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
11876A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
11877A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
11878A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
11879A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
11880A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
11881A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
11882A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
11883A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
11884A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
11885A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
11886A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
11887A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
11888A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
11889A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
11890A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
11891A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
11892A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
11893A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
11894A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
11895A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
11896A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
11897A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
11898A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
11899A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
11900A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
11901A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
11902A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
11903A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
11904A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
11905A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
11906A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
11907A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
11908A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
11909A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
11910A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
11911A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
11912A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
11913A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
11914A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
11915A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
11916A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
11917A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
11918A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
11919A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
11920A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
11921A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
11922A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
11923A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
11924A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
11925A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
11926A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
11927A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
11928A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
11929A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
11930A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
11931A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
11932A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
11933A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
11934A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
11935A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
11936A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
11937A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
11938A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
11939A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
11940A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
11941A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
11942A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
11943A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
11944A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
11945A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
11946A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
11947A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
11948A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
11949A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
11950A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
11951A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
11952A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
11953A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
11954A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
11955A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
11956A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
11957A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
11958A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
11959A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
11960A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
11961A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
11962A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
11963A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
11964A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
11965A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
11966A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
11967A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
11968A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
11969A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
11970A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
11971A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
11972A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
11973A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
11974A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
11975A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
11976A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
11977A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
11978A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
11979A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
11980A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
11981A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
11982A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
11983A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
11984A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
11985A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
11986A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
11987A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
11988A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
11989A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
11990A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
11991A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
11992A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
11993A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
11994A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
11995A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
11996A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
11997A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
11998A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
11999A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
12000A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
12001A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
12002A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
12003A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
12004A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
12005A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
12006A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
12007A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
12008A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
12009A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
12010A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
12011A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
12012A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
12013A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
12014A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
12015A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
12016A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
12017A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
12018A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
12019A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
12020A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
12021A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
12022A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
12023A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
12024A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
12025A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
12026A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
12027A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
12028A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
12029A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
12030A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
12031A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
12032A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
12033A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
12034A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
12035A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
12036A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
12037A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
12038A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
12039A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
12040A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
12041A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
12042A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
12043A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
12044A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
12045A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
12046A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
12047A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
12048A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
12049A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
12050A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
12051A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
12052A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
12053A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
12054A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
12055A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
12056A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
12057A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
12058A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
12059A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
12060A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
12061A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
12062A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
12063A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
12064A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
12065A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
12066A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
12067A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
12068A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
12069A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
12070A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
12071A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
12072A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
12073A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
12074A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
12075A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
12076A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
12077A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
12078A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
12079A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
12080A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
12081A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
12082A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
12083A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
12084A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
12085A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
12086A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
12087A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
12088A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
12089A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
12090A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
12091A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
12092A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
12093A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
12094A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
12095A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
12096A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
12097A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
12098A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
12099A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
12100A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
12101A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
12102A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
12103A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
12104A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
12105A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
12106A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
12107A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
12108A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
12109A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
12110A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
12111A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
12112A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
12113A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
12114A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
12115A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
12116A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
12117A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
12118A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
12119A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
12120A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
12121A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
12122A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
12123A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
12124A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
12125A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
12126A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
12127A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
12128A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
12129A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
12130A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
12131A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
12132A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
12133A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
12134A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
12135A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
12136A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
12137A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
12138A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
12139A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
12140A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
12141A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
12142A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
12143A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
12144A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
12145A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
12146A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
12147A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
12148A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
12149A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
12150A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
12151A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
12152A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
12153A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
12154A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
12155A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
12156A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
12157A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
12158A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
12159A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
12160A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
12161A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
12162A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
12163A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
12164A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
12165A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
12166A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
12167A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
12168A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
12169A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
12170A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
12171A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
12172A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
12173A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
12174A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
12175A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
12176A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
12177A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
12178A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
12179A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
12180A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
12181A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
12182A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
12183A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
12184A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
12185A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
12186A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
12187A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
12188A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
12189A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
12190A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
12191A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
12192A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
12193A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
12194A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
12195A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
12196A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
12197A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
12198A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
12199A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
12200A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
12201A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
12202A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
12203A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
12204A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
12205A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
12206A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
12207A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
12208A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
12209A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
12210A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
12211A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
12212A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
12213A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
12214A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
12215A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
12216A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
12217A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
12218A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
12219A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
12220A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
12221A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
12222A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
12223A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
12224A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
12225A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
12226A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
12227A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
12228A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
12229A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
12230A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
12231A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
12232A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
12233A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
12234A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
12235A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
12236A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
12237A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
12238A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
12239A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
12240A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
12241A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
12242A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
12243A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
12244A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
12245A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
12246A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
12247A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
12248A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
12249A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
12250A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
12251A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
12252A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
12253A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
12254A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
12255A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
12256A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
12257A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
12258A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
12259A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
12260A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
12261A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
12262A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
12263A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
12264A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
12265A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
12266A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
12267A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
12268A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
12269A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
12270A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
12271A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
12272A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
12273A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
12274A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
12275A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
12276A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
12277A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
12278A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
12279A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
12280A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
12281A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
12282A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
12283A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
12284A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
12285A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
12286A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
12287A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
12288A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
12289A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
12290A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
12291A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
12292A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
12293A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
12294A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
12295A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
12296A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
12297A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
12298A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
12299A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
12300A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
12301A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
12302A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
12303A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
12304A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
12305A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
12306A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
12307A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
12308A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
12309A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
12310A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
12311A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
12312A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
12313A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
12314A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
12315A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
12316A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
12317A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
12318A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
12319A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
12320A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
12321A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
12322A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
12323A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
12324A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
12325A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
12326A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
12327A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
12328A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
12329A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
12330A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
12331A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
12332A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
12333A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
12334A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
12335A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
12336A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
12337A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
12338A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
12339A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
12340A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
12341A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
12342A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
12343A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
12344A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
12345A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
12346A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
12347A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
12348A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
12349A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
12350A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
12351A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
12352A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
12353A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
12354A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
12355A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
12356A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
12357A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
12358A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
12359A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
12360A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
12361A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
12362A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
12363A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
12364A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
12365A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
12366A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
12367A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
12368A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
12369A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
12370A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
12371A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
12372A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
12373A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
12374A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
12375A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
12376A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
12377A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
12378A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
12379A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
12380A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
12381A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
12382A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
12383A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
12384A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
12385A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
12386A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
12387A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
12388A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
12389A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
12390A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
12391A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
12392A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
12393A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
12394A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
12395A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
12396A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
12397A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
12398A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
12399A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
12400A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
12401A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
12402A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
12403A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
12404A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
12405A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
12406A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
12407A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
12408A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
12409A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
12410A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
12411A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
12412A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
12413A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
12414A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
12415A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
12416A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
12417A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
12418A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
12419A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
12420A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
12421A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
12422A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
12423A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
12424A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
12425A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
12426A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
12427A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
12428A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
12429A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
12430A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
12431A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
12432A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
12433A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
12434A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
12435A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
12436A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
12437A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
12438A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
12439A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
12440A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
12441A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
12442A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
12443A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
12444A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
12445A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
12446A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
12447A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
12448A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
12449A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
12450A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
12451A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
12452A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
12453A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
12454A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
12455A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
12456A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
12457A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
12458A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
12459A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
12460A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
12461A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
12462A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
12463A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
12464A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
12465A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
12466A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
12467A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
12468A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
12469A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
12470A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
12471A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
12472A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
12473A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
12474A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
12475A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
12476A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
12477A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
12478A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
12479A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
12480A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
12481A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
12482A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
12483A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
12484A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
12485A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
12486A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
12487A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
12488A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
12489A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
12490A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
12491A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
12492A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
12493A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
12494A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
12495A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
12496A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
12497A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
12498A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
12499A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
12500A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
12501A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
12502A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
12503A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
12504A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
12505A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
12506A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
12507A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
12508A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
12509A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
12510A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
12511A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
12512A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
12513A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
12514A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
12515A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
12516A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
12517A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
12518A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
12519A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
12520A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
12521A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
12522A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
12523A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
12524A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
12525A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
12526A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
12527A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
12528A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
12529A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
12530A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
12531A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
12532A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
12533A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
12534A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
12535A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
12536A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
12537A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
12538A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
12539A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
12540A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
12541A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
12542A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
12543A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
12544A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
12545A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
12546A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
12547A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
12548A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
12549A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
12550A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
12551A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
12552A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
12553A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
12554A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
12555A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
12556A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
12557A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
12558A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
12559A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
12560A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
12561A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
12562A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
12563A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
12564A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
12565A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
12566A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
12567A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
12568A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
12569A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
12570A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
12571A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
12572A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
12573A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
12574A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
12575A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
12576A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
12577A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
12578A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
12579A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
12580A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
12581A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
12582A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
12583A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
12584A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
12585A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
12586A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
12587A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
12588A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
12589A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
12590A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
12591A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
12592A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
12593A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
12594A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
12595A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
12596A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
12597A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
12598A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
12599A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
12600A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
12601A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
12602A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
12603A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
12604A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
12605A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
12606A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
12607A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
12608A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
12609A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
12610A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
12611A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
12612A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
12613A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
12614A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
12615A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
12616A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
12617A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
12618A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
12619A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
12620A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
12621A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
12622A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
12623A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
12624A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
12625A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
12626A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
12627A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
12628A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
12629A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
12630A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
12631A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
12632A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
12633A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
12634A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
12635A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
12636A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
12637A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
12638A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
12639A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
12640A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
12641A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
12642A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
12643A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
12644A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
12645A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
12646A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
12647A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
12648A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
12649A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
12650A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
12651A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
12652A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
12653A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
12654A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
12655A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
12656A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
12657A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
12658A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;;
12659A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;;
12660A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
12661A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
12662A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
12663A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
12664A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
12665A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
12666A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
12667A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
12668A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
12669A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
12670A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
12671A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
12672A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
12673A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
12674A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
12675A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
12676A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;;
12677A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
12678A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
12679A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
12680A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
12681A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
12682A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
12683A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
12684A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
12685A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
12686A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
12687A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
12688A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
12689A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;;
12690A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
12691A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
12692A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
12693A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;;
12694A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
12695A4D0;LISU LETTER BA;Lo;0;L;;;;;N;;;;;
12696A4D1;LISU LETTER PA;Lo;0;L;;;;;N;;;;;
12697A4D2;LISU LETTER PHA;Lo;0;L;;;;;N;;;;;
12698A4D3;LISU LETTER DA;Lo;0;L;;;;;N;;;;;
12699A4D4;LISU LETTER TA;Lo;0;L;;;;;N;;;;;
12700A4D5;LISU LETTER THA;Lo;0;L;;;;;N;;;;;
12701A4D6;LISU LETTER GA;Lo;0;L;;;;;N;;;;;
12702A4D7;LISU LETTER KA;Lo;0;L;;;;;N;;;;;
12703A4D8;LISU LETTER KHA;Lo;0;L;;;;;N;;;;;
12704A4D9;LISU LETTER JA;Lo;0;L;;;;;N;;;;;
12705A4DA;LISU LETTER CA;Lo;0;L;;;;;N;;;;;
12706A4DB;LISU LETTER CHA;Lo;0;L;;;;;N;;;;;
12707A4DC;LISU LETTER DZA;Lo;0;L;;;;;N;;;;;
12708A4DD;LISU LETTER TSA;Lo;0;L;;;;;N;;;;;
12709A4DE;LISU LETTER TSHA;Lo;0;L;;;;;N;;;;;
12710A4DF;LISU LETTER MA;Lo;0;L;;;;;N;;;;;
12711A4E0;LISU LETTER NA;Lo;0;L;;;;;N;;;;;
12712A4E1;LISU LETTER LA;Lo;0;L;;;;;N;;;;;
12713A4E2;LISU LETTER SA;Lo;0;L;;;;;N;;;;;
12714A4E3;LISU LETTER ZHA;Lo;0;L;;;;;N;;;;;
12715A4E4;LISU LETTER ZA;Lo;0;L;;;;;N;;;;;
12716A4E5;LISU LETTER NGA;Lo;0;L;;;;;N;;;;;
12717A4E6;LISU LETTER HA;Lo;0;L;;;;;N;;;;;
12718A4E7;LISU LETTER XA;Lo;0;L;;;;;N;;;;;
12719A4E8;LISU LETTER HHA;Lo;0;L;;;;;N;;;;;
12720A4E9;LISU LETTER FA;Lo;0;L;;;;;N;;;;;
12721A4EA;LISU LETTER WA;Lo;0;L;;;;;N;;;;;
12722A4EB;LISU LETTER SHA;Lo;0;L;;;;;N;;;;;
12723A4EC;LISU LETTER YA;Lo;0;L;;;;;N;;;;;
12724A4ED;LISU LETTER GHA;Lo;0;L;;;;;N;;;;;
12725A4EE;LISU LETTER A;Lo;0;L;;;;;N;;;;;
12726A4EF;LISU LETTER AE;Lo;0;L;;;;;N;;;;;
12727A4F0;LISU LETTER E;Lo;0;L;;;;;N;;;;;
12728A4F1;LISU LETTER EU;Lo;0;L;;;;;N;;;;;
12729A4F2;LISU LETTER I;Lo;0;L;;;;;N;;;;;
12730A4F3;LISU LETTER O;Lo;0;L;;;;;N;;;;;
12731A4F4;LISU LETTER U;Lo;0;L;;;;;N;;;;;
12732A4F5;LISU LETTER UE;Lo;0;L;;;;;N;;;;;
12733A4F6;LISU LETTER UH;Lo;0;L;;;;;N;;;;;
12734A4F7;LISU LETTER OE;Lo;0;L;;;;;N;;;;;
12735A4F8;LISU LETTER TONE MYA TI;Lm;0;L;;;;;N;;;;;
12736A4F9;LISU LETTER TONE NA PO;Lm;0;L;;;;;N;;;;;
12737A4FA;LISU LETTER TONE MYA CYA;Lm;0;L;;;;;N;;;;;
12738A4FB;LISU LETTER TONE MYA BO;Lm;0;L;;;;;N;;;;;
12739A4FC;LISU LETTER TONE MYA NA;Lm;0;L;;;;;N;;;;;
12740A4FD;LISU LETTER TONE MYA JEU;Lm;0;L;;;;;N;;;;;
12741A4FE;LISU PUNCTUATION COMMA;Po;0;L;;;;;N;;;;;
12742A4FF;LISU PUNCTUATION FULL STOP;Po;0;L;;;;;N;;;;;
12743A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;;
12744A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;;
12745A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
12746A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
12747A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;;
12748A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
12749A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;;
12750A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
12751A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;;
12752A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;;
12753A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;;
12754A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;;
12755A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
12756A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
12757A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
12758A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
12759A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;;
12760A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;;
12761A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
12762A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;;
12763A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
12764A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;;
12765A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
12766A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
12767A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
12768A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
12769A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
12770A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
12771A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;;
12772A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
12773A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
12774A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;;
12775A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
12776A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
12777A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
12778A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
12779A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;;
12780A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;;
12781A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;;
12782A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;;
12783A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;;
12784A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;;
12785A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
12786A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;;
12787A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
12788A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;;
12789A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;;
12790A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;;
12791A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;;
12792A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
12793A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
12794A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
12795A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;;
12796A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;;
12797A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;;
12798A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
12799A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;;
12800A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
12801A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
12802A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
12803A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
12804A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
12805A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
12806A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
12807A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
12808A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
12809A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
12810A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
12811A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;;
12812A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
12813A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
12814A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
12815A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
12816A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;;
12817A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;;
12818A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;;
12819A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
12820A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;;
12821A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
12822A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;;
12823A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
12824A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;;
12825A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
12826A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;;
12827A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;;
12828A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;;
12829A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;;
12830A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;;
12831A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
12832A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
12833A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
12834A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;;
12835A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;;
12836A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;;
12837A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
12838A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
12839A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
12840A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
12841A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
12842A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
12843A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
12844A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
12845A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
12846A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;;
12847A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;;
12848A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;;
12849A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
12850A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;;
12851A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;;
12852A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
12853A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
12854A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
12855A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
12856A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;;
12857A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;;
12858A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;;
12859A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;;
12860A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;;
12861A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;;
12862A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;;
12863A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;;
12864A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;;
12865A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;;
12866A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;;
12867A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;;
12868A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;;
12869A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;;
12870A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;;
12871A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;;
12872A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;;
12873A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;;
12874A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;;
12875A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;;
12876A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;;
12877A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;;
12878A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;;
12879A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;;
12880A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;;
12881A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;;
12882A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;;
12883A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;;
12884A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;;
12885A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;;
12886A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;;
12887A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;;
12888A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;;
12889A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;;
12890A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;;
12891A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;;
12892A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;;
12893A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;;
12894A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;;
12895A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;;
12896A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
12897A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;;
12898A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
12899A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;;
12900A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
12901A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;;
12902A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;;
12903A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;;
12904A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;;
12905A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
12906A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
12907A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
12908A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;;
12909A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;;
12910A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;;
12911A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
12912A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
12913A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
12914A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
12915A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
12916A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
12917A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
12918A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
12919A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
12920A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
12921A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
12922A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
12923A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
12924A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;;
12925A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
12926A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
12927A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
12928A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
12929A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;;
12930A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;;
12931A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;;
12932A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
12933A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;;
12934A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
12935A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;;
12936A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
12937A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;;
12938A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
12939A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;;
12940A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;;
12941A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;;
12942A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;;
12943A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;;
12944A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
12945A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
12946A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
12947A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;;
12948A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;;
12949A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;;
12950A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
12951A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
12952A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
12953A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
12954A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
12955A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
12956A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
12957A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
12958A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
12959A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
12960A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
12961A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
12962A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
12963A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;;
12964A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
12965A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
12966A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
12967A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
12968A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;;
12969A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;;
12970A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;;
12971A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
12972A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;;
12973A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
12974A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;;
12975A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;;
12976A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;;
12977A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
12978A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;;
12979A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;;
12980A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;;
12981A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;;
12982A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;;
12983A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;;
12984A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;;
12985A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;;
12986A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
12987A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;;
12988A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;;
12989A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;;
12990A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
12991A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
12992A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
12993A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
12994A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
12995A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
12996A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
12997A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
12998A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
12999A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;;
13000A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;;
13001A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;;
13002A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
13003A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;;
13004A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;;
13005A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
13006A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;;
13007A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
13008A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
13009A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
13010A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;;
13011A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;;
13012A60D;VAI COMMA;Po;0;ON;;;;;N;;;;;
13013A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;;
13014A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;;
13015A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;;
13016A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;;
13017A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;;
13018A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;;
13019A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;;
13020A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;;
13021A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;;
13022A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;;
13023A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;;
13024A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;;
13025A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;;
13026A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;;
13027A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;;
13028A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;;
13029A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;;
13030A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;;
13031A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
13032A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
13033A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
13034A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
13035A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
13036A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
13037A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
13038A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
13039A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
13040A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
13041A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;;
13042A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;;
13043A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641;
13044A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640
13045A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643;
13046A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642
13047A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645;
13048A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644
13049A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647;
13050A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646
13051A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649;
13052A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648
13053A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B;
13054A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A
13055A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D;
13056A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C
13057A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F;
13058A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E
13059A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651;
13060A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650
13061A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653;
13062A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652
13063A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655;
13064A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654
13065A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657;
13066A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656
13067A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659;
13068A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658
13069A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B;
13070A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A
13071A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D;
13072A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C
13073A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F;
13074A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E
13075A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663;
13076A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662
13077A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665;
13078A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664
13079A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667;
13080A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666
13081A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669;
13082A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668
13083A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B;
13084A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A
13085A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D;
13086A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C
13087A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;;
13088A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;;
13089A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
13090A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
13091A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
13092A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;;
13093A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;;
13094A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;;
13095A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;;
13096A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;;
13097A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681;
13098A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680
13099A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683;
13100A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682
13101A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685;
13102A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684
13103A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687;
13104A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686
13105A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689;
13106A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688
13107A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B;
13108A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A
13109A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D;
13110A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C
13111A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F;
13112A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E
13113A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691;
13114A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690
13115A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693;
13116A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692
13117A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695;
13118A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694
13119A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697;
13120A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696
13121A6A0;BAMUM LETTER A;Lo;0;L;;;;;N;;;;;
13122A6A1;BAMUM LETTER KA;Lo;0;L;;;;;N;;;;;
13123A6A2;BAMUM LETTER U;Lo;0;L;;;;;N;;;;;
13124A6A3;BAMUM LETTER KU;Lo;0;L;;;;;N;;;;;
13125A6A4;BAMUM LETTER EE;Lo;0;L;;;;;N;;;;;
13126A6A5;BAMUM LETTER REE;Lo;0;L;;;;;N;;;;;
13127A6A6;BAMUM LETTER TAE;Lo;0;L;;;;;N;;;;;
13128A6A7;BAMUM LETTER O;Lo;0;L;;;;;N;;;;;
13129A6A8;BAMUM LETTER NYI;Lo;0;L;;;;;N;;;;;
13130A6A9;BAMUM LETTER I;Lo;0;L;;;;;N;;;;;
13131A6AA;BAMUM LETTER LA;Lo;0;L;;;;;N;;;;;
13132A6AB;BAMUM LETTER PA;Lo;0;L;;;;;N;;;;;
13133A6AC;BAMUM LETTER RII;Lo;0;L;;;;;N;;;;;
13134A6AD;BAMUM LETTER RIEE;Lo;0;L;;;;;N;;;;;
13135A6AE;BAMUM LETTER LEEEE;Lo;0;L;;;;;N;;;;;
13136A6AF;BAMUM LETTER MEEEE;Lo;0;L;;;;;N;;;;;
13137A6B0;BAMUM LETTER TAA;Lo;0;L;;;;;N;;;;;
13138A6B1;BAMUM LETTER NDAA;Lo;0;L;;;;;N;;;;;
13139A6B2;BAMUM LETTER NJAEM;Lo;0;L;;;;;N;;;;;
13140A6B3;BAMUM LETTER M;Lo;0;L;;;;;N;;;;;
13141A6B4;BAMUM LETTER SUU;Lo;0;L;;;;;N;;;;;
13142A6B5;BAMUM LETTER MU;Lo;0;L;;;;;N;;;;;
13143A6B6;BAMUM LETTER SHII;Lo;0;L;;;;;N;;;;;
13144A6B7;BAMUM LETTER SI;Lo;0;L;;;;;N;;;;;
13145A6B8;BAMUM LETTER SHEUX;Lo;0;L;;;;;N;;;;;
13146A6B9;BAMUM LETTER SEUX;Lo;0;L;;;;;N;;;;;
13147A6BA;BAMUM LETTER KYEE;Lo;0;L;;;;;N;;;;;
13148A6BB;BAMUM LETTER KET;Lo;0;L;;;;;N;;;;;
13149A6BC;BAMUM LETTER NUAE;Lo;0;L;;;;;N;;;;;
13150A6BD;BAMUM LETTER NU;Lo;0;L;;;;;N;;;;;
13151A6BE;BAMUM LETTER NJUAE;Lo;0;L;;;;;N;;;;;
13152A6BF;BAMUM LETTER YOQ;Lo;0;L;;;;;N;;;;;
13153A6C0;BAMUM LETTER SHU;Lo;0;L;;;;;N;;;;;
13154A6C1;BAMUM LETTER YUQ;Lo;0;L;;;;;N;;;;;
13155A6C2;BAMUM LETTER YA;Lo;0;L;;;;;N;;;;;
13156A6C3;BAMUM LETTER NSHA;Lo;0;L;;;;;N;;;;;
13157A6C4;BAMUM LETTER KEUX;Lo;0;L;;;;;N;;;;;
13158A6C5;BAMUM LETTER PEUX;Lo;0;L;;;;;N;;;;;
13159A6C6;BAMUM LETTER NJEE;Lo;0;L;;;;;N;;;;;
13160A6C7;BAMUM LETTER NTEE;Lo;0;L;;;;;N;;;;;
13161A6C8;BAMUM LETTER PUE;Lo;0;L;;;;;N;;;;;
13162A6C9;BAMUM LETTER WUE;Lo;0;L;;;;;N;;;;;
13163A6CA;BAMUM LETTER PEE;Lo;0;L;;;;;N;;;;;
13164A6CB;BAMUM LETTER FEE;Lo;0;L;;;;;N;;;;;
13165A6CC;BAMUM LETTER RU;Lo;0;L;;;;;N;;;;;
13166A6CD;BAMUM LETTER LU;Lo;0;L;;;;;N;;;;;
13167A6CE;BAMUM LETTER MI;Lo;0;L;;;;;N;;;;;
13168A6CF;BAMUM LETTER NI;Lo;0;L;;;;;N;;;;;
13169A6D0;BAMUM LETTER REUX;Lo;0;L;;;;;N;;;;;
13170A6D1;BAMUM LETTER RAE;Lo;0;L;;;;;N;;;;;
13171A6D2;BAMUM LETTER KEN;Lo;0;L;;;;;N;;;;;
13172A6D3;BAMUM LETTER NGKWAEN;Lo;0;L;;;;;N;;;;;
13173A6D4;BAMUM LETTER NGGA;Lo;0;L;;;;;N;;;;;
13174A6D5;BAMUM LETTER NGA;Lo;0;L;;;;;N;;;;;
13175A6D6;BAMUM LETTER SHO;Lo;0;L;;;;;N;;;;;
13176A6D7;BAMUM LETTER PUAE;Lo;0;L;;;;;N;;;;;
13177A6D8;BAMUM LETTER FU;Lo;0;L;;;;;N;;;;;
13178A6D9;BAMUM LETTER FOM;Lo;0;L;;;;;N;;;;;
13179A6DA;BAMUM LETTER WA;Lo;0;L;;;;;N;;;;;
13180A6DB;BAMUM LETTER NA;Lo;0;L;;;;;N;;;;;
13181A6DC;BAMUM LETTER LI;Lo;0;L;;;;;N;;;;;
13182A6DD;BAMUM LETTER PI;Lo;0;L;;;;;N;;;;;
13183A6DE;BAMUM LETTER LOQ;Lo;0;L;;;;;N;;;;;
13184A6DF;BAMUM LETTER KO;Lo;0;L;;;;;N;;;;;
13185A6E0;BAMUM LETTER MBEN;Lo;0;L;;;;;N;;;;;
13186A6E1;BAMUM LETTER REN;Lo;0;L;;;;;N;;;;;
13187A6E2;BAMUM LETTER MEN;Lo;0;L;;;;;N;;;;;
13188A6E3;BAMUM LETTER MA;Lo;0;L;;;;;N;;;;;
13189A6E4;BAMUM LETTER TI;Lo;0;L;;;;;N;;;;;
13190A6E5;BAMUM LETTER KI;Lo;0;L;;;;;N;;;;;
13191A6E6;BAMUM LETTER MO;Nl;0;L;;;;1;N;;;;;
13192A6E7;BAMUM LETTER MBAA;Nl;0;L;;;;2;N;;;;;
13193A6E8;BAMUM LETTER TET;Nl;0;L;;;;3;N;;;;;
13194A6E9;BAMUM LETTER KPA;Nl;0;L;;;;4;N;;;;;
13195A6EA;BAMUM LETTER TEN;Nl;0;L;;;;5;N;;;;;
13196A6EB;BAMUM LETTER NTUU;Nl;0;L;;;;6;N;;;;;
13197A6EC;BAMUM LETTER SAMBA;Nl;0;L;;;;7;N;;;;;
13198A6ED;BAMUM LETTER FAAMAE;Nl;0;L;;;;8;N;;;;;
13199A6EE;BAMUM LETTER KOVUU;Nl;0;L;;;;9;N;;;;;
13200A6EF;BAMUM LETTER KOGHOM;Nl;0;L;;;;0;N;;;;;
13201A6F0;BAMUM COMBINING MARK KOQNDON;Mn;230;NSM;;;;;N;;;;;
13202A6F1;BAMUM COMBINING MARK TUKWENTIS;Mn;230;NSM;;;;;N;;;;;
13203A6F2;BAMUM NJAEMLI;Po;0;L;;;;;N;;;;;
13204A6F3;BAMUM FULL STOP;Po;0;L;;;;;N;;;;;
13205A6F4;BAMUM COLON;Po;0;L;;;;;N;;;;;
13206A6F5;BAMUM COMMA;Po;0;L;;;;;N;;;;;
13207A6F6;BAMUM SEMICOLON;Po;0;L;;;;;N;;;;;
13208A6F7;BAMUM QUESTION MARK;Po;0;L;;;;;N;;;;;
13209A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;;
13210A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;;
13211A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;;
13212A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;;
13213A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;;
13214A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;;
13215A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;;
13216A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;;
13217A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
13218A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
13219A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
13220A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
13221A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
13222A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
13223A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
13224A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
13225A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
13226A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
13227A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
13228A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
13229A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
13230A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
13231A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
13232A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;;
13233A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;;
13234A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;;
13235A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;;
13236A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;;
13237A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;;
13238A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
13239A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
13240A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
13241A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;;
13242A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;;
13243A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723;
13244A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722
13245A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725;
13246A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724
13247A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727;
13248A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726
13249A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729;
13250A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728
13251A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B;
13252A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A
13253A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D;
13254A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C
13255A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F;
13256A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E
13257A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;;
13258A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;;
13259A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733;
13260A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732
13261A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735;
13262A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734
13263A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737;
13264A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736
13265A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739;
13266A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738
13267A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B;
13268A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A
13269A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D;
13270A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C
13271A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F;
13272A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E
13273A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741;
13274A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740
13275A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743;
13276A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742
13277A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745;
13278A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744
13279A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747;
13280A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746
13281A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749;
13282A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748
13283A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B;
13284A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A
13285A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D;
13286A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C
13287A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F;
13288A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E
13289A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751;
13290A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750
13291A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753;
13292A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752
13293A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755;
13294A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754
13295A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757;
13296A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756
13297A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759;
13298A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758
13299A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B;
13300A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A
13301A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D;
13302A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C
13303A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F;
13304A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E
13305A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761;
13306A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760
13307A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763;
13308A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762
13309A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765;
13310A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764
13311A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767;
13312A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766
13313A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769;
13314A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768
13315A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B;
13316A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A
13317A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D;
13318A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C
13319A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F;
13320A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E
13321A770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;;
13322A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;;
13323A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;;
13324A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;;
13325A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;;
13326A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;;
13327A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;;
13328A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;;
13329A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;;
13330A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A;
13331A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779
13332A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C;
13333A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B
13334A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79;
13335A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F;
13336A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E
13337A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781;
13338A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780
13339A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783;
13340A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782
13341A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785;
13342A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784
13343A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787;
13344A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786
13345A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;;
13346A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;;
13347A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;;
13348A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C;
13349A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B
13350A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;;
13351A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;;
13352A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;;
13353A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;;
13354A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;;
13355A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;;
13356A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;;
13357A802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;;
13358A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;;
13359A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;;
13360A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;;
13361A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;;
13362A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;;
13363A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;;
13364A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;;
13365A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;;
13366A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
13367A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;;
13368A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;;
13369A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;;
13370A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;;
13371A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;;
13372A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;;
13373A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;;
13374A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;;
13375A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;;
13376A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;;
13377A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;;
13378A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;;
13379A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;;
13380A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;;
13381A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;;
13382A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;;
13383A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;;
13384A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;;
13385A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;;
13386A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;;
13387A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;;
13388A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;;
13389A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;;
13390A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
13391A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
13392A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
13393A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
13394A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
13395A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;;
13396A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;;
13397A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;;
13398A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;;
13399A830;NORTH INDIC FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
13400A831;NORTH INDIC FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;
13401A832;NORTH INDIC FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
13402A833;NORTH INDIC FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;;
13403A834;NORTH INDIC FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;;
13404A835;NORTH INDIC FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;;
13405A836;NORTH INDIC QUARTER MARK;So;0;L;;;;;N;;;;;
13406A837;NORTH INDIC PLACEHOLDER MARK;So;0;L;;;;;N;;;;;
13407A838;NORTH INDIC RUPEE MARK;Sc;0;ET;;;;;N;;;;;
13408A839;NORTH INDIC QUANTITY MARK;So;0;ET;;;;;N;;;;;
13409A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;;
13410A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;;
13411A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;;
13412A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;;
13413A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;;
13414A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;;
13415A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;;
13416A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;;
13417A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;;
13418A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;;
13419A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;;
13420A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;;
13421A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;;
13422A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;;
13423A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;;
13424A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;;
13425A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;;
13426A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;;
13427A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;;
13428A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;;
13429A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;;
13430A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;;
13431A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
13432A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;;
13433A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;;
13434A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;;
13435A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;;
13436A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;;
13437A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;;
13438A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;;
13439A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;;
13440A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;;
13441A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;;
13442A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;;
13443A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;;
13444A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;;
13445A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;;
13446A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;;
13447A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;;
13448A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;;
13449A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;;
13450A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;;
13451A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;;
13452A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;;
13453A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;;
13454A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;;
13455A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;;
13456A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;;
13457A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;;
13458A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;;
13459A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;;
13460A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;;
13461A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;;
13462A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;;
13463A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;;
13464A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;;
13465A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
13466A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
13467A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;;
13468A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;;
13469A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;;
13470A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;;
13471A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;;
13472A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;;
13473A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
13474A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
13475A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
13476A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
13477A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;;
13478A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;;
13479A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;;
13480A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;;
13481A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;;
13482A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;;
13483A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;;
13484A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;;
13485A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;;
13486A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;;
13487A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;;
13488A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;;
13489A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;;
13490A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;;
13491A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;;
13492A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;;
13493A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;;
13494A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;;
13495A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;;
13496A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;;
13497A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;;
13498A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;;
13499A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;;
13500A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;;
13501A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;;
13502A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;;
13503A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;;
13504A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;;
13505A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;;
13506A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;;
13507A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;;
13508A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;;
13509A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;;
13510A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;;
13511A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;;
13512A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;;
13513A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;;
13514A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;;
13515A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;;
13516A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;;
13517A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;;
13518A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
13519A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
13520A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
13521A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
13522A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
13523A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
13524A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
13525A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;;
13526A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;;
13527A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
13528A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
13529A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
13530A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
13531A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
13532A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
13533A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
13534A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;;
13535A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
13536A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
13537A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
13538A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
13539A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
13540A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
13541A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
13542A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
13543A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
13544A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
13545A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
13546A8E0;COMBINING DEVANAGARI DIGIT ZERO;Mn;230;NSM;;;;;N;;;;;
13547A8E1;COMBINING DEVANAGARI DIGIT ONE;Mn;230;NSM;;;;;N;;;;;
13548A8E2;COMBINING DEVANAGARI DIGIT TWO;Mn;230;NSM;;;;;N;;;;;
13549A8E3;COMBINING DEVANAGARI DIGIT THREE;Mn;230;NSM;;;;;N;;;;;
13550A8E4;COMBINING DEVANAGARI DIGIT FOUR;Mn;230;NSM;;;;;N;;;;;
13551A8E5;COMBINING DEVANAGARI DIGIT FIVE;Mn;230;NSM;;;;;N;;;;;
13552A8E6;COMBINING DEVANAGARI DIGIT SIX;Mn;230;NSM;;;;;N;;;;;
13553A8E7;COMBINING DEVANAGARI DIGIT SEVEN;Mn;230;NSM;;;;;N;;;;;
13554A8E8;COMBINING DEVANAGARI DIGIT EIGHT;Mn;230;NSM;;;;;N;;;;;
13555A8E9;COMBINING DEVANAGARI DIGIT NINE;Mn;230;NSM;;;;;N;;;;;
13556A8EA;COMBINING DEVANAGARI LETTER A;Mn;230;NSM;;;;;N;;;;;
13557A8EB;COMBINING DEVANAGARI LETTER U;Mn;230;NSM;;;;;N;;;;;
13558A8EC;COMBINING DEVANAGARI LETTER KA;Mn;230;NSM;;;;;N;;;;;
13559A8ED;COMBINING DEVANAGARI LETTER NA;Mn;230;NSM;;;;;N;;;;;
13560A8EE;COMBINING DEVANAGARI LETTER PA;Mn;230;NSM;;;;;N;;;;;
13561A8EF;COMBINING DEVANAGARI LETTER RA;Mn;230;NSM;;;;;N;;;;;
13562A8F0;COMBINING DEVANAGARI LETTER VI;Mn;230;NSM;;;;;N;;;;;
13563A8F1;COMBINING DEVANAGARI SIGN AVAGRAHA;Mn;230;NSM;;;;;N;;;;;
13564A8F2;DEVANAGARI SIGN SPACING CANDRABINDU;Lo;0;L;;;;;N;;;;;
13565A8F3;DEVANAGARI SIGN CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;;
13566A8F4;DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;;
13567A8F5;DEVANAGARI SIGN CANDRABINDU TWO;Lo;0;L;;;;;N;;;;;
13568A8F6;DEVANAGARI SIGN CANDRABINDU THREE;Lo;0;L;;;;;N;;;;;
13569A8F7;DEVANAGARI SIGN CANDRABINDU AVAGRAHA;Lo;0;L;;;;;N;;;;;
13570A8F8;DEVANAGARI SIGN PUSHPIKA;Po;0;L;;;;;N;;;;;
13571A8F9;DEVANAGARI GAP FILLER;Po;0;L;;;;;N;;;;;
13572A8FA;DEVANAGARI CARET;Po;0;L;;;;;N;;;;;
13573A8FB;DEVANAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;;
13574A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
13575A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
13576A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
13577A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
13578A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
13579A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
13580A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
13581A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
13582A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
13583A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
13584A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;;
13585A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;;
13586A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;;
13587A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;;
13588A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;;
13589A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;;
13590A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;;
13591A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;;
13592A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;;
13593A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;;
13594A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;;
13595A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;;
13596A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;;
13597A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;;
13598A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;;
13599A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;;
13600A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;;
13601A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;;
13602A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;;
13603A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;;
13604A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;;
13605A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;;
13606A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;;
13607A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;;
13608A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;;
13609A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;;
13610A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;;
13611A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;;
13612A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;;
13613A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;;
13614A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;;
13615A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;;
13616A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;;
13617A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;;
13618A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;;
13619A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;;
13620A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;;
13621A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;;
13622A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;;
13623A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;;
13624A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;;
13625A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;;
13626A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;;
13627A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;;
13628A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;;
13629A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;;
13630A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;;
13631A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;;
13632A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;;
13633A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;;
13634A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;;
13635A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;;
13636A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;;
13637A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;;
13638A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;;
13639A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;;
13640A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;;
13641A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;;
13642A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;;
13643A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;;
13644A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;;
13645A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
13646A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
13647A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
13648A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
13649A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
13650A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
13651A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;;
13652A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;;
13653A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;;
13654A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
13655A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
13656A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;;
13657A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;;
13658A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;;
13659A960;HANGUL CHOSEONG TIKEUT-MIEUM;Lo;0;L;;;;;N;;;;;
13660A961;HANGUL CHOSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;
13661A962;HANGUL CHOSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;;
13662A963;HANGUL CHOSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;;
13663A964;HANGUL CHOSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;;
13664A965;HANGUL CHOSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
13665A966;HANGUL CHOSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
13666A967;HANGUL CHOSEONG RIEUL-SSANGTIKEUT;Lo;0;L;;;;;N;;;;;
13667A968;HANGUL CHOSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;;
13668A969;HANGUL CHOSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;;
13669A96A;HANGUL CHOSEONG RIEUL-SSANGPIEUP;Lo;0;L;;;;;N;;;;;
13670A96B;HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
13671A96C;HANGUL CHOSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;;
13672A96D;HANGUL CHOSEONG RIEUL-CIEUC;Lo;0;L;;;;;N;;;;;
13673A96E;HANGUL CHOSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
13674A96F;HANGUL CHOSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
13675A970;HANGUL CHOSEONG MIEUM-TIKEUT;Lo;0;L;;;;;N;;;;;
13676A971;HANGUL CHOSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
13677A972;HANGUL CHOSEONG PIEUP-SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
13678A973;HANGUL CHOSEONG PIEUP-KHIEUKH;Lo;0;L;;;;;N;;;;;
13679A974;HANGUL CHOSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
13680A975;HANGUL CHOSEONG SSANGSIOS-PIEUP;Lo;0;L;;;;;N;;;;;
13681A976;HANGUL CHOSEONG IEUNG-RIEUL;Lo;0;L;;;;;N;;;;;
13682A977;HANGUL CHOSEONG IEUNG-HIEUH;Lo;0;L;;;;;N;;;;;
13683A978;HANGUL CHOSEONG SSANGCIEUC-HIEUH;Lo;0;L;;;;;N;;;;;
13684A979;HANGUL CHOSEONG SSANGTHIEUTH;Lo;0;L;;;;;N;;;;;
13685A97A;HANGUL CHOSEONG PHIEUPH-HIEUH;Lo;0;L;;;;;N;;;;;
13686A97B;HANGUL CHOSEONG HIEUH-SIOS;Lo;0;L;;;;;N;;;;;
13687A97C;HANGUL CHOSEONG SSANGYEORINHIEUH;Lo;0;L;;;;;N;;;;;
13688A980;JAVANESE SIGN PANYANGGA;Mn;0;NSM;;;;;N;;;;;
13689A981;JAVANESE SIGN CECAK;Mn;0;NSM;;;;;N;;;;;
13690A982;JAVANESE SIGN LAYAR;Mn;0;NSM;;;;;N;;;;;
13691A983;JAVANESE SIGN WIGNYAN;Mc;0;L;;;;;N;;;;;
13692A984;JAVANESE LETTER A;Lo;0;L;;;;;N;;;;;
13693A985;JAVANESE LETTER I KAWI;Lo;0;L;;;;;N;;;;;
13694A986;JAVANESE LETTER I;Lo;0;L;;;;;N;;;;;
13695A987;JAVANESE LETTER II;Lo;0;L;;;;;N;;;;;
13696A988;JAVANESE LETTER U;Lo;0;L;;;;;N;;;;;
13697A989;JAVANESE LETTER PA CEREK;Lo;0;L;;;;;N;;;;;
13698A98A;JAVANESE LETTER NGA LELET;Lo;0;L;;;;;N;;;;;
13699A98B;JAVANESE LETTER NGA LELET RASWADI;Lo;0;L;;;;;N;;;;;
13700A98C;JAVANESE LETTER E;Lo;0;L;;;;;N;;;;;
13701A98D;JAVANESE LETTER AI;Lo;0;L;;;;;N;;;;;
13702A98E;JAVANESE LETTER O;Lo;0;L;;;;;N;;;;;
13703A98F;JAVANESE LETTER KA;Lo;0;L;;;;;N;;;;;
13704A990;JAVANESE LETTER KA SASAK;Lo;0;L;;;;;N;;;;;
13705A991;JAVANESE LETTER KA MURDA;Lo;0;L;;;;;N;;;;;
13706A992;JAVANESE LETTER GA;Lo;0;L;;;;;N;;;;;
13707A993;JAVANESE LETTER GA MURDA;Lo;0;L;;;;;N;;;;;
13708A994;JAVANESE LETTER NGA;Lo;0;L;;;;;N;;;;;
13709A995;JAVANESE LETTER CA;Lo;0;L;;;;;N;;;;;
13710A996;JAVANESE LETTER CA MURDA;Lo;0;L;;;;;N;;;;;
13711A997;JAVANESE LETTER JA;Lo;0;L;;;;;N;;;;;
13712A998;JAVANESE LETTER NYA MURDA;Lo;0;L;;;;;N;;;;;
13713A999;JAVANESE LETTER JA MAHAPRANA;Lo;0;L;;;;;N;;;;;
13714A99A;JAVANESE LETTER NYA;Lo;0;L;;;;;N;;;;;
13715A99B;JAVANESE LETTER TTA;Lo;0;L;;;;;N;;;;;
13716A99C;JAVANESE LETTER TTA MAHAPRANA;Lo;0;L;;;;;N;;;;;
13717A99D;JAVANESE LETTER DDA;Lo;0;L;;;;;N;;;;;
13718A99E;JAVANESE LETTER DDA MAHAPRANA;Lo;0;L;;;;;N;;;;;
13719A99F;JAVANESE LETTER NA MURDA;Lo;0;L;;;;;N;;;;;
13720A9A0;JAVANESE LETTER TA;Lo;0;L;;;;;N;;;;;
13721A9A1;JAVANESE LETTER TA MURDA;Lo;0;L;;;;;N;;;;;
13722A9A2;JAVANESE LETTER DA;Lo;0;L;;;;;N;;;;;
13723A9A3;JAVANESE LETTER DA MAHAPRANA;Lo;0;L;;;;;N;;;;;
13724A9A4;JAVANESE LETTER NA;Lo;0;L;;;;;N;;;;;
13725A9A5;JAVANESE LETTER PA;Lo;0;L;;;;;N;;;;;
13726A9A6;JAVANESE LETTER PA MURDA;Lo;0;L;;;;;N;;;;;
13727A9A7;JAVANESE LETTER BA;Lo;0;L;;;;;N;;;;;
13728A9A8;JAVANESE LETTER BA MURDA;Lo;0;L;;;;;N;;;;;
13729A9A9;JAVANESE LETTER MA;Lo;0;L;;;;;N;;;;;
13730A9AA;JAVANESE LETTER YA;Lo;0;L;;;;;N;;;;;
13731A9AB;JAVANESE LETTER RA;Lo;0;L;;;;;N;;;;;
13732A9AC;JAVANESE LETTER RA AGUNG;Lo;0;L;;;;;N;;;;;
13733A9AD;JAVANESE LETTER LA;Lo;0;L;;;;;N;;;;;
13734A9AE;JAVANESE LETTER WA;Lo;0;L;;;;;N;;;;;
13735A9AF;JAVANESE LETTER SA MURDA;Lo;0;L;;;;;N;;;;;
13736A9B0;JAVANESE LETTER SA MAHAPRANA;Lo;0;L;;;;;N;;;;;
13737A9B1;JAVANESE LETTER SA;Lo;0;L;;;;;N;;;;;
13738A9B2;JAVANESE LETTER HA;Lo;0;L;;;;;N;;;;;
13739A9B3;JAVANESE SIGN CECAK TELU;Mn;7;NSM;;;;;N;;;;;
13740A9B4;JAVANESE VOWEL SIGN TARUNG;Mc;0;L;;;;;N;;;;;
13741A9B5;JAVANESE VOWEL SIGN TOLONG;Mc;0;L;;;;;N;;;;;
13742A9B6;JAVANESE VOWEL SIGN WULU;Mn;0;NSM;;;;;N;;;;;
13743A9B7;JAVANESE VOWEL SIGN WULU MELIK;Mn;0;NSM;;;;;N;;;;;
13744A9B8;JAVANESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;;
13745A9B9;JAVANESE VOWEL SIGN SUKU MENDUT;Mn;0;NSM;;;;;N;;;;;
13746A9BA;JAVANESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;;
13747A9BB;JAVANESE VOWEL SIGN DIRGA MURE;Mc;0;L;;;;;N;;;;;
13748A9BC;JAVANESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;;
13749A9BD;JAVANESE CONSONANT SIGN KERET;Mc;0;L;;;;;N;;;;;
13750A9BE;JAVANESE CONSONANT SIGN PENGKAL;Mc;0;L;;;;;N;;;;;
13751A9BF;JAVANESE CONSONANT SIGN CAKRA;Mc;0;L;;;;;N;;;;;
13752A9C0;JAVANESE PANGKON;Mc;9;L;;;;;N;;;;;
13753A9C1;JAVANESE LEFT RERENGGAN;Po;0;L;;;;;N;;;;;
13754A9C2;JAVANESE RIGHT RERENGGAN;Po;0;L;;;;;N;;;;;
13755A9C3;JAVANESE PADA ANDAP;Po;0;L;;;;;N;;;;;
13756A9C4;JAVANESE PADA MADYA;Po;0;L;;;;;N;;;;;
13757A9C5;JAVANESE PADA LUHUR;Po;0;L;;;;;N;;;;;
13758A9C6;JAVANESE PADA WINDU;Po;0;L;;;;;N;;;;;
13759A9C7;JAVANESE PADA PANGKAT;Po;0;L;;;;;N;;;;;
13760A9C8;JAVANESE PADA LINGSA;Po;0;L;;;;;N;;;;;
13761A9C9;JAVANESE PADA LUNGSI;Po;0;L;;;;;N;;;;;
13762A9CA;JAVANESE PADA ADEG;Po;0;L;;;;;N;;;;;
13763A9CB;JAVANESE PADA ADEG ADEG;Po;0;L;;;;;N;;;;;
13764A9CC;JAVANESE PADA PISELEH;Po;0;L;;;;;N;;;;;
13765A9CD;JAVANESE TURNED PADA PISELEH;Po;0;L;;;;;N;;;;;
13766A9CF;JAVANESE PANGRANGKEP;Lm;0;L;;;;;N;;;;;
13767A9D0;JAVANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
13768A9D1;JAVANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
13769A9D2;JAVANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
13770A9D3;JAVANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
13771A9D4;JAVANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
13772A9D5;JAVANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
13773A9D6;JAVANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
13774A9D7;JAVANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
13775A9D8;JAVANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
13776A9D9;JAVANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
13777A9DE;JAVANESE PADA TIRTA TUMETES;Po;0;L;;;;;N;;;;;
13778A9DF;JAVANESE PADA ISEN-ISEN;Po;0;L;;;;;N;;;;;
13779AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;;
13780AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;;
13781AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;;
13782AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;;
13783AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;;
13784AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;;
13785AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;;
13786AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;;
13787AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;;
13788AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;;
13789AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;;
13790AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;;
13791AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;;
13792AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;;
13793AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;;
13794AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;;
13795AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;;
13796AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;;
13797AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;;
13798AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;;
13799AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;;
13800AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;;
13801AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;;
13802AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;;
13803AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;;
13804AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;;
13805AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;;
13806AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;;
13807AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;;
13808AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;;
13809AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;;
13810AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;;
13811AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;;
13812AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;;
13813AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;;
13814AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;;
13815AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;;
13816AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;;
13817AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;;
13818AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;;
13819AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;;
13820AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
13821AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
13822AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
13823AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;;
13824AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
13825AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;
13826AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
13827AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
13828AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
13829AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;
13830AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;;
13831AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;;
13832AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;;
13833AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;;
13834AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;;
13835AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;;
13836AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
13837AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;;
13838AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;;
13839AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;;
13840AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;;
13841AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;;
13842AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;;
13843AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;;
13844AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;;
13845AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;;
13846AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;;
13847AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;;
13848AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
13849AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
13850AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
13851AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
13852AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
13853AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
13854AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
13855AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
13856AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
13857AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
13858AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;;
13859AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;;
13860AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;;
13861AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;N;;;;;
13862AA60;MYANMAR LETTER KHAMTI GA;Lo;0;L;;;;;N;;;;;
13863AA61;MYANMAR LETTER KHAMTI CA;Lo;0;L;;;;;N;;;;;
13864AA62;MYANMAR LETTER KHAMTI CHA;Lo;0;L;;;;;N;;;;;
13865AA63;MYANMAR LETTER KHAMTI JA;Lo;0;L;;;;;N;;;;;
13866AA64;MYANMAR LETTER KHAMTI JHA;Lo;0;L;;;;;N;;;;;
13867AA65;MYANMAR LETTER KHAMTI NYA;Lo;0;L;;;;;N;;;;;
13868AA66;MYANMAR LETTER KHAMTI TTA;Lo;0;L;;;;;N;;;;;
13869AA67;MYANMAR LETTER KHAMTI TTHA;Lo;0;L;;;;;N;;;;;
13870AA68;MYANMAR LETTER KHAMTI DDA;Lo;0;L;;;;;N;;;;;
13871AA69;MYANMAR LETTER KHAMTI DDHA;Lo;0;L;;;;;N;;;;;
13872AA6A;MYANMAR LETTER KHAMTI DHA;Lo;0;L;;;;;N;;;;;
13873AA6B;MYANMAR LETTER KHAMTI NA;Lo;0;L;;;;;N;;;;;
13874AA6C;MYANMAR LETTER KHAMTI SA;Lo;0;L;;;;;N;;;;;
13875AA6D;MYANMAR LETTER KHAMTI HA;Lo;0;L;;;;;N;;;;;
13876AA6E;MYANMAR LETTER KHAMTI HHA;Lo;0;L;;;;;N;;;;;
13877AA6F;MYANMAR LETTER KHAMTI FA;Lo;0;L;;;;;N;;;;;
13878AA70;MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION;Lm;0;L;;;;;N;;;;;
13879AA71;MYANMAR LETTER KHAMTI XA;Lo;0;L;;;;;N;;;;;
13880AA72;MYANMAR LETTER KHAMTI ZA;Lo;0;L;;;;;N;;;;;
13881AA73;MYANMAR LETTER KHAMTI RA;Lo;0;L;;;;;N;;;;;
13882AA74;MYANMAR LOGOGRAM KHAMTI OAY;Lo;0;L;;;;;N;;;;;
13883AA75;MYANMAR LOGOGRAM KHAMTI QN;Lo;0;L;;;;;N;;;;;
13884AA76;MYANMAR LOGOGRAM KHAMTI HM;Lo;0;L;;;;;N;;;;;
13885AA77;MYANMAR SYMBOL AITON EXCLAMATION;So;0;L;;;;;N;;;;;
13886AA78;MYANMAR SYMBOL AITON ONE;So;0;L;;;;;N;;;;;
13887AA79;MYANMAR SYMBOL AITON TWO;So;0;L;;;;;N;;;;;
13888AA7A;MYANMAR LETTER AITON RA;Lo;0;L;;;;;N;;;;;
13889AA7B;MYANMAR SIGN PAO KAREN TONE;Mc;0;L;;;;;N;;;;;
13890AA80;TAI VIET LETTER LOW KO;Lo;0;L;;;;;N;;;;;
13891AA81;TAI VIET LETTER HIGH KO;Lo;0;L;;;;;N;;;;;
13892AA82;TAI VIET LETTER LOW KHO;Lo;0;L;;;;;N;;;;;
13893AA83;TAI VIET LETTER HIGH KHO;Lo;0;L;;;;;N;;;;;
13894AA84;TAI VIET LETTER LOW KHHO;Lo;0;L;;;;;N;;;;;
13895AA85;TAI VIET LETTER HIGH KHHO;Lo;0;L;;;;;N;;;;;
13896AA86;TAI VIET LETTER LOW GO;Lo;0;L;;;;;N;;;;;
13897AA87;TAI VIET LETTER HIGH GO;Lo;0;L;;;;;N;;;;;
13898AA88;TAI VIET LETTER LOW NGO;Lo;0;L;;;;;N;;;;;
13899AA89;TAI VIET LETTER HIGH NGO;Lo;0;L;;;;;N;;;;;
13900AA8A;TAI VIET LETTER LOW CO;Lo;0;L;;;;;N;;;;;
13901AA8B;TAI VIET LETTER HIGH CO;Lo;0;L;;;;;N;;;;;
13902AA8C;TAI VIET LETTER LOW CHO;Lo;0;L;;;;;N;;;;;
13903AA8D;TAI VIET LETTER HIGH CHO;Lo;0;L;;;;;N;;;;;
13904AA8E;TAI VIET LETTER LOW SO;Lo;0;L;;;;;N;;;;;
13905AA8F;TAI VIET LETTER HIGH SO;Lo;0;L;;;;;N;;;;;
13906AA90;TAI VIET LETTER LOW NYO;Lo;0;L;;;;;N;;;;;
13907AA91;TAI VIET LETTER HIGH NYO;Lo;0;L;;;;;N;;;;;
13908AA92;TAI VIET LETTER LOW DO;Lo;0;L;;;;;N;;;;;
13909AA93;TAI VIET LETTER HIGH DO;Lo;0;L;;;;;N;;;;;
13910AA94;TAI VIET LETTER LOW TO;Lo;0;L;;;;;N;;;;;
13911AA95;TAI VIET LETTER HIGH TO;Lo;0;L;;;;;N;;;;;
13912AA96;TAI VIET LETTER LOW THO;Lo;0;L;;;;;N;;;;;
13913AA97;TAI VIET LETTER HIGH THO;Lo;0;L;;;;;N;;;;;
13914AA98;TAI VIET LETTER LOW NO;Lo;0;L;;;;;N;;;;;
13915AA99;TAI VIET LETTER HIGH NO;Lo;0;L;;;;;N;;;;;
13916AA9A;TAI VIET LETTER LOW BO;Lo;0;L;;;;;N;;;;;
13917AA9B;TAI VIET LETTER HIGH BO;Lo;0;L;;;;;N;;;;;
13918AA9C;TAI VIET LETTER LOW PO;Lo;0;L;;;;;N;;;;;
13919AA9D;TAI VIET LETTER HIGH PO;Lo;0;L;;;;;N;;;;;
13920AA9E;TAI VIET LETTER LOW PHO;Lo;0;L;;;;;N;;;;;
13921AA9F;TAI VIET LETTER HIGH PHO;Lo;0;L;;;;;N;;;;;
13922AAA0;TAI VIET LETTER LOW FO;Lo;0;L;;;;;N;;;;;
13923AAA1;TAI VIET LETTER HIGH FO;Lo;0;L;;;;;N;;;;;
13924AAA2;TAI VIET LETTER LOW MO;Lo;0;L;;;;;N;;;;;
13925AAA3;TAI VIET LETTER HIGH MO;Lo;0;L;;;;;N;;;;;
13926AAA4;TAI VIET LETTER LOW YO;Lo;0;L;;;;;N;;;;;
13927AAA5;TAI VIET LETTER HIGH YO;Lo;0;L;;;;;N;;;;;
13928AAA6;TAI VIET LETTER LOW RO;Lo;0;L;;;;;N;;;;;
13929AAA7;TAI VIET LETTER HIGH RO;Lo;0;L;;;;;N;;;;;
13930AAA8;TAI VIET LETTER LOW LO;Lo;0;L;;;;;N;;;;;
13931AAA9;TAI VIET LETTER HIGH LO;Lo;0;L;;;;;N;;;;;
13932AAAA;TAI VIET LETTER LOW VO;Lo;0;L;;;;;N;;;;;
13933AAAB;TAI VIET LETTER HIGH VO;Lo;0;L;;;;;N;;;;;
13934AAAC;TAI VIET LETTER LOW HO;Lo;0;L;;;;;N;;;;;
13935AAAD;TAI VIET LETTER HIGH HO;Lo;0;L;;;;;N;;;;;
13936AAAE;TAI VIET LETTER LOW O;Lo;0;L;;;;;N;;;;;
13937AAAF;TAI VIET LETTER HIGH O;Lo;0;L;;;;;N;;;;;
13938AAB0;TAI VIET MAI KANG;Mn;230;NSM;;;;;N;;;;;
13939AAB1;TAI VIET VOWEL AA;Lo;0;L;;;;;N;;;;;
13940AAB2;TAI VIET VOWEL I;Mn;230;NSM;;;;;N;;;;;
13941AAB3;TAI VIET VOWEL UE;Mn;230;NSM;;;;;N;;;;;
13942AAB4;TAI VIET VOWEL U;Mn;220;NSM;;;;;N;;;;;
13943AAB5;TAI VIET VOWEL E;Lo;0;L;;;;;N;;;;;
13944AAB6;TAI VIET VOWEL O;Lo;0;L;;;;;N;;;;;
13945AAB7;TAI VIET MAI KHIT;Mn;230;NSM;;;;;N;;;;;
13946AAB8;TAI VIET VOWEL IA;Mn;230;NSM;;;;;N;;;;;
13947AAB9;TAI VIET VOWEL UEA;Lo;0;L;;;;;N;;;;;
13948AABA;TAI VIET VOWEL UA;Lo;0;L;;;;;N;;;;;
13949AABB;TAI VIET VOWEL AUE;Lo;0;L;;;;;N;;;;;
13950AABC;TAI VIET VOWEL AY;Lo;0;L;;;;;N;;;;;
13951AABD;TAI VIET VOWEL AN;Lo;0;L;;;;;N;;;;;
13952AABE;TAI VIET VOWEL AM;Mn;230;NSM;;;;;N;;;;;
13953AABF;TAI VIET TONE MAI EK;Mn;230;NSM;;;;;N;;;;;
13954AAC0;TAI VIET TONE MAI NUENG;Lo;0;L;;;;;N;;;;;
13955AAC1;TAI VIET TONE MAI THO;Mn;230;NSM;;;;;N;;;;;
13956AAC2;TAI VIET TONE MAI SONG;Lo;0;L;;;;;N;;;;;
13957AADB;TAI VIET SYMBOL KON;Lo;0;L;;;;;N;;;;;
13958AADC;TAI VIET SYMBOL NUENG;Lo;0;L;;;;;N;;;;;
13959AADD;TAI VIET SYMBOL SAM;Lm;0;L;;;;;N;;;;;
13960AADE;TAI VIET SYMBOL HO HOI;Po;0;L;;;;;N;;;;;
13961AADF;TAI VIET SYMBOL KOI KOI;Po;0;L;;;;;N;;;;;
13962ABC0;MEETEI MAYEK LETTER KOK;Lo;0;L;;;;;N;;;;;
13963ABC1;MEETEI MAYEK LETTER SAM;Lo;0;L;;;;;N;;;;;
13964ABC2;MEETEI MAYEK LETTER LAI;Lo;0;L;;;;;N;;;;;
13965ABC3;MEETEI MAYEK LETTER MIT;Lo;0;L;;;;;N;;;;;
13966ABC4;MEETEI MAYEK LETTER PA;Lo;0;L;;;;;N;;;;;
13967ABC5;MEETEI MAYEK LETTER NA;Lo;0;L;;;;;N;;;;;
13968ABC6;MEETEI MAYEK LETTER CHIL;Lo;0;L;;;;;N;;;;;
13969ABC7;MEETEI MAYEK LETTER TIL;Lo;0;L;;;;;N;;;;;
13970ABC8;MEETEI MAYEK LETTER KHOU;Lo;0;L;;;;;N;;;;;
13971ABC9;MEETEI MAYEK LETTER NGOU;Lo;0;L;;;;;N;;;;;
13972ABCA;MEETEI MAYEK LETTER THOU;Lo;0;L;;;;;N;;;;;
13973ABCB;MEETEI MAYEK LETTER WAI;Lo;0;L;;;;;N;;;;;
13974ABCC;MEETEI MAYEK LETTER YANG;Lo;0;L;;;;;N;;;;;
13975ABCD;MEETEI MAYEK LETTER HUK;Lo;0;L;;;;;N;;;;;
13976ABCE;MEETEI MAYEK LETTER UN;Lo;0;L;;;;;N;;;;;
13977ABCF;MEETEI MAYEK LETTER I;Lo;0;L;;;;;N;;;;;
13978ABD0;MEETEI MAYEK LETTER PHAM;Lo;0;L;;;;;N;;;;;
13979ABD1;MEETEI MAYEK LETTER ATIYA;Lo;0;L;;;;;N;;;;;
13980ABD2;MEETEI MAYEK LETTER GOK;Lo;0;L;;;;;N;;;;;
13981ABD3;MEETEI MAYEK LETTER JHAM;Lo;0;L;;;;;N;;;;;
13982ABD4;MEETEI MAYEK LETTER RAI;Lo;0;L;;;;;N;;;;;
13983ABD5;MEETEI MAYEK LETTER BA;Lo;0;L;;;;;N;;;;;
13984ABD6;MEETEI MAYEK LETTER JIL;Lo;0;L;;;;;N;;;;;
13985ABD7;MEETEI MAYEK LETTER DIL;Lo;0;L;;;;;N;;;;;
13986ABD8;MEETEI MAYEK LETTER GHOU;Lo;0;L;;;;;N;;;;;
13987ABD9;MEETEI MAYEK LETTER DHOU;Lo;0;L;;;;;N;;;;;
13988ABDA;MEETEI MAYEK LETTER BHAM;Lo;0;L;;;;;N;;;;;
13989ABDB;MEETEI MAYEK LETTER KOK LONSUM;Lo;0;L;;;;;N;;;;;
13990ABDC;MEETEI MAYEK LETTER LAI LONSUM;Lo;0;L;;;;;N;;;;;
13991ABDD;MEETEI MAYEK LETTER MIT LONSUM;Lo;0;L;;;;;N;;;;;
13992ABDE;MEETEI MAYEK LETTER PA LONSUM;Lo;0;L;;;;;N;;;;;
13993ABDF;MEETEI MAYEK LETTER NA LONSUM;Lo;0;L;;;;;N;;;;;
13994ABE0;MEETEI MAYEK LETTER TIL LONSUM;Lo;0;L;;;;;N;;;;;
13995ABE1;MEETEI MAYEK LETTER NGOU LONSUM;Lo;0;L;;;;;N;;;;;
13996ABE2;MEETEI MAYEK LETTER I LONSUM;Lo;0;L;;;;;N;;;;;
13997ABE3;MEETEI MAYEK VOWEL SIGN ONAP;Mc;0;L;;;;;N;;;;;
13998ABE4;MEETEI MAYEK VOWEL SIGN INAP;Mc;0;L;;;;;N;;;;;
13999ABE5;MEETEI MAYEK VOWEL SIGN ANAP;Mn;0;NSM;;;;;N;;;;;
14000ABE6;MEETEI MAYEK VOWEL SIGN YENAP;Mc;0;L;;;;;N;;;;;
14001ABE7;MEETEI MAYEK VOWEL SIGN SOUNAP;Mc;0;L;;;;;N;;;;;
14002ABE8;MEETEI MAYEK VOWEL SIGN UNAP;Mn;0;NSM;;;;;N;;;;;
14003ABE9;MEETEI MAYEK VOWEL SIGN CHEINAP;Mc;0;L;;;;;N;;;;;
14004ABEA;MEETEI MAYEK VOWEL SIGN NUNG;Mc;0;L;;;;;N;;;;;
14005ABEB;MEETEI MAYEK CHEIKHEI;Po;0;L;;;;;N;;;;;
14006ABEC;MEETEI MAYEK LUM IYEK;Mc;0;L;;;;;N;;;;;
14007ABED;MEETEI MAYEK APUN IYEK;Mn;9;NSM;;;;;N;;;;;
14008ABF0;MEETEI MAYEK DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
14009ABF1;MEETEI MAYEK DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
14010ABF2;MEETEI MAYEK DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
14011ABF3;MEETEI MAYEK DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
14012ABF4;MEETEI MAYEK DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
14013ABF5;MEETEI MAYEK DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
14014ABF6;MEETEI MAYEK DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
14015ABF7;MEETEI MAYEK DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
14016ABF8;MEETEI MAYEK DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
14017ABF9;MEETEI MAYEK DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
14018AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
14019D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
14020D7B0;HANGUL JUNGSEONG O-YEO;Lo;0;L;;;;;N;;;;;
14021D7B1;HANGUL JUNGSEONG O-O-I;Lo;0;L;;;;;N;;;;;
14022D7B2;HANGUL JUNGSEONG YO-A;Lo;0;L;;;;;N;;;;;
14023D7B3;HANGUL JUNGSEONG YO-AE;Lo;0;L;;;;;N;;;;;
14024D7B4;HANGUL JUNGSEONG YO-EO;Lo;0;L;;;;;N;;;;;
14025D7B5;HANGUL JUNGSEONG U-YEO;Lo;0;L;;;;;N;;;;;
14026D7B6;HANGUL JUNGSEONG U-I-I;Lo;0;L;;;;;N;;;;;
14027D7B7;HANGUL JUNGSEONG YU-AE;Lo;0;L;;;;;N;;;;;
14028D7B8;HANGUL JUNGSEONG YU-O;Lo;0;L;;;;;N;;;;;
14029D7B9;HANGUL JUNGSEONG EU-A;Lo;0;L;;;;;N;;;;;
14030D7BA;HANGUL JUNGSEONG EU-EO;Lo;0;L;;;;;N;;;;;
14031D7BB;HANGUL JUNGSEONG EU-E;Lo;0;L;;;;;N;;;;;
14032D7BC;HANGUL JUNGSEONG EU-O;Lo;0;L;;;;;N;;;;;
14033D7BD;HANGUL JUNGSEONG I-YA-O;Lo;0;L;;;;;N;;;;;
14034D7BE;HANGUL JUNGSEONG I-YAE;Lo;0;L;;;;;N;;;;;
14035D7BF;HANGUL JUNGSEONG I-YEO;Lo;0;L;;;;;N;;;;;
14036D7C0;HANGUL JUNGSEONG I-YE;Lo;0;L;;;;;N;;;;;
14037D7C1;HANGUL JUNGSEONG I-O-I;Lo;0;L;;;;;N;;;;;
14038D7C2;HANGUL JUNGSEONG I-YO;Lo;0;L;;;;;N;;;;;
14039D7C3;HANGUL JUNGSEONG I-YU;Lo;0;L;;;;;N;;;;;
14040D7C4;HANGUL JUNGSEONG I-I;Lo;0;L;;;;;N;;;;;
14041D7C5;HANGUL JUNGSEONG ARAEA-A;Lo;0;L;;;;;N;;;;;
14042D7C6;HANGUL JUNGSEONG ARAEA-E;Lo;0;L;;;;;N;;;;;
14043D7CB;HANGUL JONGSEONG NIEUN-RIEUL;Lo;0;L;;;;;N;;;;;
14044D7CC;HANGUL JONGSEONG NIEUN-CHIEUCH;Lo;0;L;;;;;N;;;;;
14045D7CD;HANGUL JONGSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;;
14046D7CE;HANGUL JONGSEONG SSANGTIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;
14047D7CF;HANGUL JONGSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;
14048D7D0;HANGUL JONGSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;;
14049D7D1;HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
14050D7D2;HANGUL JONGSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;;
14051D7D3;HANGUL JONGSEONG TIKEUT-CHIEUCH;Lo;0;L;;;;;N;;;;;
14052D7D4;HANGUL JONGSEONG TIKEUT-THIEUTH;Lo;0;L;;;;;N;;;;;
14053D7D5;HANGUL JONGSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
14054D7D6;HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;;
14055D7D7;HANGUL JONGSEONG SSANGRIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
14056D7D8;HANGUL JONGSEONG RIEUL-MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
14057D7D9;HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
14058D7DA;HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
14059D7DB;HANGUL JONGSEONG RIEUL-YESIEUNG;Lo;0;L;;;;;N;;;;;
14060D7DC;HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH;Lo;0;L;;;;;N;;;;;
14061D7DD;HANGUL JONGSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
14062D7DE;HANGUL JONGSEONG MIEUM-NIEUN;Lo;0;L;;;;;N;;;;;
14063D7DF;HANGUL JONGSEONG MIEUM-SSANGNIEUN;Lo;0;L;;;;;N;;;;;
14064D7E0;HANGUL JONGSEONG SSANGMIEUM;Lo;0;L;;;;;N;;;;;
14065D7E1;HANGUL JONGSEONG MIEUM-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
14066D7E2;HANGUL JONGSEONG MIEUM-CIEUC;Lo;0;L;;;;;N;;;;;
14067D7E3;HANGUL JONGSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
14068D7E4;HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;;
14069D7E5;HANGUL JONGSEONG PIEUP-MIEUM;Lo;0;L;;;;;N;;;;;
14070D7E6;HANGUL JONGSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;;
14071D7E7;HANGUL JONGSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
14072D7E8;HANGUL JONGSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
14073D7E9;HANGUL JONGSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
14074D7EA;HANGUL JONGSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
14075D7EB;HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
14076D7EC;HANGUL JONGSEONG SSANGSIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
14077D7ED;HANGUL JONGSEONG SSANGSIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
14078D7EE;HANGUL JONGSEONG SIOS-PANSIOS;Lo;0;L;;;;;N;;;;;
14079D7EF;HANGUL JONGSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
14080D7F0;HANGUL JONGSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
14081D7F1;HANGUL JONGSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
14082D7F2;HANGUL JONGSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
14083D7F3;HANGUL JONGSEONG PANSIOS-PIEUP;Lo;0;L;;;;;N;;;;;
14084D7F4;HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
14085D7F5;HANGUL JONGSEONG YESIEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
14086D7F6;HANGUL JONGSEONG YESIEUNG-HIEUH;Lo;0;L;;;;;N;;;;;
14087D7F7;HANGUL JONGSEONG CIEUC-PIEUP;Lo;0;L;;;;;N;;;;;
14088D7F8;HANGUL JONGSEONG CIEUC-SSANGPIEUP;Lo;0;L;;;;;N;;;;;
14089D7F9;HANGUL JONGSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;;
14090D7FA;HANGUL JONGSEONG PHIEUPH-SIOS;Lo;0;L;;;;;N;;;;;
14091D7FB;HANGUL JONGSEONG PHIEUPH-THIEUTH;Lo;0;L;;;;;N;;;;;
14092D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
14093DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
14094DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
14095DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
14096DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
14097DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
14098E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
14099F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
14100F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
14101F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
14102F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
14103F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
14104F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
14105F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
14106F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
14107F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
14108F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
14109F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
14110F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
14111F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
14112F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
14113F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
14114F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
14115F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
14116F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
14117F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
14118F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
14119F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
14120F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
14121F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
14122F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
14123F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
14124F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
14125F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
14126F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
14127F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
14128F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
14129F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
14130F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
14131F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
14132F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
14133F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
14134F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
14135F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
14136F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
14137F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
14138F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
14139F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
14140F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
14141F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
14142F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
14143F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
14144F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
14145F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
14146F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
14147F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
14148F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
14149F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
14150F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
14151F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
14152F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
14153F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
14154F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
14155F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
14156F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
14157F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
14158F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
14159F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
14160F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
14161F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
14162F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
14163F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
14164F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
14165F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
14166F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
14167F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
14168F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
14169F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
14170F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
14171F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
14172F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
14173F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
14174F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
14175F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
14176F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
14177F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
14178F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
14179F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
14180F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
14181F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;;
14182F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
14183F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
14184F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
14185F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
14186F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
14187F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
14188F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
14189F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
14190F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
14191F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
14192F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
14193F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
14194F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
14195F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
14196F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
14197F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
14198F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
14199F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
14200F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
14201F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
14202F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
14203F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
14204F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
14205F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
14206F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
14207F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;3;N;;;;;
14208F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
14209F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
14210F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
14211F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
14212F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
14213F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
14214F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
14215F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;10;N;;;;;
14216F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
14217F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
14218F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
14219F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
14220F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;2;N;;;;;
14221F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
14222F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
14223F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
14224F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
14225F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
14226F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
14227F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
14228F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
14229F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
14230F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
14231F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
14232F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
14233F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
14234F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
14235F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
14236F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
14237F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
14238F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
14239F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
14240F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
14241F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
14242F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
14243F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
14244F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
14245F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
14246F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
14247F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
14248F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
14249F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
14250F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
14251F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
14252F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
14253F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
14254F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
14255F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
14256F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
14257F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
14258F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
14259F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
14260F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
14261F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
14262F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
14263F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
14264F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
14265F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
14266F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
14267F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
14268F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
14269F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
14270F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
14271F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
14272F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
14273F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
14274F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
14275F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
14276F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
14277F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
14278F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;0;N;;;;;
14279F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
14280F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
14281F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
14282F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
14283F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
14284F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
14285F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
14286F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
14287F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
14288F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
14289F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
14290F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
14291F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
14292F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
14293F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
14294F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
14295F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
14296F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
14297F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
14298F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
14299F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
14300F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
14301F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
14302F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
14303F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
14304F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
14305F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
14306F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
14307F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
14308F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
14309F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;6;N;;;;;
14310F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
14311F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;N;;;;;
14312F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
14313F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
14314F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
14315F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
14316F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
14317F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
14318F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
14319F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
14320F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
14321F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
14322F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
14323F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
14324F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
14325F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
14326F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
14327F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
14328F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
14329F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
14330F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
14331F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
14332F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
14333F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
14334F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
14335F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
14336F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
14337F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
14338F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
14339F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
14340F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
14341F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
14342F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
14343F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
14344F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
14345F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
14346F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
14347F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
14348F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
14349F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
14350F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
14351F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
14352F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
14353F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;10;N;;;;;
14354F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
14355F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
14356FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
14357FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
14358FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
14359FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
14360FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
14361FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
14362FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
14363FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
14364FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
14365FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
14366FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
14367FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
14368FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
14369FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
14370FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
14371FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
14372FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
14373FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
14374FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
14375FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
14376FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
14377FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
14378FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
14379FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
14380FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
14381FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
14382FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
14383FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
14384FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
14385FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
14386FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
14387FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;;;;
14388FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
14389FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
14390FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
14391FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;;;;
14392FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
14393FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
14394FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
14395FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
14396FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
14397FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
14398FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
14399FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
14400FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
14401FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
14402FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;;
14403FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;;
14404FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;;
14405FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;;
14406FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;;
14407FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;;
14408FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;;
14409FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;;
14410FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;;
14411FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;;
14412FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;;
14413FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;;
14414FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;;
14415FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;;
14416FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;;
14417FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;;
14418FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;;
14419FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;;
14420FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;;
14421FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;;
14422FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;;
14423FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;;
14424FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;;
14425FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;;
14426FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;;
14427FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;;
14428FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;;
14429FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;;
14430FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;;
14431FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;;
14432FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;;
14433FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;;
14434FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;;
14435FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;;
14436FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;;
14437FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;;
14438FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;;
14439FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;;
14440FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;;
14441FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;;
14442FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;;
14443FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;;
14444FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;;
14445FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;;
14446FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;;
14447FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;;
14448FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;;
14449FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;;
14450FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;;
14451FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;;
14452FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;;
14453FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;;
14454FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;;
14455FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;;
14456FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;;
14457FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;;
14458FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;;
14459FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;;
14460FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;;
14461FA6B;CJK COMPATIBILITY IDEOGRAPH-FA6B;Lo;0;L;6075;;;;N;;;;;
14462FA6C;CJK COMPATIBILITY IDEOGRAPH-FA6C;Lo;0;L;242EE;;;;N;;;;;
14463FA6D;CJK COMPATIBILITY IDEOGRAPH-FA6D;Lo;0;L;8218;;;;N;;;;;
14464FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;;
14465FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;;
14466FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;;
14467FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;;
14468FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;;
14469FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;;
14470FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;;
14471FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;;
14472FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;;
14473FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;;
14474FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;;
14475FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;;
14476FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;;
14477FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;;
14478FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;;
14479FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;;
14480FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;;
14481FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;;
14482FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;;
14483FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;;
14484FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;;
14485FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;;
14486FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;;
14487FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;;
14488FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;;
14489FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;;
14490FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;;
14491FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;;
14492FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;;
14493FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;;
14494FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;;
14495FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;;
14496FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;;
14497FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;;
14498FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;;
14499FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;;
14500FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;;
14501FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;;
14502FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;;
14503FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;;
14504FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;;
14505FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;;
14506FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;;
14507FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;;
14508FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;;
14509FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;;
14510FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;;
14511FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;;
14512FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;;
14513FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;;
14514FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;;
14515FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;;
14516FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;;
14517FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;;
14518FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;;
14519FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;;
14520FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;;
14521FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;;
14522FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;;
14523FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;;
14524FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;;
14525FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;;
14526FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;;
14527FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;;
14528FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;;
14529FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;;
14530FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;;
14531FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;;
14532FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;;
14533FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;;
14534FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;;
14535FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;;
14536FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;;
14537FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;;
14538FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;;
14539FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;;
14540FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;;
14541FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;;
14542FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;;
14543FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;;
14544FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;;
14545FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;;
14546FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;;
14547FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;;
14548FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;;
14549FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;;
14550FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;;
14551FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;;
14552FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;;
14553FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;;
14554FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;;
14555FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;;
14556FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;;
14557FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;;
14558FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;;
14559FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;;
14560FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;;
14561FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;;
14562FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;;
14563FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;;
14564FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;;
14565FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;;
14566FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;;
14567FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;;
14568FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;;
14569FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;;
14570FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
14571FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
14572FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
14573FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
14574FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
14575FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
14576FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
14577FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
14578FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
14579FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
14580FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
14581FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
14582FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
14583FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
14584FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
14585FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
14586FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
14587FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
14588FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
14589FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
14590FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
14591FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
14592FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
14593FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
14594FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES;<font> 002B;;;;N;;;;;
14595FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
14596FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
14597FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
14598FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
14599FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
14600FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
14601FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
14602FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
14603FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
14604FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
14605FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
14606FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
14607FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
14608FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
14609FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
14610FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
14611FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
14612FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
14613FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
14614FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
14615FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
14616FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
14617FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
14618FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
14619FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
14620FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
14621FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
14622FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
14623FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
14624FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
14625FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
14626FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
14627FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
14628FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
14629FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
14630FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
14631FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
14632FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
14633FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
14634FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
14635FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
14636FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
14637FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
14638FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
14639FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
14640FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
14641FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
14642FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
14643FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
14644FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
14645FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
14646FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
14647FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
14648FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
14649FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
14650FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
14651FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
14652FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
14653FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
14654FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
14655FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
14656FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
14657FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
14658FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
14659FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
14660FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
14661FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
14662FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
14663FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
14664FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
14665FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
14666FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
14667FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
14668FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
14669FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
14670FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
14671FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
14672FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
14673FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
14674FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
14675FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
14676FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
14677FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
14678FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
14679FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
14680FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
14681FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
14682FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
14683FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
14684FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
14685FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
14686FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
14687FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
14688FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
14689FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
14690FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
14691FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
14692FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
14693FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
14694FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
14695FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
14696FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
14697FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
14698FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
14699FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
14700FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
14701FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
14702FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
14703FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
14704FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
14705FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
14706FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
14707FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
14708FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
14709FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
14710FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
14711FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
14712FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
14713FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
14714FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
14715FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
14716FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
14717FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
14718FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
14719FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
14720FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
14721FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
14722FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
14723FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
14724FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
14725FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
14726FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
14727FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
14728FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
14729FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
14730FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
14731FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
14732FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
14733FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
14734FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
14735FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
14736FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
14737FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
14738FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
14739FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
14740FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
14741FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
14742FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
14743FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
14744FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
14745FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
14746FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
14747FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
14748FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
14749FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
14750FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
14751FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
14752FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
14753FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
14754FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
14755FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
14756FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
14757FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
14758FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
14759FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
14760FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
14761FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
14762FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
14763FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
14764FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
14765FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
14766FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
14767FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
14768FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
14769FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
14770FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
14771FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
14772FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
14773FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
14774FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
14775FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
14776FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
14777FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
14778FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
14779FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
14780FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
14781FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
14782FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
14783FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
14784FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
14785FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
14786FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
14787FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
14788FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
14789FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
14790FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
14791FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
14792FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
14793FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
14794FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
14795FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
14796FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
14797FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
14798FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
14799FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
14800FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
14801FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
14802FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
14803FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
14804FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
14805FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
14806FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
14807FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
14808FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
14809FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
14810FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
14811FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
14812FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
14813FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
14814FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
14815FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
14816FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
14817FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
14818FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
14819FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
14820FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
14821FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
14822FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
14823FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
14824FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
14825FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
14826FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
14827FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
14828FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
14829FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
14830FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
14831FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
14832FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
14833FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
14834FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
14835FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
14836FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
14837FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
14838FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
14839FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
14840FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
14841FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
14842FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
14843FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
14844FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
14845FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
14846FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
14847FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
14848FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
14849FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
14850FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
14851FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
14852FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
14853FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
14854FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
14855FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
14856FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
14857FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
14858FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
14859FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
14860FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
14861FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
14862FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
14863FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
14864FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
14865FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
14866FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
14867FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
14868FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
14869FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
14870FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
14871FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
14872FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
14873FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
14874FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
14875FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
14876FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
14877FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
14878FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
14879FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
14880FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
14881FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
14882FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
14883FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
14884FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
14885FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
14886FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
14887FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
14888FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
14889FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
14890FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
14891FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
14892FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
14893FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
14894FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
14895FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
14896FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
14897FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
14898FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
14899FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
14900FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
14901FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
14902FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
14903FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
14904FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
14905FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
14906FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
14907FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
14908FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
14909FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
14910FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
14911FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
14912FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
14913FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
14914FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
14915FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
14916FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
14917FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
14918FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
14919FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
14920FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
14921FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
14922FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
14923FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
14924FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
14925FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
14926FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
14927FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
14928FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
14929FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
14930FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
14931FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
14932FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
14933FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
14934FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
14935FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
14936FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
14937FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
14938FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
14939FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
14940FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
14941FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
14942FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
14943FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
14944FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
14945FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
14946FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
14947FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
14948FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
14949FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
14950FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
14951FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
14952FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
14953FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
14954FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
14955FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
14956FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
14957FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
14958FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
14959FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
14960FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
14961FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
14962FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
14963FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
14964FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
14965FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
14966FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
14967FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
14968FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
14969FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
14970FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
14971FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
14972FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
14973FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
14974FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
14975FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
14976FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
14977FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
14978FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
14979FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
14980FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
14981FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
14982FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
14983FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
14984FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
14985FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
14986FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
14987FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
14988FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
14989FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
14990FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
14991FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
14992FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
14993FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
14994FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
14995FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
14996FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
14997FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
14998FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
14999FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
15000FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
15001FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
15002FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
15003FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
15004FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
15005FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
15006FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
15007FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
15008FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
15009FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
15010FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
15011FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
15012FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
15013FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
15014FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
15015FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
15016FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
15017FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
15018FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
15019FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
15020FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
15021FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
15022FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
15023FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
15024FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
15025FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
15026FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
15027FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
15028FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
15029FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
15030FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
15031FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
15032FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
15033FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
15034FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
15035FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
15036FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
15037FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
15038FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
15039FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
15040FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
15041FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
15042FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
15043FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
15044FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
15045FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
15046FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
15047FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
15048FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
15049FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
15050FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
15051FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
15052FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
15053FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
15054FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
15055FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
15056FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
15057FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
15058FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
15059FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
15060FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
15061FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
15062FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
15063FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
15064FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
15065FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
15066FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
15067FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
15068FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
15069FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
15070FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
15071FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
15072FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
15073FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
15074FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
15075FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
15076FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
15077FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
15078FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
15079FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
15080FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
15081FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
15082FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
15083FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
15084FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
15085FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
15086FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
15087FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
15088FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
15089FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
15090FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
15091FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
15092FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
15093FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
15094FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
15095FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
15096FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
15097FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
15098FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
15099FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
15100FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
15101FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
15102FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
15103FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
15104FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
15105FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
15106FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
15107FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
15108FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
15109FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
15110FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
15111FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
15112FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
15113FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
15114FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
15115FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
15116FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
15117FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
15118FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
15119FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
15120FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
15121FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
15122FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
15123FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
15124FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
15125FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
15126FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
15127FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
15128FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
15129FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
15130FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
15131FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
15132FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
15133FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
15134FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
15135FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
15136FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
15137FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
15138FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
15139FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
15140FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
15141FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
15142FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
15143FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
15144FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
15145FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
15146FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
15147FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
15148FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
15149FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
15150FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
15151FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
15152FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
15153FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
15154FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
15155FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
15156FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
15157FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
15158FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
15159FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
15160FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
15161FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
15162FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
15163FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
15164FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
15165FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
15166FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
15167FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
15168FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
15169FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
15170FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
15171FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
15172FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
15173FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
15174FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
15175FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
15176FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
15177FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
15178FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
15179FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
15180FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
15181FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
15182FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
15183FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
15184FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
15185FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
15186FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
15187FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
15188FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
15189FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
15190FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
15191FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
15192FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
15193FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
15194FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
15195FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
15196FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
15197FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
15198FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
15199FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
15200FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
15201FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
15202FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
15203FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
15204FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
15205FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
15206FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
15207FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
15208FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
15209FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
15210FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
15211FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
15212FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
15213FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
15214FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
15215FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
15216FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
15217FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
15218FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
15219FDFA;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;;;;
15220FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
15221FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
15222FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;;
15223FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
15224FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
15225FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
15226FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;;
15227FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;;
15228FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;;
15229FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;;
15230FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;;
15231FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;;
15232FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;;
15233FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;;
15234FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;;
15235FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;;
15236FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;;
15237FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;;
15238FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;;
15239FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;;
15240FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;;
15241FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;;
15242FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;;
15243FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;;
15244FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;;
15245FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;;
15246FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;;
15247FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;;
15248FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;N;;;;;
15249FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
15250FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
15251FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
15252FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
15253FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;;
15254FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
15255FE26;COMBINING CONJOINING MACRON;Mn;230;NSM;;;;;N;;;;;
15256FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
15257FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
15258FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
15259FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
15260FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
15261FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
15262FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
15263FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
15264FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
15265FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
15266FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
15267FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
15268FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
15269FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
15270FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
15271FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
15272FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
15273FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
15274FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
15275FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
15276FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
15277FE45;SESAME DOT;Po;0;ON;;;;;N;;;;;
15278FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;;
15279FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;;
15280FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;;
15281FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
15282FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
15283FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
15284FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
15285FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
15286FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
15287FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
15288FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
15289FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
15290FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
15291FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
15292FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
15293FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
15294FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
15295FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
15296FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;Y;SMALL OPENING PARENTHESIS;;;;
15297FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;;
15298FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;;
15299FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;;
15300FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;;
15301FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
15302FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
15303FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
15304FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
15305FE62;SMALL PLUS SIGN;Sm;0;ES;<small> 002B;;;;N;;;;;
15306FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;;
15307FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;Y;;;;;
15308FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;Y;;;;;
15309FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
15310FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
15311FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
15312FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
15313FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
15314FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
15315FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
15316FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
15317FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;
15318FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
15319FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
15320FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
15321FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
15322FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
15323FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
15324FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
15325FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
15326FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
15327FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
15328FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
15329FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
15330FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
15331FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
15332FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
15333FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
15334FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
15335FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
15336FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
15337FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
15338FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
15339FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
15340FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
15341FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
15342FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
15343FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
15344FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
15345FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
15346FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
15347FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
15348FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
15349FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
15350FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
15351FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
15352FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
15353FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
15354FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
15355FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
15356FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
15357FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
15358FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
15359FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
15360FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
15361FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
15362FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
15363FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
15364FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
15365FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
15366FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
15367FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
15368FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
15369FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
15370FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
15371FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
15372FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
15373FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
15374FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
15375FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
15376FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
15377FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
15378FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
15379FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
15380FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
15381FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
15382FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
15383FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
15384FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
15385FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
15386FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
15387FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
15388FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
15389FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
15390FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
15391FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
15392FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
15393FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
15394FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
15395FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
15396FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
15397FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
15398FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
15399FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
15400FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
15401FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
15402FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
15403FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
15404FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
15405FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
15406FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
15407FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
15408FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
15409FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
15410FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
15411FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
15412FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
15413FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
15414FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
15415FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
15416FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
15417FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
15418FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
15419FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
15420FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
15421FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
15422FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
15423FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
15424FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
15425FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
15426FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
15427FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
15428FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
15429FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
15430FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
15431FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
15432FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
15433FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
15434FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
15435FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
15436FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
15437FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
15438FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
15439FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
15440FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
15441FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
15442FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
15443FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
15444FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
15445FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
15446FEF5;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;;;;
15447FEF6;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;;;;
15448FEF7;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;;;;
15449FEF8;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;;;;
15450FEF9;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;;;;
15451FEFA;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;;;;
15452FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
15453FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
15454FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
15455FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
15456FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
15457FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
15458FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
15459FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
15460FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
15461FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
15462FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;
15463FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;
15464FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
15465FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;;
15466FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
15467FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;;
15468FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
15469FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
15470FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
15471FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
15472FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
15473FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
15474FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
15475FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
15476FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
15477FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
15478FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
15479FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
15480FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
15481FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
15482FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;
15483FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
15484FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;
15485FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
15486FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
15487FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
15488FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
15489FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
15490FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
15491FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
15492FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
15493FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
15494FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
15495FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
15496FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
15497FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
15498FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
15499FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
15500FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
15501FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
15502FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
15503FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
15504FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
15505FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
15506FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
15507FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
15508FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
15509FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
15510FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
15511FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
15512FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
15513FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;
15514FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
15515FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;
15516FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
15517FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
15518FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
15519FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
15520FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
15521FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
15522FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
15523FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
15524FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
15525FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
15526FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
15527FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
15528FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
15529FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
15530FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
15531FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
15532FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
15533FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
15534FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
15535FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
15536FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
15537FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
15538FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
15539FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
15540FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
15541FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
15542FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
15543FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
15544FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
15545FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;
15546FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
15547FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;
15548FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
15549FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;;;;
15550FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;;;;
15551FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
15552FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;
15553FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;
15554FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
15555FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON;<narrow> 30FB;;;;N;;;;;
15556FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
15557FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
15558FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
15559FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
15560FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
15561FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
15562FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
15563FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
15564FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
15565FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
15566FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
15567FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
15568FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
15569FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
15570FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
15571FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
15572FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
15573FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
15574FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
15575FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
15576FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
15577FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
15578FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
15579FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
15580FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
15581FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
15582FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
15583FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
15584FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
15585FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
15586FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
15587FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
15588FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
15589FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
15590FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
15591FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
15592FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
15593FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
15594FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
15595FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
15596FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
15597FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
15598FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
15599FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
15600FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
15601FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
15602FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
15603FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
15604FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
15605FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
15606FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
15607FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
15608FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
15609FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
15610FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
15611FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
15612FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;;;;
15613FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;;;;
15614FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
15615FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
15616FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
15617FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
15618FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
15619FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
15620FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
15621FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
15622FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
15623FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
15624FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
15625FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
15626FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
15627FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
15628FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
15629FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
15630FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
15631FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
15632FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
15633FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
15634FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
15635FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
15636FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
15637FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
15638FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
15639FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
15640FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
15641FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
15642FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
15643FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
15644FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
15645FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
15646FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
15647FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
15648FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
15649FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
15650FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
15651FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
15652FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
15653FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
15654FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
15655FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
15656FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
15657FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
15658FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
15659FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
15660FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
15661FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
15662FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
15663FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
15664FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
15665FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
15666FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
15667FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
15668FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
15669FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;;;;
15670FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
15671FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
15672FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
15673FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
15674FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
15675FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
15676FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
15677FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
15678FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
15679FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
15680FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;;
15681FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;;
15682FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;;
15683FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
15684FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1568510000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;;
1568610001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;;
1568710002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;;
1568810003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;;
1568910004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;;
1569010005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;;
1569110006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;;
1569210007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;;
1569310008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;;
1569410009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;;
156951000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;;
156961000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;;
156971000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;;
156981000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;;
156991000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;;
1570010010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;;
1570110011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;;
1570210012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;;
1570310013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;;
1570410014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;;
1570510015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;;
1570610016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;;
1570710017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;;
1570810018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;;
1570910019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;;
157101001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;;
157111001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;;
157121001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;;
157131001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;;
157141001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;;
157151001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;;
1571610020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;;
1571710021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;;
1571810022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;;
1571910023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;;
1572010024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;;
1572110025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;;
1572210026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;;
1572310028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;;
1572410029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;;
157251002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;;
157261002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;;
157271002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;;
157281002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;;
157291002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;;
157301002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;;
1573110030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;;
1573210031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;;
1573310032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;;
1573410033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;;
1573510034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;;
1573610035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;;
1573710036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;;
1573810037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;;
1573910038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;;
1574010039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;;
157411003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;;
157421003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;;
157431003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;;
157441003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;;
1574510040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;;
1574610041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;;
1574710042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;;
1574810043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;;
1574910044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;;
1575010045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;;
1575110046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;;
1575210047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;;
1575310048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;;
1575410049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;;
157551004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;;
157561004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;;
157571004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;;
157581004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;;
1575910050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;;
1576010051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;;
1576110052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;;
1576210053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;;
1576310054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;;
1576410055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;;
1576510056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;;
1576610057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;;
1576710058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;;
1576810059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;;
157691005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;;
157701005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;;
157711005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;;
157721005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;;
1577310080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;;
1577410081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;;
1577510082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;;
1577610083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;;
1577710084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;;
1577810085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;;
1577910086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;;
1578010087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;;
1578110088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;;
1578210089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;;
157831008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;;
157841008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;;
157851008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;;
157861008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;;
157871008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;;
157881008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;;
1578910090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;;
1579010091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;;
1579110092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;;
1579210093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;;
1579310094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;;
1579410095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;;
1579510096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;;
1579610097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;;
1579710098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;;
1579810099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;;
157991009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;;
158001009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;;
158011009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;;
158021009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;;
158031009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;;
158041009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;;
15805100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;;
15806100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;;
15807100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;;
15808100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;;
15809100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;;
15810100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;;
15811100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;;
15812100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;;
15813100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;;
15814100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;;
15815100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;;
15816100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;;
15817100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;;
15818100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;;
15819100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;;
15820100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;;
15821100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;;
15822100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;;
15823100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;;
15824100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;;
15825100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;;
15826100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;;
15827100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;;
15828100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;;
15829100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;;
15830100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;;
15831100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;;
15832100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;;
15833100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;;
15834100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;;
15835100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;;
15836100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;;
15837100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;;
15838100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;;
15839100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;;
15840100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;;
15841100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;;
15842100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;;
15843100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;;
15844100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;;
15845100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;;
15846100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;;;;
15847100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;;
15848100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;;;;
15849100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;;
15850100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;;
15851100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;;
15852100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;;
15853100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;;
15854100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;;
15855100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;;
15856100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;;
15857100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;;
15858100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;;
15859100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;;
15860100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;;
15861100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;;
15862100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;;
15863100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;;
15864100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;;
15865100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;;
15866100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;;
15867100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;;
15868100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;;
15869100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;;
15870100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;;
15871100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;;
15872100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;;
15873100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;;
15874100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;;
15875100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;;
15876100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;;
15877100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;;
15878100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;;
15879100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;;
15880100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;;
15881100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;;
15882100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;;
15883100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;;
15884100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;;
15885100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;;
15886100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;;
15887100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;;
15888100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;;
15889100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;;
15890100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;;
15891100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;;
15892100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;;
15893100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;;
15894100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;;
15895100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;;
1589610100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;;
1589710101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;;
1589810102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;;
1589910107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;;
1590010108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;;
1590110109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;;
159021010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;;
159031010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;;
159041010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;;
159051010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;;
159061010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;;
159071010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;;
1590810110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;;
1590910111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;;
1591010112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;;
1591110113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;;
1591210114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;;
1591310115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;;
1591410116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
1591510117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
1591610118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;;
1591710119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
159181011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;;
159191011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;;
159201011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;;
159211011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;;
159221011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;;
159231011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;;
1592410120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;;
1592510121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;;
1592610122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
1592710123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;;
1592810124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;;
1592910125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;;
1593010126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;;
1593110127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;;
1593210128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;;
1593310129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;;
159341012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;;
159351012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
159361012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;;
159371012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;;
159381012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;;
159391012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;;
1594010130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;;
1594110131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;;
1594210132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;;
1594310133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;;
1594410137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;;
1594510138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;;
1594610139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;;
159471013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;;
159481013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;;
159491013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
159501013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
159511013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;;
159521013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;;
1595310140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;;
1595410141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;;
1595510142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;;
1595610143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;;
1595710144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;;
1595810145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
1595910146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
1596010147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;;
1596110148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;;
1596210149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;;
159631014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;;
159641014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;;
159651014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;;
159661014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;;
159671014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;;
159681014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;;
1596910150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;;
1597010151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;;
1597110152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;;
1597210153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;;
1597310154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;;
1597410155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;;
1597510156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;;
1597610157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;;
1597710158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;;
1597810159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;;
159791015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;;
159801015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;;
159811015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;;
159821015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
159831015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
159841015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;;
1598510160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;;
1598610161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;;
1598710162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;;
1598810163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;;
1598910164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;;
1599010165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;;
1599110166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
1599210167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;;
1599310168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
1599410169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
159951016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;;
159961016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;;
159971016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
159981016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
159991016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
160001016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
1600110170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
1600210171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;;
1600310172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
1600410173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;;
1600510174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;;
1600610175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;;
1600710176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;;
1600810177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;;
1600910178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;;
1601010179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;;
160111017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;;
160121017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;;
160131017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;;
160141017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;;
160151017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;;
160161017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;;
1601710180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;;
1601810181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;;
1601910182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;;
1602010183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;;
1602110184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;;
1602210185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;;
1602310186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;;
1602410187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;;
1602510188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;;
1602610189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;;
160271018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;;
1602810190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;;
1602910191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;;
1603010192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;;
1603110193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;;
1603210194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;;
1603310195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;;
1603410196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;;
1603510197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;;
1603610198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;;
1603710199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;;
160381019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;;
160391019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;;
16040101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;;
16041101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;;
16042101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;;
16043101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;;
16044101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;;
16045101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;;
16046101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;;
16047101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;;
16048101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;;
16049101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;;
16050101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;;
16051101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;;
16052101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;;
16053101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;;
16054101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;;
16055101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;;
16056101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;;
16057101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;;
16058101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;;
16059101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;;
16060101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;;
16061101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;;
16062101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;;
16063101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;;
16064101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;;
16065101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;;
16066101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;;
16067101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;;
16068101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;;
16069101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;;
16070101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;;
16071101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;;
16072101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;;
16073101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;;
16074101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;;
16075101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;;
16076101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;;
16077101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;;
16078101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;;
16079101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;;
16080101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;;
16081101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;;
16082101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;;
16083101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;;
16084101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;;
16085101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;;
1608610280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;;
1608710281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;;
1608810282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;;
1608910283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;;
1609010284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;;
1609110285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;;
1609210286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;;
1609310287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;;
1609410288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;;
1609510289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;;
160961028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;;
160971028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;;
160981028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;;
160991028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;;
161001028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;;
161011028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;;
1610210290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;;
1610310291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;;
1610410292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;;
1610510293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;;
1610610294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;;
1610710295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;;
1610810296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;;
1610910297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;;
1611010298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;;
1611110299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;;
161121029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;;
161131029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;;
161141029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;;
16115102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;;
16116102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;;
16117102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;;
16118102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;;
16119102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;;
16120102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;;
16121102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;;
16122102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;;
16123102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;;
16124102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;;
16125102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;;
16126102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;;
16127102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;;
16128102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;;
16129102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;;
16130102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;;
16131102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;;
16132102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;;
16133102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;;
16134102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;;
16135102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;;
16136102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;;
16137102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;;
16138102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;;
16139102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;;
16140102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;;
16141102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;;
16142102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;;
16143102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;;
16144102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;;
16145102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;;
16146102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;;
16147102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;;
16148102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;;
16149102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;;
16150102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;;
16151102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;;
16152102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;;
16153102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;;
16154102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;;
16155102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;;
16156102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;;
16157102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;;
16158102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;;
16159102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;;
16160102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;;
16161102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;;
16162102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;;
16163102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;N;;;;;
1616410300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;
1616510301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;
1616610302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;
1616710303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;
1616810304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;
1616910305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;
1617010306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;
1617110307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;
1617210308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;
1617310309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;
161741030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;
161751030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;
161761030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;
161771030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;
161781030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;
161791030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;;;;
1618010310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;
1618110311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;
1618210312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;
1618310313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;
1618410314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;
1618510315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;
1618610316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;
1618710317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;;;;
1618810318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;
1618910319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;
161901031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;
161911031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;;;;
161921031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;;;;
161931031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;;;;
161941031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;;;;
1619510320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;
1619610321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;
1619710322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;
1619810323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;
1619910330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;
1620010331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;
1620110332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;
1620210333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;
1620310334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;
1620410335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;
1620510336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;
1620610337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;
1620710338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;
1620810339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;
162091033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;
162101033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;
162111033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;
162121033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;
162131033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;
162141033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;
1621510340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;
1621610341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;;
1621710342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;
1621810343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;
1621910344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;
1622010345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;
1622110346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;
1622210347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;
1622310348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;
1622410349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;
162251034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;;
1622610380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;;
1622710381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;;
1622810382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;;
1622910383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;;
1623010384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;;
1623110385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;;
1623210386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;;
1623310387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;;
1623410388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;;
1623510389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;;
162361038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;;
162371038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;;
162381038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;;
162391038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;;
162401038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;;
162411038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;;
1624210390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;;
1624310391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;;
1624410392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;;
1624510393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;;
1624610394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;;
1624710395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;;
1624810396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;;
1624910397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;;
1625010398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;;
1625110399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;;
162521039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;;
162531039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;;
162541039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;;
162551039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;;
162561039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;;
16257103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;;
16258103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;;
16259103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;;
16260103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;;
16261103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;;
16262103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;;
16263103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;;
16264103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;;
16265103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;;
16266103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;;
16267103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;;
16268103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;;
16269103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;;
16270103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;;
16271103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;;
16272103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;;
16273103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;;
16274103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;;
16275103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;;
16276103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;;
16277103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;;
16278103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;;
16279103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;;
16280103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;;
16281103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;;
16282103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;;
16283103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;;
16284103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;;
16285103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;;
16286103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;;
16287103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;;
16288103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;;
16289103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;;
16290103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;;
16291103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;;
16292103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;;
16293103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;;
16294103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;;
16295103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;;
16296103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;;
16297103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;;
16298103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;;
16299103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;;
16300103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;;
16301103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
16302103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;;
16303103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;;
16304103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;;
16305103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;;
16306103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;;
1630710400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
1630810401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;
1630910402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;
1631010403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;
1631110404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;
1631210405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;
1631310406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;
1631410407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;
1631510408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;
1631610409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;
163171040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;
163181040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;
163191040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;
163201040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;
163211040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;
163221040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;
1632310410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;
1632410411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;
1632510412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;
1632610413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;
1632710414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;
1632810415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;
1632910416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;
1633010417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;
1633110418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;
1633210419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;
163331041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;
163341041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;
163351041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;
163361041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;
163371041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;
163381041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;
1633910420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;
1634010421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;
1634110422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;
1634210423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;
1634310424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;
1634410425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;
1634510426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E;
1634610427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F;
1634710428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
1634810429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401
163491042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402
163501042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403
163511042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404
163521042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405
163531042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406
163541042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407
1635510430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408
1635610431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409
1635710432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A
1635810433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B
1635910434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C
1636010435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D
1636110436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E
1636210437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F
1636310438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410
1636410439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411
163651043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412
163661043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413
163671043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414
163681043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415
163691043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416
163701043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417
1637110440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418
1637210441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419
1637310442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A
1637410443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B
1637510444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C
1637610445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D
1637710446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E
1637810447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F
1637910448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420
1638010449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421
163811044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422
163821044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423
163831044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424
163841044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425
163851044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426
163861044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427
1638710450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;;
1638810451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;;
1638910452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;;
1639010453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;;
1639110454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;;
1639210455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;;
1639310456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;;
1639410457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;;
1639510458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;;
1639610459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;;
163971045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;;
163981045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;;
163991045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;;
164001045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;;
164011045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;;
164021045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;;
1640310460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;;
1640410461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;;
1640510462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;;
1640610463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;;
1640710464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;;
1640810465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;;
1640910466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;;
1641010467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;;
1641110468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;;
1641210469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;;
164131046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;;
164141046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;;
164151046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;;
164161046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;;
164171046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;;
164181046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;;
1641910470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;;
1642010471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;;
1642110472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;;
1642210473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;;
1642310474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;;
1642410475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;;
1642510476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;;
1642610477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;;
1642710478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;;
1642810479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;;
164291047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;;
164301047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;;
164311047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;;
164321047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;;
164331047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;;
164341047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;;
1643510480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;;
1643610481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;;
1643710482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;;
1643810483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;;
1643910484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;;
1644010485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;;
1644110486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;;
1644210487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;;
1644310488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;;
1644410489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;;
164451048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;;
164461048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;;
164471048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;;
164481048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;;
164491048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;;
164501048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;;
1645110490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;;
1645210491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;;
1645310492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;;
1645410493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;;
1645510494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;;
1645610495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;;
1645710496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;;
1645810497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;;
1645910498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;;
1646010499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;;
164611049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;;
164621049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;;
164631049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;;
164641049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;;
16465104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
16466104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
16467104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
16468104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
16469104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
16470104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
16471104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
16472104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
16473104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
16474104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
1647510800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;;
1647610801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;;
1647710802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;;
1647810803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;;
1647910804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;;
1648010805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;;
1648110808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;;
164821080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;;
164831080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;;
164841080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;;
164851080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;;
164861080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;;
164871080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;;
1648810810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;;
1648910811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;;
1649010812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;;
1649110813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;;
1649210814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;;
1649310815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;;
1649410816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;;
1649510817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;;
1649610818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;;
1649710819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;;
164981081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;;
164991081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;;
165001081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;;
165011081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;;
165021081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;;
165031081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;;
1650410820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;;
1650510821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;;
1650610822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;;
1650710823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;;
1650810824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;;
1650910825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;;
1651010826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;;
1651110827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;;
1651210828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;;
1651310829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;;
165141082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;;
165151082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;;
165161082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;;
165171082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;;
165181082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;;
165191082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;;
1652010830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;;
1652110831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;;
1652210832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;;
1652310833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;;
1652410834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;;
1652510835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;;
1652610837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;;
1652710838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;;
165281083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;;
165291083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;;
1653010840;IMPERIAL ARAMAIC LETTER ALEPH;Lo;0;R;;;;;N;;;;;
1653110841;IMPERIAL ARAMAIC LETTER BETH;Lo;0;R;;;;;N;;;;;
1653210842;IMPERIAL ARAMAIC LETTER GIMEL;Lo;0;R;;;;;N;;;;;
1653310843;IMPERIAL ARAMAIC LETTER DALETH;Lo;0;R;;;;;N;;;;;
1653410844;IMPERIAL ARAMAIC LETTER HE;Lo;0;R;;;;;N;;;;;
1653510845;IMPERIAL ARAMAIC LETTER WAW;Lo;0;R;;;;;N;;;;;
1653610846;IMPERIAL ARAMAIC LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
1653710847;IMPERIAL ARAMAIC LETTER HETH;Lo;0;R;;;;;N;;;;;
1653810848;IMPERIAL ARAMAIC LETTER TETH;Lo;0;R;;;;;N;;;;;
1653910849;IMPERIAL ARAMAIC LETTER YODH;Lo;0;R;;;;;N;;;;;
165401084A;IMPERIAL ARAMAIC LETTER KAPH;Lo;0;R;;;;;N;;;;;
165411084B;IMPERIAL ARAMAIC LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
165421084C;IMPERIAL ARAMAIC LETTER MEM;Lo;0;R;;;;;N;;;;;
165431084D;IMPERIAL ARAMAIC LETTER NUN;Lo;0;R;;;;;N;;;;;
165441084E;IMPERIAL ARAMAIC LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
165451084F;IMPERIAL ARAMAIC LETTER AYIN;Lo;0;R;;;;;N;;;;;
1654610850;IMPERIAL ARAMAIC LETTER PE;Lo;0;R;;;;;N;;;;;
1654710851;IMPERIAL ARAMAIC LETTER SADHE;Lo;0;R;;;;;N;;;;;
1654810852;IMPERIAL ARAMAIC LETTER QOPH;Lo;0;R;;;;;N;;;;;
1654910853;IMPERIAL ARAMAIC LETTER RESH;Lo;0;R;;;;;N;;;;;
1655010854;IMPERIAL ARAMAIC LETTER SHIN;Lo;0;R;;;;;N;;;;;
1655110855;IMPERIAL ARAMAIC LETTER TAW;Lo;0;R;;;;;N;;;;;
1655210857;IMPERIAL ARAMAIC SECTION SIGN;Po;0;R;;;;;N;;;;;
1655310858;IMPERIAL ARAMAIC NUMBER ONE;No;0;R;;;;1;N;;;;;
1655410859;IMPERIAL ARAMAIC NUMBER TWO;No;0;R;;;;2;N;;;;;
165551085A;IMPERIAL ARAMAIC NUMBER THREE;No;0;R;;;;3;N;;;;;
165561085B;IMPERIAL ARAMAIC NUMBER TEN;No;0;R;;;;10;N;;;;;
165571085C;IMPERIAL ARAMAIC NUMBER TWENTY;No;0;R;;;;20;N;;;;;
165581085D;IMPERIAL ARAMAIC NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
165591085E;IMPERIAL ARAMAIC NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
165601085F;IMPERIAL ARAMAIC NUMBER TEN THOUSAND;No;0;R;;;;10000;N;;;;;
1656110900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;;
1656210901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;;
1656310902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;;
1656410903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;;
1656510904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;;
1656610905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;;
1656710906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;;
1656810907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;;
1656910908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;;
1657010909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;;
165711090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;;
165721090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;;
165731090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
165741090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
165751090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;;
165761090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;;
1657710910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;;
1657810911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;;
1657910912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;;
1658010913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;;
1658110914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
1658210915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;;
1658310916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
1658410917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
1658510918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
1658610919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
165871091A;PHOENICIAN NUMBER TWO;No;0;R;;;;2;N;;;;;
165881091B;PHOENICIAN NUMBER THREE;No;0;R;;;;3;N;;;;;
165891091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;;
1659010920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;;
1659110921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;;
1659210922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;;
1659310923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;;
1659410924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;;
1659510925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;;
1659610926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;;
1659710927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;;
1659810928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;;
1659910929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;;
166001092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;;
166011092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;;
166021092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;;
166031092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;;
166041092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;;
166051092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;;
1660610930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;;
1660710931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;;
1660810932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;;
1660910933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;;
1661010934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;;
1661110935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;;
1661210936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;;
1661310937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;;
1661410938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;;
1661510939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;;
166161093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;;
1661710A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;;
1661810A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
1661910A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
1662010A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
1662110A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
1662210A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
1662310A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
1662410A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
1662510A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
1662610A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;;
1662710A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;;
1662810A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;;
1662910A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;;
1663010A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;;
1663110A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;;
1663210A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;;
1663310A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;;
1663410A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;;
1663510A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;;
1663610A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;;
1663710A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;;
1663810A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;;
1663910A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;;
1664010A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;;
1664110A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;;
1664210A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;;
1664310A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;;
1664410A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;;
1664510A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;;
1664610A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;;
1664710A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;;
1664810A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;;
1664910A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;;
1665010A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;;
1665110A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;;
1665210A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;;
1665310A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;;
1665410A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;;
1665510A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;;
1665610A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;;
1665710A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;;
1665810A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;;
1665910A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;;
1666010A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;;
1666110A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;;
1666210A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;;
1666310A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
1666410A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;;
1666510A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;;
1666610A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;;
1666710A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;;
1666810A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;;
1666910A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;;
1667010A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
1667110A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
1667210A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
1667310A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;;
1667410A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;;
1667510A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;;
1667610A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;;
1667710A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;;
1667810A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;;
1667910A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;;
1668010A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;;
1668110A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;;
1668210A60;OLD SOUTH ARABIAN LETTER HE;Lo;0;R;;;;;N;;;;;
1668310A61;OLD SOUTH ARABIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
1668410A62;OLD SOUTH ARABIAN LETTER HETH;Lo;0;R;;;;;N;;;;;
1668510A63;OLD SOUTH ARABIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
1668610A64;OLD SOUTH ARABIAN LETTER QOPH;Lo;0;R;;;;;N;;;;;
1668710A65;OLD SOUTH ARABIAN LETTER WAW;Lo;0;R;;;;;N;;;;;
1668810A66;OLD SOUTH ARABIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
1668910A67;OLD SOUTH ARABIAN LETTER RESH;Lo;0;R;;;;;N;;;;;
1669010A68;OLD SOUTH ARABIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
1669110A69;OLD SOUTH ARABIAN LETTER TAW;Lo;0;R;;;;;N;;;;;
1669210A6A;OLD SOUTH ARABIAN LETTER SAT;Lo;0;R;;;;;N;;;;;
1669310A6B;OLD SOUTH ARABIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;
1669410A6C;OLD SOUTH ARABIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
1669510A6D;OLD SOUTH ARABIAN LETTER KHETH;Lo;0;R;;;;;N;;;;;
1669610A6E;OLD SOUTH ARABIAN LETTER SADHE;Lo;0;R;;;;;N;;;;;
1669710A6F;OLD SOUTH ARABIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
1669810A70;OLD SOUTH ARABIAN LETTER FE;Lo;0;R;;;;;N;;;;;
1669910A71;OLD SOUTH ARABIAN LETTER ALEF;Lo;0;R;;;;;N;;;;;
1670010A72;OLD SOUTH ARABIAN LETTER AYN;Lo;0;R;;;;;N;;;;;
1670110A73;OLD SOUTH ARABIAN LETTER DHADHE;Lo;0;R;;;;;N;;;;;
1670210A74;OLD SOUTH ARABIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;
1670310A75;OLD SOUTH ARABIAN LETTER DALETH;Lo;0;R;;;;;N;;;;;
1670410A76;OLD SOUTH ARABIAN LETTER GHAYN;Lo;0;R;;;;;N;;;;;
1670510A77;OLD SOUTH ARABIAN LETTER TETH;Lo;0;R;;;;;N;;;;;
1670610A78;OLD SOUTH ARABIAN LETTER ZAYN;Lo;0;R;;;;;N;;;;;
1670710A79;OLD SOUTH ARABIAN LETTER DHALETH;Lo;0;R;;;;;N;;;;;
1670810A7A;OLD SOUTH ARABIAN LETTER YODH;Lo;0;R;;;;;N;;;;;
1670910A7B;OLD SOUTH ARABIAN LETTER THAW;Lo;0;R;;;;;N;;;;;
1671010A7C;OLD SOUTH ARABIAN LETTER THETH;Lo;0;R;;;;;N;;;;;
1671110A7D;OLD SOUTH ARABIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
1671210A7E;OLD SOUTH ARABIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;;
1671310A7F;OLD SOUTH ARABIAN NUMERIC INDICATOR;Po;0;R;;;;;N;;;;;
1671410B00;AVESTAN LETTER A;Lo;0;R;;;;;N;;;;;
1671510B01;AVESTAN LETTER AA;Lo;0;R;;;;;N;;;;;
1671610B02;AVESTAN LETTER AO;Lo;0;R;;;;;N;;;;;
1671710B03;AVESTAN LETTER AAO;Lo;0;R;;;;;N;;;;;
1671810B04;AVESTAN LETTER AN;Lo;0;R;;;;;N;;;;;
1671910B05;AVESTAN LETTER AAN;Lo;0;R;;;;;N;;;;;
1672010B06;AVESTAN LETTER AE;Lo;0;R;;;;;N;;;;;
1672110B07;AVESTAN LETTER AEE;Lo;0;R;;;;;N;;;;;
1672210B08;AVESTAN LETTER E;Lo;0;R;;;;;N;;;;;
1672310B09;AVESTAN LETTER EE;Lo;0;R;;;;;N;;;;;
1672410B0A;AVESTAN LETTER O;Lo;0;R;;;;;N;;;;;
1672510B0B;AVESTAN LETTER OO;Lo;0;R;;;;;N;;;;;
1672610B0C;AVESTAN LETTER I;Lo;0;R;;;;;N;;;;;
1672710B0D;AVESTAN LETTER II;Lo;0;R;;;;;N;;;;;
1672810B0E;AVESTAN LETTER U;Lo;0;R;;;;;N;;;;;
1672910B0F;AVESTAN LETTER UU;Lo;0;R;;;;;N;;;;;
1673010B10;AVESTAN LETTER KE;Lo;0;R;;;;;N;;;;;
1673110B11;AVESTAN LETTER XE;Lo;0;R;;;;;N;;;;;
1673210B12;AVESTAN LETTER XYE;Lo;0;R;;;;;N;;;;;
1673310B13;AVESTAN LETTER XVE;Lo;0;R;;;;;N;;;;;
1673410B14;AVESTAN LETTER GE;Lo;0;R;;;;;N;;;;;
1673510B15;AVESTAN LETTER GGE;Lo;0;R;;;;;N;;;;;
1673610B16;AVESTAN LETTER GHE;Lo;0;R;;;;;N;;;;;
1673710B17;AVESTAN LETTER CE;Lo;0;R;;;;;N;;;;;
1673810B18;AVESTAN LETTER JE;Lo;0;R;;;;;N;;;;;
1673910B19;AVESTAN LETTER TE;Lo;0;R;;;;;N;;;;;
1674010B1A;AVESTAN LETTER THE;Lo;0;R;;;;;N;;;;;
1674110B1B;AVESTAN LETTER DE;Lo;0;R;;;;;N;;;;;
1674210B1C;AVESTAN LETTER DHE;Lo;0;R;;;;;N;;;;;
1674310B1D;AVESTAN LETTER TTE;Lo;0;R;;;;;N;;;;;
1674410B1E;AVESTAN LETTER PE;Lo;0;R;;;;;N;;;;;
1674510B1F;AVESTAN LETTER FE;Lo;0;R;;;;;N;;;;;
1674610B20;AVESTAN LETTER BE;Lo;0;R;;;;;N;;;;;
1674710B21;AVESTAN LETTER BHE;Lo;0;R;;;;;N;;;;;
1674810B22;AVESTAN LETTER NGE;Lo;0;R;;;;;N;;;;;
1674910B23;AVESTAN LETTER NGYE;Lo;0;R;;;;;N;;;;;
1675010B24;AVESTAN LETTER NGVE;Lo;0;R;;;;;N;;;;;
1675110B25;AVESTAN LETTER NE;Lo;0;R;;;;;N;;;;;
1675210B26;AVESTAN LETTER NYE;Lo;0;R;;;;;N;;;;;
1675310B27;AVESTAN LETTER NNE;Lo;0;R;;;;;N;;;;;
1675410B28;AVESTAN LETTER ME;Lo;0;R;;;;;N;;;;;
1675510B29;AVESTAN LETTER HME;Lo;0;R;;;;;N;;;;;
1675610B2A;AVESTAN LETTER YYE;Lo;0;R;;;;;N;;;;;
1675710B2B;AVESTAN LETTER YE;Lo;0;R;;;;;N;;;;;
1675810B2C;AVESTAN LETTER VE;Lo;0;R;;;;;N;;;;;
1675910B2D;AVESTAN LETTER RE;Lo;0;R;;;;;N;;;;;
1676010B2E;AVESTAN LETTER LE;Lo;0;R;;;;;N;;;;;
1676110B2F;AVESTAN LETTER SE;Lo;0;R;;;;;N;;;;;
1676210B30;AVESTAN LETTER ZE;Lo;0;R;;;;;N;;;;;
1676310B31;AVESTAN LETTER SHE;Lo;0;R;;;;;N;;;;;
1676410B32;AVESTAN LETTER ZHE;Lo;0;R;;;;;N;;;;;
1676510B33;AVESTAN LETTER SHYE;Lo;0;R;;;;;N;;;;;
1676610B34;AVESTAN LETTER SSHE;Lo;0;R;;;;;N;;;;;
1676710B35;AVESTAN LETTER HE;Lo;0;R;;;;;N;;;;;
1676810B39;AVESTAN ABBREVIATION MARK;Po;0;ON;;;;;N;;;;;
1676910B3A;TINY TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
1677010B3B;SMALL TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
1677110B3C;LARGE TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
1677210B3D;LARGE ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;;
1677310B3E;LARGE TWO RINGS OVER ONE RING PUNCTUATION;Po;0;ON;;;;;N;;;;;
1677410B3F;LARGE ONE RING OVER TWO RINGS PUNCTUATION;Po;0;ON;;;;;N;;;;;
1677510B40;INSCRIPTIONAL PARTHIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
1677610B41;INSCRIPTIONAL PARTHIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
1677710B42;INSCRIPTIONAL PARTHIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;
1677810B43;INSCRIPTIONAL PARTHIAN LETTER DALETH;Lo;0;R;;;;;N;;;;;
1677910B44;INSCRIPTIONAL PARTHIAN LETTER HE;Lo;0;R;;;;;N;;;;;
1678010B45;INSCRIPTIONAL PARTHIAN LETTER WAW;Lo;0;R;;;;;N;;;;;
1678110B46;INSCRIPTIONAL PARTHIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
1678210B47;INSCRIPTIONAL PARTHIAN LETTER HETH;Lo;0;R;;;;;N;;;;;
1678310B48;INSCRIPTIONAL PARTHIAN LETTER TETH;Lo;0;R;;;;;N;;;;;
1678410B49;INSCRIPTIONAL PARTHIAN LETTER YODH;Lo;0;R;;;;;N;;;;;
1678510B4A;INSCRIPTIONAL PARTHIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;
1678610B4B;INSCRIPTIONAL PARTHIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
1678710B4C;INSCRIPTIONAL PARTHIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
1678810B4D;INSCRIPTIONAL PARTHIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
1678910B4E;INSCRIPTIONAL PARTHIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
1679010B4F;INSCRIPTIONAL PARTHIAN LETTER AYIN;Lo;0;R;;;;;N;;;;;
1679110B50;INSCRIPTIONAL PARTHIAN LETTER PE;Lo;0;R;;;;;N;;;;;
1679210B51;INSCRIPTIONAL PARTHIAN LETTER SADHE;Lo;0;R;;;;;N;;;;;
1679310B52;INSCRIPTIONAL PARTHIAN LETTER QOPH;Lo;0;R;;;;;N;;;;;
1679410B53;INSCRIPTIONAL PARTHIAN LETTER RESH;Lo;0;R;;;;;N;;;;;
1679510B54;INSCRIPTIONAL PARTHIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
1679610B55;INSCRIPTIONAL PARTHIAN LETTER TAW;Lo;0;R;;;;;N;;;;;
1679710B58;INSCRIPTIONAL PARTHIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
1679810B59;INSCRIPTIONAL PARTHIAN NUMBER TWO;No;0;R;;;;2;N;;;;;
1679910B5A;INSCRIPTIONAL PARTHIAN NUMBER THREE;No;0;R;;;;3;N;;;;;
1680010B5B;INSCRIPTIONAL PARTHIAN NUMBER FOUR;No;0;R;;;;4;N;;;;;
1680110B5C;INSCRIPTIONAL PARTHIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
1680210B5D;INSCRIPTIONAL PARTHIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
1680310B5E;INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
1680410B5F;INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
1680510B60;INSCRIPTIONAL PAHLAVI LETTER ALEPH;Lo;0;R;;;;;N;;;;;
1680610B61;INSCRIPTIONAL PAHLAVI LETTER BETH;Lo;0;R;;;;;N;;;;;
1680710B62;INSCRIPTIONAL PAHLAVI LETTER GIMEL;Lo;0;R;;;;;N;;;;;
1680810B63;INSCRIPTIONAL PAHLAVI LETTER DALETH;Lo;0;R;;;;;N;;;;;
1680910B64;INSCRIPTIONAL PAHLAVI LETTER HE;Lo;0;R;;;;;N;;;;;
1681010B65;INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH;Lo;0;R;;;;;N;;;;;
1681110B66;INSCRIPTIONAL PAHLAVI LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
1681210B67;INSCRIPTIONAL PAHLAVI LETTER HETH;Lo;0;R;;;;;N;;;;;
1681310B68;INSCRIPTIONAL PAHLAVI LETTER TETH;Lo;0;R;;;;;N;;;;;
1681410B69;INSCRIPTIONAL PAHLAVI LETTER YODH;Lo;0;R;;;;;N;;;;;
1681510B6A;INSCRIPTIONAL PAHLAVI LETTER KAPH;Lo;0;R;;;;;N;;;;;
1681610B6B;INSCRIPTIONAL PAHLAVI LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
1681710B6C;INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH;Lo;0;R;;;;;N;;;;;
1681810B6D;INSCRIPTIONAL PAHLAVI LETTER NUN;Lo;0;R;;;;;N;;;;;
1681910B6E;INSCRIPTIONAL PAHLAVI LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
1682010B6F;INSCRIPTIONAL PAHLAVI LETTER PE;Lo;0;R;;;;;N;;;;;
1682110B70;INSCRIPTIONAL PAHLAVI LETTER SADHE;Lo;0;R;;;;;N;;;;;
1682210B71;INSCRIPTIONAL PAHLAVI LETTER SHIN;Lo;0;R;;;;;N;;;;;
1682310B72;INSCRIPTIONAL PAHLAVI LETTER TAW;Lo;0;R;;;;;N;;;;;
1682410B78;INSCRIPTIONAL PAHLAVI NUMBER ONE;No;0;R;;;;1;N;;;;;
1682510B79;INSCRIPTIONAL PAHLAVI NUMBER TWO;No;0;R;;;;2;N;;;;;
1682610B7A;INSCRIPTIONAL PAHLAVI NUMBER THREE;No;0;R;;;;3;N;;;;;
1682710B7B;INSCRIPTIONAL PAHLAVI NUMBER FOUR;No;0;R;;;;4;N;;;;;
1682810B7C;INSCRIPTIONAL PAHLAVI NUMBER TEN;No;0;R;;;;10;N;;;;;
1682910B7D;INSCRIPTIONAL PAHLAVI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
1683010B7E;INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
1683110B7F;INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
1683210C00;OLD TURKIC LETTER ORKHON A;Lo;0;R;;;;;N;;;;;
1683310C01;OLD TURKIC LETTER YENISEI A;Lo;0;R;;;;;N;;;;;
1683410C02;OLD TURKIC LETTER YENISEI AE;Lo;0;R;;;;;N;;;;;
1683510C03;OLD TURKIC LETTER ORKHON I;Lo;0;R;;;;;N;;;;;
1683610C04;OLD TURKIC LETTER YENISEI I;Lo;0;R;;;;;N;;;;;
1683710C05;OLD TURKIC LETTER YENISEI E;Lo;0;R;;;;;N;;;;;
1683810C06;OLD TURKIC LETTER ORKHON O;Lo;0;R;;;;;N;;;;;
1683910C07;OLD TURKIC LETTER ORKHON OE;Lo;0;R;;;;;N;;;;;
1684010C08;OLD TURKIC LETTER YENISEI OE;Lo;0;R;;;;;N;;;;;
1684110C09;OLD TURKIC LETTER ORKHON AB;Lo;0;R;;;;;N;;;;;
1684210C0A;OLD TURKIC LETTER YENISEI AB;Lo;0;R;;;;;N;;;;;
1684310C0B;OLD TURKIC LETTER ORKHON AEB;Lo;0;R;;;;;N;;;;;
1684410C0C;OLD TURKIC LETTER YENISEI AEB;Lo;0;R;;;;;N;;;;;
1684510C0D;OLD TURKIC LETTER ORKHON AG;Lo;0;R;;;;;N;;;;;
1684610C0E;OLD TURKIC LETTER YENISEI AG;Lo;0;R;;;;;N;;;;;
1684710C0F;OLD TURKIC LETTER ORKHON AEG;Lo;0;R;;;;;N;;;;;
1684810C10;OLD TURKIC LETTER YENISEI AEG;Lo;0;R;;;;;N;;;;;
1684910C11;OLD TURKIC LETTER ORKHON AD;Lo;0;R;;;;;N;;;;;
1685010C12;OLD TURKIC LETTER YENISEI AD;Lo;0;R;;;;;N;;;;;
1685110C13;OLD TURKIC LETTER ORKHON AED;Lo;0;R;;;;;N;;;;;
1685210C14;OLD TURKIC LETTER ORKHON EZ;Lo;0;R;;;;;N;;;;;
1685310C15;OLD TURKIC LETTER YENISEI EZ;Lo;0;R;;;;;N;;;;;
1685410C16;OLD TURKIC LETTER ORKHON AY;Lo;0;R;;;;;N;;;;;
1685510C17;OLD TURKIC LETTER YENISEI AY;Lo;0;R;;;;;N;;;;;
1685610C18;OLD TURKIC LETTER ORKHON AEY;Lo;0;R;;;;;N;;;;;
1685710C19;OLD TURKIC LETTER YENISEI AEY;Lo;0;R;;;;;N;;;;;
1685810C1A;OLD TURKIC LETTER ORKHON AEK;Lo;0;R;;;;;N;;;;;
1685910C1B;OLD TURKIC LETTER YENISEI AEK;Lo;0;R;;;;;N;;;;;
1686010C1C;OLD TURKIC LETTER ORKHON OEK;Lo;0;R;;;;;N;;;;;
1686110C1D;OLD TURKIC LETTER YENISEI OEK;Lo;0;R;;;;;N;;;;;
1686210C1E;OLD TURKIC LETTER ORKHON AL;Lo;0;R;;;;;N;;;;;
1686310C1F;OLD TURKIC LETTER YENISEI AL;Lo;0;R;;;;;N;;;;;
1686410C20;OLD TURKIC LETTER ORKHON AEL;Lo;0;R;;;;;N;;;;;
1686510C21;OLD TURKIC LETTER ORKHON ELT;Lo;0;R;;;;;N;;;;;
1686610C22;OLD TURKIC LETTER ORKHON EM;Lo;0;R;;;;;N;;;;;
1686710C23;OLD TURKIC LETTER ORKHON AN;Lo;0;R;;;;;N;;;;;
1686810C24;OLD TURKIC LETTER ORKHON AEN;Lo;0;R;;;;;N;;;;;
1686910C25;OLD TURKIC LETTER YENISEI AEN;Lo;0;R;;;;;N;;;;;
1687010C26;OLD TURKIC LETTER ORKHON ENT;Lo;0;R;;;;;N;;;;;
1687110C27;OLD TURKIC LETTER YENISEI ENT;Lo;0;R;;;;;N;;;;;
1687210C28;OLD TURKIC LETTER ORKHON ENC;Lo;0;R;;;;;N;;;;;
1687310C29;OLD TURKIC LETTER YENISEI ENC;Lo;0;R;;;;;N;;;;;
1687410C2A;OLD TURKIC LETTER ORKHON ENY;Lo;0;R;;;;;N;;;;;
1687510C2B;OLD TURKIC LETTER YENISEI ENY;Lo;0;R;;;;;N;;;;;
1687610C2C;OLD TURKIC LETTER YENISEI ANG;Lo;0;R;;;;;N;;;;;
1687710C2D;OLD TURKIC LETTER ORKHON ENG;Lo;0;R;;;;;N;;;;;
1687810C2E;OLD TURKIC LETTER YENISEI AENG;Lo;0;R;;;;;N;;;;;
1687910C2F;OLD TURKIC LETTER ORKHON EP;Lo;0;R;;;;;N;;;;;
1688010C30;OLD TURKIC LETTER ORKHON OP;Lo;0;R;;;;;N;;;;;
1688110C31;OLD TURKIC LETTER ORKHON IC;Lo;0;R;;;;;N;;;;;
1688210C32;OLD TURKIC LETTER ORKHON EC;Lo;0;R;;;;;N;;;;;
1688310C33;OLD TURKIC LETTER YENISEI EC;Lo;0;R;;;;;N;;;;;
1688410C34;OLD TURKIC LETTER ORKHON AQ;Lo;0;R;;;;;N;;;;;
1688510C35;OLD TURKIC LETTER YENISEI AQ;Lo;0;R;;;;;N;;;;;
1688610C36;OLD TURKIC LETTER ORKHON IQ;Lo;0;R;;;;;N;;;;;
1688710C37;OLD TURKIC LETTER YENISEI IQ;Lo;0;R;;;;;N;;;;;
1688810C38;OLD TURKIC LETTER ORKHON OQ;Lo;0;R;;;;;N;;;;;
1688910C39;OLD TURKIC LETTER YENISEI OQ;Lo;0;R;;;;;N;;;;;
1689010C3A;OLD TURKIC LETTER ORKHON AR;Lo;0;R;;;;;N;;;;;
1689110C3B;OLD TURKIC LETTER YENISEI AR;Lo;0;R;;;;;N;;;;;
1689210C3C;OLD TURKIC LETTER ORKHON AER;Lo;0;R;;;;;N;;;;;
1689310C3D;OLD TURKIC LETTER ORKHON AS;Lo;0;R;;;;;N;;;;;
1689410C3E;OLD TURKIC LETTER ORKHON AES;Lo;0;R;;;;;N;;;;;
1689510C3F;OLD TURKIC LETTER ORKHON ASH;Lo;0;R;;;;;N;;;;;
1689610C40;OLD TURKIC LETTER YENISEI ASH;Lo;0;R;;;;;N;;;;;
1689710C41;OLD TURKIC LETTER ORKHON ESH;Lo;0;R;;;;;N;;;;;
1689810C42;OLD TURKIC LETTER YENISEI ESH;Lo;0;R;;;;;N;;;;;
1689910C43;OLD TURKIC LETTER ORKHON AT;Lo;0;R;;;;;N;;;;;
1690010C44;OLD TURKIC LETTER YENISEI AT;Lo;0;R;;;;;N;;;;;
1690110C45;OLD TURKIC LETTER ORKHON AET;Lo;0;R;;;;;N;;;;;
1690210C46;OLD TURKIC LETTER YENISEI AET;Lo;0;R;;;;;N;;;;;
1690310C47;OLD TURKIC LETTER ORKHON OT;Lo;0;R;;;;;N;;;;;
1690410C48;OLD TURKIC LETTER ORKHON BASH;Lo;0;R;;;;;N;;;;;
1690510E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;;
1690610E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;;
1690710E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;;
1690810E63;RUMI DIGIT FOUR;No;0;AN;;;4;4;N;;;;;
1690910E64;RUMI DIGIT FIVE;No;0;AN;;;5;5;N;;;;;
1691010E65;RUMI DIGIT SIX;No;0;AN;;;6;6;N;;;;;
1691110E66;RUMI DIGIT SEVEN;No;0;AN;;;7;7;N;;;;;
1691210E67;RUMI DIGIT EIGHT;No;0;AN;;;8;8;N;;;;;
1691310E68;RUMI DIGIT NINE;No;0;AN;;;9;9;N;;;;;
1691410E69;RUMI NUMBER TEN;No;0;AN;;;;10;N;;;;;
1691510E6A;RUMI NUMBER TWENTY;No;0;AN;;;;20;N;;;;;
1691610E6B;RUMI NUMBER THIRTY;No;0;AN;;;;30;N;;;;;
1691710E6C;RUMI NUMBER FORTY;No;0;AN;;;;40;N;;;;;
1691810E6D;RUMI NUMBER FIFTY;No;0;AN;;;;50;N;;;;;
1691910E6E;RUMI NUMBER SIXTY;No;0;AN;;;;60;N;;;;;
1692010E6F;RUMI NUMBER SEVENTY;No;0;AN;;;;70;N;;;;;
1692110E70;RUMI NUMBER EIGHTY;No;0;AN;;;;80;N;;;;;
1692210E71;RUMI NUMBER NINETY;No;0;AN;;;;90;N;;;;;
1692310E72;RUMI NUMBER ONE HUNDRED;No;0;AN;;;;100;N;;;;;
1692410E73;RUMI NUMBER TWO HUNDRED;No;0;AN;;;;200;N;;;;;
1692510E74;RUMI NUMBER THREE HUNDRED;No;0;AN;;;;300;N;;;;;
1692610E75;RUMI NUMBER FOUR HUNDRED;No;0;AN;;;;400;N;;;;;
1692710E76;RUMI NUMBER FIVE HUNDRED;No;0;AN;;;;500;N;;;;;
1692810E77;RUMI NUMBER SIX HUNDRED;No;0;AN;;;;600;N;;;;;
1692910E78;RUMI NUMBER SEVEN HUNDRED;No;0;AN;;;;700;N;;;;;
1693010E79;RUMI NUMBER EIGHT HUNDRED;No;0;AN;;;;800;N;;;;;
1693110E7A;RUMI NUMBER NINE HUNDRED;No;0;AN;;;;900;N;;;;;
1693210E7B;RUMI FRACTION ONE HALF;No;0;AN;;;;1/2;N;;;;;
1693310E7C;RUMI FRACTION ONE QUARTER;No;0;AN;;;;1/4;N;;;;;
1693410E7D;RUMI FRACTION ONE THIRD;No;0;AN;;;;1/3;N;;;;;
1693510E7E;RUMI FRACTION TWO THIRDS;No;0;AN;;;;2/3;N;;;;;
1693611080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
1693711081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
1693811082;KAITHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
1693911083;KAITHI LETTER A;Lo;0;L;;;;;N;;;;;
1694011084;KAITHI LETTER AA;Lo;0;L;;;;;N;;;;;
1694111085;KAITHI LETTER I;Lo;0;L;;;;;N;;;;;
1694211086;KAITHI LETTER II;Lo;0;L;;;;;N;;;;;
1694311087;KAITHI LETTER U;Lo;0;L;;;;;N;;;;;
1694411088;KAITHI LETTER UU;Lo;0;L;;;;;N;;;;;
1694511089;KAITHI LETTER E;Lo;0;L;;;;;N;;;;;
169461108A;KAITHI LETTER AI;Lo;0;L;;;;;N;;;;;
169471108B;KAITHI LETTER O;Lo;0;L;;;;;N;;;;;
169481108C;KAITHI LETTER AU;Lo;0;L;;;;;N;;;;;
169491108D;KAITHI LETTER KA;Lo;0;L;;;;;N;;;;;
169501108E;KAITHI LETTER KHA;Lo;0;L;;;;;N;;;;;
169511108F;KAITHI LETTER GA;Lo;0;L;;;;;N;;;;;
1695211090;KAITHI LETTER GHA;Lo;0;L;;;;;N;;;;;
1695311091;KAITHI LETTER NGA;Lo;0;L;;;;;N;;;;;
1695411092;KAITHI LETTER CA;Lo;0;L;;;;;N;;;;;
1695511093;KAITHI LETTER CHA;Lo;0;L;;;;;N;;;;;
1695611094;KAITHI LETTER JA;Lo;0;L;;;;;N;;;;;
1695711095;KAITHI LETTER JHA;Lo;0;L;;;;;N;;;;;
1695811096;KAITHI LETTER NYA;Lo;0;L;;;;;N;;;;;
1695911097;KAITHI LETTER TTA;Lo;0;L;;;;;N;;;;;
1696011098;KAITHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
1696111099;KAITHI LETTER DDA;Lo;0;L;;;;;N;;;;;
169621109A;KAITHI LETTER DDDHA;Lo;0;L;11099 110BA;;;;N;;;;;
169631109B;KAITHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
169641109C;KAITHI LETTER RHA;Lo;0;L;1109B 110BA;;;;N;;;;;
169651109D;KAITHI LETTER NNA;Lo;0;L;;;;;N;;;;;
169661109E;KAITHI LETTER TA;Lo;0;L;;;;;N;;;;;
169671109F;KAITHI LETTER THA;Lo;0;L;;;;;N;;;;;
16968110A0;KAITHI LETTER DA;Lo;0;L;;;;;N;;;;;
16969110A1;KAITHI LETTER DHA;Lo;0;L;;;;;N;;;;;
16970110A2;KAITHI LETTER NA;Lo;0;L;;;;;N;;;;;
16971110A3;KAITHI LETTER PA;Lo;0;L;;;;;N;;;;;
16972110A4;KAITHI LETTER PHA;Lo;0;L;;;;;N;;;;;
16973110A5;KAITHI LETTER BA;Lo;0;L;;;;;N;;;;;
16974110A6;KAITHI LETTER BHA;Lo;0;L;;;;;N;;;;;
16975110A7;KAITHI LETTER MA;Lo;0;L;;;;;N;;;;;
16976110A8;KAITHI LETTER YA;Lo;0;L;;;;;N;;;;;
16977110A9;KAITHI LETTER RA;Lo;0;L;;;;;N;;;;;
16978110AA;KAITHI LETTER LA;Lo;0;L;;;;;N;;;;;
16979110AB;KAITHI LETTER VA;Lo;0;L;110A5 110BA;;;;N;;;;;
16980110AC;KAITHI LETTER SHA;Lo;0;L;;;;;N;;;;;
16981110AD;KAITHI LETTER SSA;Lo;0;L;;;;;N;;;;;
16982110AE;KAITHI LETTER SA;Lo;0;L;;;;;N;;;;;
16983110AF;KAITHI LETTER HA;Lo;0;L;;;;;N;;;;;
16984110B0;KAITHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
16985110B1;KAITHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
16986110B2;KAITHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
16987110B3;KAITHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
16988110B4;KAITHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
16989110B5;KAITHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
16990110B6;KAITHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
16991110B7;KAITHI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
16992110B8;KAITHI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
16993110B9;KAITHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
16994110BA;KAITHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
16995110BB;KAITHI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
16996110BC;KAITHI ENUMERATION SIGN;Po;0;L;;;;;N;;;;;
16997110BD;KAITHI NUMBER SIGN;Cf;0;L;;;;;N;;;;;
16998110BE;KAITHI SECTION MARK;Po;0;L;;;;;N;;;;;
16999110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;
17000110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;;
17001110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
1700212000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;;
1700312001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;;
1700412002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;;
1700512003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
1700612004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;;
1700712005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;;
1700812006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;;
1700912007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;;
1701012008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;;
1701112009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;;
170121200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;;
170131200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;;
170141200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
170151200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;;
170161200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
170171200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;;
1701812010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
1701912011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;;
1702012012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
1702112013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;;
1702212014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
1702312015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;;
1702412016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;;
1702512017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;;
1702612018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
1702712019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
170281201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;;
170291201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
170301201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;;
170311201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;;
170321201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;;
170331201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;;
1703412020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;;
1703512021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;;
1703612022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;;
1703712023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;;
1703812024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;;
1703912025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;;
1704012026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;;
1704112027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;;
1704212028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;;
1704312029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;;
170441202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;;
170451202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;;
170461202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;;
170471202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;;
170481202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;;
170491202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;;
1705012030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;;
1705112031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;;
1705212032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;;
1705312033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;;
1705412034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;;
1705512035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;;
1705612036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;;
1705712037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;;
1705812038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;;
1705912039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
170601203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;;
170611203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;;
170621203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
170631203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
170641203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;;
170651203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;;
1706612040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;;
1706712041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;;
1706812042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;;
1706912043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;;
1707012044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;;
1707112045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;;
1707212046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;;
1707312047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;;
1707412048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;;
1707512049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;;
170761204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;;
170771204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;;
170781204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
170791204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;;
170801204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;;
170811204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;;
1708212050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;;
1708312051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;;
1708412052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;;
1708512053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;;
1708612054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;;
1708712055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;;
1708812056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;;
1708912057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;;
1709012058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;;
1709112059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;;
170921205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
170931205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;;
170941205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;;
170951205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;;
170961205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;;
170971205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;;
1709812060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;;
1709912061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;;
1710012062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;;
1710112063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;;
1710212064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;;
1710312065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;;
1710412066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;;
1710512067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;;
1710612068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;;
1710712069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;;
171081206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;;
171091206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;;
171101206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;;
171111206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;;
171121206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;;
171131206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;;
1711412070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;;
1711512071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;;
1711612072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;;
1711712073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;;
1711812074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;;
1711912075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
1712012076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;;
1712112077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;;
1712212078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;;
1712312079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;;
171241207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;;
171251207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;;
171261207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;;
171271207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;;
171281207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;;
171291207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;;
1713012080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;;
1713112081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;;
1713212082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;;
1713312083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;;
1713412084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;;
1713512085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;;
1713612086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;;
1713712087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
1713812088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;;
1713912089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;;
171401208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;;
171411208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;;
171421208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;;
171431208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;;
171441208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;;
171451208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;;
1714612090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;;
1714712091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;;
1714812092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;;
1714912093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;;
1715012094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;;
1715112095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;;
1715212096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;;
1715312097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;;
1715412098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;;
1715512099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
171561209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;;
171571209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;;
171581209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;;
171591209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;;
171601209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;;
171611209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;;
17162120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;;
17163120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;;
17164120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;;
17165120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
17166120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
17167120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;;
17168120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;;
17169120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
17170120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
17171120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;;
17172120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;;
17173120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
17174120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;;
17175120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;;
17176120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;;
17177120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;;
17178120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
17179120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;;
17180120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;;
17181120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;;
17182120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;;
17183120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;;
17184120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;;
17185120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;;
17186120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
17187120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
17188120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
17189120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;;
17190120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;;
17191120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
17192120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;;
17193120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;;
17194120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;;
17195120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;;
17196120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;;
17197120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;;
17198120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;;
17199120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
17200120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;;
17201120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;;
17202120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;;
17203120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;;
17204120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
17205120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
17206120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;;
17207120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;;
17208120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;;
17209120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;;
17210120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;;
17211120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;;
17212120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;;
17213120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;;
17214120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;;
17215120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;;
17216120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
17217120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;;
17218120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;;
17219120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
17220120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;;
17221120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;;
17222120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;;
17223120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;;
17224120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
17225120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;;
17226120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
17227120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;;
17228120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;;
17229120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;;
17230120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;;
17231120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
17232120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;;
17233120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;;
17234120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;;
17235120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
17236120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;;
17237120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;;
17238120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;;
17239120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;;
17240120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;;
17241120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;;
17242120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;;
17243120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
17244120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;;
17245120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
17246120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;;
17247120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;;
17248120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;;
17249120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;;
17250120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;;
17251120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;;
17252120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;;
17253120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;;
17254120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;;
17255120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;;
17256120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;;
17257120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;;
1725812100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;;
1725912101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;;
1726012102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;;
1726112103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;;
1726212104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;;
1726312105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;;
1726412106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;;
1726512107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;;
1726612108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;;
1726712109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;;
172681210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;;
172691210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
172701210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
172711210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;;
172721210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;;
172731210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;;
1727412110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;;
1727512111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;;
1727612112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
1727712113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;;
1727812114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;;
1727912115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;;
1728012116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;;
1728112117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;;
1728212118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;;
1728312119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;;
172841211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
172851211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;;
172861211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;;
172871211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;;
172881211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;;
172891211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;;
1729012120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;;
1729112121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;;
1729212122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;;
1729312123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;;
1729412124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;;
1729512125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;;
1729612126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;;
1729712127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;;
1729812128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;;
1729912129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;;
173001212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;;
173011212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;;
173021212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;;
173031212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;;
173041212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;;
173051212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
1730612130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;;
1730712131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;;
1730812132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;;
1730912133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;;
1731012134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;;
1731112135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;;
1731212136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;;
1731312137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;;
1731412138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;;
1731512139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;;
173161213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;;
173171213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
173181213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;;
173191213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;;
173201213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;;
173211213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;;
1732212140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;;
1732312141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;;
1732412142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;;
1732512143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;;
1732612144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;;
1732712145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;;
1732812146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;;
1732912147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;;
1733012148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;;
1733112149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;;
173321214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;;
173331214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;;
173341214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
173351214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;;
173361214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;;
173371214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;;
1733812150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;;
1733912151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;;
1734012152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;;
1734112153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;;
1734212154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;;
1734312155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;;
1734412156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;;
1734512157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;;
1734612158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;;
1734712159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;;
173481215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;;
173491215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;;
173501215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;;
173511215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;;
173521215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;;
173531215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;;
1735412160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;;
1735512161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;;
1735612162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;;
1735712163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;;
1735812164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
1735912165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;;
1736012166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;;
1736112167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;;
1736212168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;;
1736312169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;;
173641216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
173651216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;;
173661216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;;
173671216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;;
173681216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;;
173691216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;;
1737012170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;;
1737112171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;;
1737212172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;;
1737312173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;;
1737412174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;;
1737512175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;;
1737612176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;;
1737712177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;;
1737812178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;;
1737912179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;;
173801217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;;
173811217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;;
173821217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;;
173831217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;;
173841217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;;
173851217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;;
1738612180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;;
1738712181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;;
1738812182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;;
1738912183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;;
1739012184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;;
1739112185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;;
1739212186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;;
1739312187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;;
1739412188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;;
1739512189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;;
173961218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
173971218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;;
173981218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;;
173991218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;;
174001218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;;
174011218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;;
1740212190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;;
1740312191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;;
1740412192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;;
1740512193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;;
1740612194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;;
1740712195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;;
1740812196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
1740912197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;;
1741012198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;;
1741112199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;;
174121219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;;
174131219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;;
174141219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;;
174151219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
174161219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
174171219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;;
17418121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;;
17419121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;;
17420121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;;
17421121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;;
17422121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;;
17423121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;;
17424121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;;
17425121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;;
17426121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;;
17427121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;;
17428121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;;
17429121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
17430121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;;
17431121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;;
17432121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;;
17433121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;;
17434121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;;
17435121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;;
17436121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;;
17437121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;;
17438121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;;
17439121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;;
17440121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;;
17441121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;;
17442121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;;
17443121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;;
17444121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
17445121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;;
17446121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
17447121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;;
17448121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;;
17449121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
17450121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;;
17451121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;;
17452121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;;
17453121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;;
17454121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;;
17455121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;;
17456121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;;
17457121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;;
17458121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;;
17459121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;;
17460121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;;
17461121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
17462121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;;
17463121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;;
17464121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;;
17465121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;;
17466121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;;
17467121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;;
17468121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;;
17469121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;;
17470121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
17471121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;;
17472121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;;
17473121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;;
17474121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;;
17475121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
17476121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;;
17477121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;;
17478121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
17479121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;;
17480121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;;
17481121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;;
17482121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;;
17483121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;;
17484121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;;
17485121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;;
17486121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;;
17487121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
17488121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
17489121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
17490121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
17491121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;;
17492121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;;
17493121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;;
17494121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;;
17495121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;;
17496121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
17497121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;;
17498121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;;
17499121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;;
17500121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;;
17501121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
17502121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;;
17503121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;;
17504121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;;
17505121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;;
17506121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;;
17507121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;;
17508121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;;
17509121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;;
17510121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;;
17511121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;;
17512121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;;
17513121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;;
1751412200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;;
1751512201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;;
1751612202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
1751712203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;;
1751812204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;;
1751912205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;;
1752012206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
1752112207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;;
1752212208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;;
1752312209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;;
175241220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;;
175251220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
175261220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;;
175271220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;;
175281220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;;
175291220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;;
1753012210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;;
1753112211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;;
1753212212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;;
1753312213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;;
1753412214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;;
1753512215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;;
1753612216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;;
1753712217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;;
1753812218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;;
1753912219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;;
175401221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;;
175411221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;;
175421221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;;
175431221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;;
175441221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;;
175451221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;;
1754612220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;;
1754712221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;;
1754812222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;;
1754912223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;;
1755012224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;;
1755112225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;;
1755212226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;;
1755312227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;;
1755412228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;;
1755512229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;;
175561222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;;
175571222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;;
175581222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;;
175591222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;;
175601222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;;
175611222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;;
1756212230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;;
1756312231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;;
1756412232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;;
1756512233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;;
1756612234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;;
1756712235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;;
1756812236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;;
1756912237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
1757012238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;;
1757112239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;;
175721223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;;
175731223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;;
175741223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;;
175751223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;;
175761223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;;
175771223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;;
1757812240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;;
1757912241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;;
1758012242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;;
1758112243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;;
1758212244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;;
1758312245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;;
1758412246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;;
1758512247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;;
1758612248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;;
1758712249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;;
175881224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;;
175891224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;;
175901224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;;
175911224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;;
175921224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;;
175931224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;;
1759412250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
1759512251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
1759612252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;;
1759712253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;;
1759812254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
1759912255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
1760012256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;;
1760112257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
1760212258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;;
1760312259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
176041225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
176051225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;;
176061225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;;
176071225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
176081225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
176091225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;;
1761012260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;;
1761112261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;;
1761212262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;;
1761312263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;;
1761412264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;;
1761512265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;;
1761612266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
1761712267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
1761812268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;;
1761912269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;;
176201226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;;
176211226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;;
176221226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;;
176231226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;;
176241226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
176251226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;;
1762612270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;;
1762712271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;;
1762812272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
1762912273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
1763012274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;;
1763112275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;;
1763212276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;;
1763312277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;;
1763412278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
1763512279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;;
176361227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;;
176371227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;;
176381227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;;
176391227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;;
176401227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;;
176411227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;;
1764212280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;;
1764312281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;;
1764412282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;;
1764512283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;;
1764612284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;;
1764712285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;;
1764812286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;;
1764912287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;;
1765012288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;;
1765112289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;;
176521228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;;
176531228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;;
176541228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;;
176551228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;;
176561228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;;
176571228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;;
1765812290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;;
1765912291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;;
1766012292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;;
1766112293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;;
1766212294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;;
1766312295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;;
1766412296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;;
1766512297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;;
1766612298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;;
1766712299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;;
176681229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;;
176691229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;;
176701229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;;
176711229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;;
176721229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;;
176731229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;;
17674122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;;
17675122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;;
17676122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;;
17677122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;;
17678122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;;
17679122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;;
17680122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;;
17681122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;;
17682122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;;
17683122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;;
17684122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;;
17685122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;;
17686122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;;
17687122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;;
17688122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;;
17689122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;;
17690122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;;
17691122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;;
17692122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;;
17693122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;;
17694122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;;
17695122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;;
17696122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
17697122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;;
17698122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;;
17699122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;;
17700122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;;
17701122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;;
17702122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
17703122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;;
17704122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;;
17705122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;;
17706122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;;
17707122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;;
17708122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;;
17709122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;;
17710122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;;
17711122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;;
17712122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;;
17713122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;;
17714122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;;
17715122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;;
17716122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;;
17717122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;;
17718122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;;
17719122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
17720122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;;
17721122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;;
17722122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;;
17723122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;;
17724122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;;
17725122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;;
17726122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;;
17727122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;;
17728122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;;
17729122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;;
17730122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;;
17731122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;;
17732122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;;
17733122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;;
17734122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;;
17735122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;;
17736122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;;
17737122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;;
17738122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;;
17739122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;;
17740122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;;
17741122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;;
17742122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;;
17743122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;;
17744122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;;
17745122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;;
17746122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;;
17747122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;;
17748122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;;
17749122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;;
17750122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;;
17751122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;;
17752122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;;
17753122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;;
17754122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;;
17755122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;;
17756122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;;
17757122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;;
17758122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;;
17759122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;;
17760122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;;
17761122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;;
17762122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;;
17763122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;;
17764122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;;
17765122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;;
17766122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;;
17767122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;;
17768122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;;
17769122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;;
1777012300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;;
1777112301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;;
1777212302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;;
1777312303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;;
1777412304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
1777512305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;;
1777612306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;;
1777712307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;;
1777812308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;;
1777912309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;;
177801230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;;
177811230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;;
177821230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;;
177831230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;;
177841230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;;
177851230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;;
1778612310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;;
1778712311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;;
1778812312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;;
1778912313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;;
1779012314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;;
1779112315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;;
1779212316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;;
1779312317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
1779412318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;;
1779512319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;;
177961231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;;
177971231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;;
177981231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;;
177991231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;;
178001231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;;
178011231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;;
1780212320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;;
1780312321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;;
1780412322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;;
1780512323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;;
1780612324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;;
1780712325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
1780812326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;;
1780912327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;;
1781012328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;;
1781112329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;;
178121232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;;
178131232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;;
178141232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
178151232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
178161232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;;
178171232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;;
1781812330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;;
1781912331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;;
1782012332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
1782112333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;;
1782212334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;;
1782312335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;;
1782412336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;;
1782512337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;;
1782612338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;;
1782712339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
178281233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;;
178291233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;;
178301233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;;
178311233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;;
178321233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
178331233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;;
1783412340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;;
1783512341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;;
1783612342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;;
1783712343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;;
1783812344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;;
1783912345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;;
1784012346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;;
1784112347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;;
1784212348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;;
1784312349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;;
178441234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;;
178451234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;;
178461234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;;
178471234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;;
178481234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;;
178491234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;;
1785012350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;;
1785112351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;;
1785212352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;;
1785312353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;;
1785412354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;;
1785512355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;;
1785612356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;;
1785712357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;;
1785812358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;;
1785912359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;;
178601235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;;
178611235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
178621235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;;
178631235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;;
178641235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;;
178651235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;;
1786612360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;;
1786712361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;;
1786812362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;;
1786912363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;;
1787012364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;;
1787112365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;;
1787212366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;;
1787312367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;;
1787412368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;;
1787512369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;;
178761236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;;
178771236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;;
178781236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;;
178791236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;;
178801236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;;
1788112400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;;
1788212401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;;
1788312402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;;
1788412403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;;
1788512404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;;
1788612405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;;
1788712406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;;
1788812407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;;
1788912408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;;
1789012409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;;
178911240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;;
178921240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;;
178931240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;;
178941240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;;
178951240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;;
178961240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;;
1789712410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;;
1789812411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;;
1789912412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;;
1790012413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;;
1790112414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;;
1790212415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;;
1790312416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;;
1790412417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;;
1790512418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;;
1790612419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;;
179071241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;;
179081241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;;
179091241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;;
179101241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;;
179111241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;;
179121241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;;
1791312420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;;
1791412421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;;
1791512422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;;
1791612423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;;
1791712424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;;
1791812425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;;
1791912426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;;
1792012427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;;
1792112428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;;
1792212429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;;
179231242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;;
179241242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;;
179251242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;;
179261242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;;
179271242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;;
179281242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
1792912430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;;
1793012431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;;
1793112432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;;
1793212433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;;
1793312434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;;
1793412435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;;
1793512436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;;
1793612437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
1793712438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;;
1793812439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;;
179391243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;;
179401243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;;
179411243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;;
179421243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;;
179431243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;;
179441243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;;
1794512440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;;
1794612441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;;
1794712442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;;
1794812443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;;
1794912444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;;
1795012445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;;
1795112446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;;
1795212447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;;
1795312448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;;
1795412449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;;
179551244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;;
179561244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;;
179571244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;;
179581244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;;
179591244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;;
179601244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;;
1796112450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;;
1796212451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;;
1796312452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;;
1796412453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;
1796512454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;
1796612455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;
1796712456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;;
1796812457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;;
1796912458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;
1797012459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;
179711245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;
179721245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;;
179731245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;;
179741245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;;
179751245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;;
179761245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;;
1797712460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;;
1797812461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;;
1797912462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;;
1798012470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
1798112471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;;
1798212472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;;
1798312473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;;
1798413000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
1798513001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
1798613002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
1798713003;EGYPTIAN HIEROGLYPH A004;Lo;0;L;;;;;N;;;;;
1798813004;EGYPTIAN HIEROGLYPH A005;Lo;0;L;;;;;N;;;;;
1798913005;EGYPTIAN HIEROGLYPH A005A;Lo;0;L;;;;;N;;;;;
1799013006;EGYPTIAN HIEROGLYPH A006;Lo;0;L;;;;;N;;;;;
1799113007;EGYPTIAN HIEROGLYPH A006A;Lo;0;L;;;;;N;;;;;
1799213008;EGYPTIAN HIEROGLYPH A006B;Lo;0;L;;;;;N;;;;;
1799313009;EGYPTIAN HIEROGLYPH A007;Lo;0;L;;;;;N;;;;;
179941300A;EGYPTIAN HIEROGLYPH A008;Lo;0;L;;;;;N;;;;;
179951300B;EGYPTIAN HIEROGLYPH A009;Lo;0;L;;;;;N;;;;;
179961300C;EGYPTIAN HIEROGLYPH A010;Lo;0;L;;;;;N;;;;;
179971300D;EGYPTIAN HIEROGLYPH A011;Lo;0;L;;;;;N;;;;;
179981300E;EGYPTIAN HIEROGLYPH A012;Lo;0;L;;;;;N;;;;;
179991300F;EGYPTIAN HIEROGLYPH A013;Lo;0;L;;;;;N;;;;;
1800013010;EGYPTIAN HIEROGLYPH A014;Lo;0;L;;;;;N;;;;;
1800113011;EGYPTIAN HIEROGLYPH A014A;Lo;0;L;;;;;N;;;;;
1800213012;EGYPTIAN HIEROGLYPH A015;Lo;0;L;;;;;N;;;;;
1800313013;EGYPTIAN HIEROGLYPH A016;Lo;0;L;;;;;N;;;;;
1800413014;EGYPTIAN HIEROGLYPH A017;Lo;0;L;;;;;N;;;;;
1800513015;EGYPTIAN HIEROGLYPH A017A;Lo;0;L;;;;;N;;;;;
1800613016;EGYPTIAN HIEROGLYPH A018;Lo;0;L;;;;;N;;;;;
1800713017;EGYPTIAN HIEROGLYPH A019;Lo;0;L;;;;;N;;;;;
1800813018;EGYPTIAN HIEROGLYPH A020;Lo;0;L;;;;;N;;;;;
1800913019;EGYPTIAN HIEROGLYPH A021;Lo;0;L;;;;;N;;;;;
180101301A;EGYPTIAN HIEROGLYPH A022;Lo;0;L;;;;;N;;;;;
180111301B;EGYPTIAN HIEROGLYPH A023;Lo;0;L;;;;;N;;;;;
180121301C;EGYPTIAN HIEROGLYPH A024;Lo;0;L;;;;;N;;;;;
180131301D;EGYPTIAN HIEROGLYPH A025;Lo;0;L;;;;;N;;;;;
180141301E;EGYPTIAN HIEROGLYPH A026;Lo;0;L;;;;;N;;;;;
180151301F;EGYPTIAN HIEROGLYPH A027;Lo;0;L;;;;;N;;;;;
1801613020;EGYPTIAN HIEROGLYPH A028;Lo;0;L;;;;;N;;;;;
1801713021;EGYPTIAN HIEROGLYPH A029;Lo;0;L;;;;;N;;;;;
1801813022;EGYPTIAN HIEROGLYPH A030;Lo;0;L;;;;;N;;;;;
1801913023;EGYPTIAN HIEROGLYPH A031;Lo;0;L;;;;;N;;;;;
1802013024;EGYPTIAN HIEROGLYPH A032;Lo;0;L;;;;;N;;;;;
1802113025;EGYPTIAN HIEROGLYPH A032A;Lo;0;L;;;;;N;;;;;
1802213026;EGYPTIAN HIEROGLYPH A033;Lo;0;L;;;;;N;;;;;
1802313027;EGYPTIAN HIEROGLYPH A034;Lo;0;L;;;;;N;;;;;
1802413028;EGYPTIAN HIEROGLYPH A035;Lo;0;L;;;;;N;;;;;
1802513029;EGYPTIAN HIEROGLYPH A036;Lo;0;L;;;;;N;;;;;
180261302A;EGYPTIAN HIEROGLYPH A037;Lo;0;L;;;;;N;;;;;
180271302B;EGYPTIAN HIEROGLYPH A038;Lo;0;L;;;;;N;;;;;
180281302C;EGYPTIAN HIEROGLYPH A039;Lo;0;L;;;;;N;;;;;
180291302D;EGYPTIAN HIEROGLYPH A040;Lo;0;L;;;;;N;;;;;
180301302E;EGYPTIAN HIEROGLYPH A040A;Lo;0;L;;;;;N;;;;;
180311302F;EGYPTIAN HIEROGLYPH A041;Lo;0;L;;;;;N;;;;;
1803213030;EGYPTIAN HIEROGLYPH A042;Lo;0;L;;;;;N;;;;;
1803313031;EGYPTIAN HIEROGLYPH A042A;Lo;0;L;;;;;N;;;;;
1803413032;EGYPTIAN HIEROGLYPH A043;Lo;0;L;;;;;N;;;;;
1803513033;EGYPTIAN HIEROGLYPH A043A;Lo;0;L;;;;;N;;;;;
1803613034;EGYPTIAN HIEROGLYPH A044;Lo;0;L;;;;;N;;;;;
1803713035;EGYPTIAN HIEROGLYPH A045;Lo;0;L;;;;;N;;;;;
1803813036;EGYPTIAN HIEROGLYPH A045A;Lo;0;L;;;;;N;;;;;
1803913037;EGYPTIAN HIEROGLYPH A046;Lo;0;L;;;;;N;;;;;
1804013038;EGYPTIAN HIEROGLYPH A047;Lo;0;L;;;;;N;;;;;
1804113039;EGYPTIAN HIEROGLYPH A048;Lo;0;L;;;;;N;;;;;
180421303A;EGYPTIAN HIEROGLYPH A049;Lo;0;L;;;;;N;;;;;
180431303B;EGYPTIAN HIEROGLYPH A050;Lo;0;L;;;;;N;;;;;
180441303C;EGYPTIAN HIEROGLYPH A051;Lo;0;L;;;;;N;;;;;
180451303D;EGYPTIAN HIEROGLYPH A052;Lo;0;L;;;;;N;;;;;
180461303E;EGYPTIAN HIEROGLYPH A053;Lo;0;L;;;;;N;;;;;
180471303F;EGYPTIAN HIEROGLYPH A054;Lo;0;L;;;;;N;;;;;
1804813040;EGYPTIAN HIEROGLYPH A055;Lo;0;L;;;;;N;;;;;
1804913041;EGYPTIAN HIEROGLYPH A056;Lo;0;L;;;;;N;;;;;
1805013042;EGYPTIAN HIEROGLYPH A057;Lo;0;L;;;;;N;;;;;
1805113043;EGYPTIAN HIEROGLYPH A058;Lo;0;L;;;;;N;;;;;
1805213044;EGYPTIAN HIEROGLYPH A059;Lo;0;L;;;;;N;;;;;
1805313045;EGYPTIAN HIEROGLYPH A060;Lo;0;L;;;;;N;;;;;
1805413046;EGYPTIAN HIEROGLYPH A061;Lo;0;L;;;;;N;;;;;
1805513047;EGYPTIAN HIEROGLYPH A062;Lo;0;L;;;;;N;;;;;
1805613048;EGYPTIAN HIEROGLYPH A063;Lo;0;L;;;;;N;;;;;
1805713049;EGYPTIAN HIEROGLYPH A064;Lo;0;L;;;;;N;;;;;
180581304A;EGYPTIAN HIEROGLYPH A065;Lo;0;L;;;;;N;;;;;
180591304B;EGYPTIAN HIEROGLYPH A066;Lo;0;L;;;;;N;;;;;
180601304C;EGYPTIAN HIEROGLYPH A067;Lo;0;L;;;;;N;;;;;
180611304D;EGYPTIAN HIEROGLYPH A068;Lo;0;L;;;;;N;;;;;
180621304E;EGYPTIAN HIEROGLYPH A069;Lo;0;L;;;;;N;;;;;
180631304F;EGYPTIAN HIEROGLYPH A070;Lo;0;L;;;;;N;;;;;
1806413050;EGYPTIAN HIEROGLYPH B001;Lo;0;L;;;;;N;;;;;
1806513051;EGYPTIAN HIEROGLYPH B002;Lo;0;L;;;;;N;;;;;
1806613052;EGYPTIAN HIEROGLYPH B003;Lo;0;L;;;;;N;;;;;
1806713053;EGYPTIAN HIEROGLYPH B004;Lo;0;L;;;;;N;;;;;
1806813054;EGYPTIAN HIEROGLYPH B005;Lo;0;L;;;;;N;;;;;
1806913055;EGYPTIAN HIEROGLYPH B005A;Lo;0;L;;;;;N;;;;;
1807013056;EGYPTIAN HIEROGLYPH B006;Lo;0;L;;;;;N;;;;;
1807113057;EGYPTIAN HIEROGLYPH B007;Lo;0;L;;;;;N;;;;;
1807213058;EGYPTIAN HIEROGLYPH B008;Lo;0;L;;;;;N;;;;;
1807313059;EGYPTIAN HIEROGLYPH B009;Lo;0;L;;;;;N;;;;;
180741305A;EGYPTIAN HIEROGLYPH C001;Lo;0;L;;;;;N;;;;;
180751305B;EGYPTIAN HIEROGLYPH C002;Lo;0;L;;;;;N;;;;;
180761305C;EGYPTIAN HIEROGLYPH C002A;Lo;0;L;;;;;N;;;;;
180771305D;EGYPTIAN HIEROGLYPH C002B;Lo;0;L;;;;;N;;;;;
180781305E;EGYPTIAN HIEROGLYPH C002C;Lo;0;L;;;;;N;;;;;
180791305F;EGYPTIAN HIEROGLYPH C003;Lo;0;L;;;;;N;;;;;
1808013060;EGYPTIAN HIEROGLYPH C004;Lo;0;L;;;;;N;;;;;
1808113061;EGYPTIAN HIEROGLYPH C005;Lo;0;L;;;;;N;;;;;
1808213062;EGYPTIAN HIEROGLYPH C006;Lo;0;L;;;;;N;;;;;
1808313063;EGYPTIAN HIEROGLYPH C007;Lo;0;L;;;;;N;;;;;
1808413064;EGYPTIAN HIEROGLYPH C008;Lo;0;L;;;;;N;;;;;
1808513065;EGYPTIAN HIEROGLYPH C009;Lo;0;L;;;;;N;;;;;
1808613066;EGYPTIAN HIEROGLYPH C010;Lo;0;L;;;;;N;;;;;
1808713067;EGYPTIAN HIEROGLYPH C010A;Lo;0;L;;;;;N;;;;;
1808813068;EGYPTIAN HIEROGLYPH C011;Lo;0;L;;;;;N;;;;;
1808913069;EGYPTIAN HIEROGLYPH C012;Lo;0;L;;;;;N;;;;;
180901306A;EGYPTIAN HIEROGLYPH C013;Lo;0;L;;;;;N;;;;;
180911306B;EGYPTIAN HIEROGLYPH C014;Lo;0;L;;;;;N;;;;;
180921306C;EGYPTIAN HIEROGLYPH C015;Lo;0;L;;;;;N;;;;;
180931306D;EGYPTIAN HIEROGLYPH C016;Lo;0;L;;;;;N;;;;;
180941306E;EGYPTIAN HIEROGLYPH C017;Lo;0;L;;;;;N;;;;;
180951306F;EGYPTIAN HIEROGLYPH C018;Lo;0;L;;;;;N;;;;;
1809613070;EGYPTIAN HIEROGLYPH C019;Lo;0;L;;;;;N;;;;;
1809713071;EGYPTIAN HIEROGLYPH C020;Lo;0;L;;;;;N;;;;;
1809813072;EGYPTIAN HIEROGLYPH C021;Lo;0;L;;;;;N;;;;;
1809913073;EGYPTIAN HIEROGLYPH C022;Lo;0;L;;;;;N;;;;;
1810013074;EGYPTIAN HIEROGLYPH C023;Lo;0;L;;;;;N;;;;;
1810113075;EGYPTIAN HIEROGLYPH C024;Lo;0;L;;;;;N;;;;;
1810213076;EGYPTIAN HIEROGLYPH D001;Lo;0;L;;;;;N;;;;;
1810313077;EGYPTIAN HIEROGLYPH D002;Lo;0;L;;;;;N;;;;;
1810413078;EGYPTIAN HIEROGLYPH D003;Lo;0;L;;;;;N;;;;;
1810513079;EGYPTIAN HIEROGLYPH D004;Lo;0;L;;;;;N;;;;;
181061307A;EGYPTIAN HIEROGLYPH D005;Lo;0;L;;;;;N;;;;;
181071307B;EGYPTIAN HIEROGLYPH D006;Lo;0;L;;;;;N;;;;;
181081307C;EGYPTIAN HIEROGLYPH D007;Lo;0;L;;;;;N;;;;;
181091307D;EGYPTIAN HIEROGLYPH D008;Lo;0;L;;;;;N;;;;;
181101307E;EGYPTIAN HIEROGLYPH D008A;Lo;0;L;;;;;N;;;;;
181111307F;EGYPTIAN HIEROGLYPH D009;Lo;0;L;;;;;N;;;;;
1811213080;EGYPTIAN HIEROGLYPH D010;Lo;0;L;;;;;N;;;;;
1811313081;EGYPTIAN HIEROGLYPH D011;Lo;0;L;;;;;N;;;;;
1811413082;EGYPTIAN HIEROGLYPH D012;Lo;0;L;;;;;N;;;;;
1811513083;EGYPTIAN HIEROGLYPH D013;Lo;0;L;;;;;N;;;;;
1811613084;EGYPTIAN HIEROGLYPH D014;Lo;0;L;;;;;N;;;;;
1811713085;EGYPTIAN HIEROGLYPH D015;Lo;0;L;;;;;N;;;;;
1811813086;EGYPTIAN HIEROGLYPH D016;Lo;0;L;;;;;N;;;;;
1811913087;EGYPTIAN HIEROGLYPH D017;Lo;0;L;;;;;N;;;;;
1812013088;EGYPTIAN HIEROGLYPH D018;Lo;0;L;;;;;N;;;;;
1812113089;EGYPTIAN HIEROGLYPH D019;Lo;0;L;;;;;N;;;;;
181221308A;EGYPTIAN HIEROGLYPH D020;Lo;0;L;;;;;N;;;;;
181231308B;EGYPTIAN HIEROGLYPH D021;Lo;0;L;;;;;N;;;;;
181241308C;EGYPTIAN HIEROGLYPH D022;Lo;0;L;;;;;N;;;;;
181251308D;EGYPTIAN HIEROGLYPH D023;Lo;0;L;;;;;N;;;;;
181261308E;EGYPTIAN HIEROGLYPH D024;Lo;0;L;;;;;N;;;;;
181271308F;EGYPTIAN HIEROGLYPH D025;Lo;0;L;;;;;N;;;;;
1812813090;EGYPTIAN HIEROGLYPH D026;Lo;0;L;;;;;N;;;;;
1812913091;EGYPTIAN HIEROGLYPH D027;Lo;0;L;;;;;N;;;;;
1813013092;EGYPTIAN HIEROGLYPH D027A;Lo;0;L;;;;;N;;;;;
1813113093;EGYPTIAN HIEROGLYPH D028;Lo;0;L;;;;;N;;;;;
1813213094;EGYPTIAN HIEROGLYPH D029;Lo;0;L;;;;;N;;;;;
1813313095;EGYPTIAN HIEROGLYPH D030;Lo;0;L;;;;;N;;;;;
1813413096;EGYPTIAN HIEROGLYPH D031;Lo;0;L;;;;;N;;;;;
1813513097;EGYPTIAN HIEROGLYPH D031A;Lo;0;L;;;;;N;;;;;
1813613098;EGYPTIAN HIEROGLYPH D032;Lo;0;L;;;;;N;;;;;
1813713099;EGYPTIAN HIEROGLYPH D033;Lo;0;L;;;;;N;;;;;
181381309A;EGYPTIAN HIEROGLYPH D034;Lo;0;L;;;;;N;;;;;
181391309B;EGYPTIAN HIEROGLYPH D034A;Lo;0;L;;;;;N;;;;;
181401309C;EGYPTIAN HIEROGLYPH D035;Lo;0;L;;;;;N;;;;;
181411309D;EGYPTIAN HIEROGLYPH D036;Lo;0;L;;;;;N;;;;;
181421309E;EGYPTIAN HIEROGLYPH D037;Lo;0;L;;;;;N;;;;;
181431309F;EGYPTIAN HIEROGLYPH D038;Lo;0;L;;;;;N;;;;;
18144130A0;EGYPTIAN HIEROGLYPH D039;Lo;0;L;;;;;N;;;;;
18145130A1;EGYPTIAN HIEROGLYPH D040;Lo;0;L;;;;;N;;;;;
18146130A2;EGYPTIAN HIEROGLYPH D041;Lo;0;L;;;;;N;;;;;
18147130A3;EGYPTIAN HIEROGLYPH D042;Lo;0;L;;;;;N;;;;;
18148130A4;EGYPTIAN HIEROGLYPH D043;Lo;0;L;;;;;N;;;;;
18149130A5;EGYPTIAN HIEROGLYPH D044;Lo;0;L;;;;;N;;;;;
18150130A6;EGYPTIAN HIEROGLYPH D045;Lo;0;L;;;;;N;;;;;
18151130A7;EGYPTIAN HIEROGLYPH D046;Lo;0;L;;;;;N;;;;;
18152130A8;EGYPTIAN HIEROGLYPH D046A;Lo;0;L;;;;;N;;;;;
18153130A9;EGYPTIAN HIEROGLYPH D047;Lo;0;L;;;;;N;;;;;
18154130AA;EGYPTIAN HIEROGLYPH D048;Lo;0;L;;;;;N;;;;;
18155130AB;EGYPTIAN HIEROGLYPH D048A;Lo;0;L;;;;;N;;;;;
18156130AC;EGYPTIAN HIEROGLYPH D049;Lo;0;L;;;;;N;;;;;
18157130AD;EGYPTIAN HIEROGLYPH D050;Lo;0;L;;;;;N;;;;;
18158130AE;EGYPTIAN HIEROGLYPH D050A;Lo;0;L;;;;;N;;;;;
18159130AF;EGYPTIAN HIEROGLYPH D050B;Lo;0;L;;;;;N;;;;;
18160130B0;EGYPTIAN HIEROGLYPH D050C;Lo;0;L;;;;;N;;;;;
18161130B1;EGYPTIAN HIEROGLYPH D050D;Lo;0;L;;;;;N;;;;;
18162130B2;EGYPTIAN HIEROGLYPH D050E;Lo;0;L;;;;;N;;;;;
18163130B3;EGYPTIAN HIEROGLYPH D050F;Lo;0;L;;;;;N;;;;;
18164130B4;EGYPTIAN HIEROGLYPH D050G;Lo;0;L;;;;;N;;;;;
18165130B5;EGYPTIAN HIEROGLYPH D050H;Lo;0;L;;;;;N;;;;;
18166130B6;EGYPTIAN HIEROGLYPH D050I;Lo;0;L;;;;;N;;;;;
18167130B7;EGYPTIAN HIEROGLYPH D051;Lo;0;L;;;;;N;;;;;
18168130B8;EGYPTIAN HIEROGLYPH D052;Lo;0;L;;;;;N;;;;;
18169130B9;EGYPTIAN HIEROGLYPH D052A;Lo;0;L;;;;;N;;;;;
18170130BA;EGYPTIAN HIEROGLYPH D053;Lo;0;L;;;;;N;;;;;
18171130BB;EGYPTIAN HIEROGLYPH D054;Lo;0;L;;;;;N;;;;;
18172130BC;EGYPTIAN HIEROGLYPH D054A;Lo;0;L;;;;;N;;;;;
18173130BD;EGYPTIAN HIEROGLYPH D055;Lo;0;L;;;;;N;;;;;
18174130BE;EGYPTIAN HIEROGLYPH D056;Lo;0;L;;;;;N;;;;;
18175130BF;EGYPTIAN HIEROGLYPH D057;Lo;0;L;;;;;N;;;;;
18176130C0;EGYPTIAN HIEROGLYPH D058;Lo;0;L;;;;;N;;;;;
18177130C1;EGYPTIAN HIEROGLYPH D059;Lo;0;L;;;;;N;;;;;
18178130C2;EGYPTIAN HIEROGLYPH D060;Lo;0;L;;;;;N;;;;;
18179130C3;EGYPTIAN HIEROGLYPH D061;Lo;0;L;;;;;N;;;;;
18180130C4;EGYPTIAN HIEROGLYPH D062;Lo;0;L;;;;;N;;;;;
18181130C5;EGYPTIAN HIEROGLYPH D063;Lo;0;L;;;;;N;;;;;
18182130C6;EGYPTIAN HIEROGLYPH D064;Lo;0;L;;;;;N;;;;;
18183130C7;EGYPTIAN HIEROGLYPH D065;Lo;0;L;;;;;N;;;;;
18184130C8;EGYPTIAN HIEROGLYPH D066;Lo;0;L;;;;;N;;;;;
18185130C9;EGYPTIAN HIEROGLYPH D067;Lo;0;L;;;;;N;;;;;
18186130CA;EGYPTIAN HIEROGLYPH D067A;Lo;0;L;;;;;N;;;;;
18187130CB;EGYPTIAN HIEROGLYPH D067B;Lo;0;L;;;;;N;;;;;
18188130CC;EGYPTIAN HIEROGLYPH D067C;Lo;0;L;;;;;N;;;;;
18189130CD;EGYPTIAN HIEROGLYPH D067D;Lo;0;L;;;;;N;;;;;
18190130CE;EGYPTIAN HIEROGLYPH D067E;Lo;0;L;;;;;N;;;;;
18191130CF;EGYPTIAN HIEROGLYPH D067F;Lo;0;L;;;;;N;;;;;
18192130D0;EGYPTIAN HIEROGLYPH D067G;Lo;0;L;;;;;N;;;;;
18193130D1;EGYPTIAN HIEROGLYPH D067H;Lo;0;L;;;;;N;;;;;
18194130D2;EGYPTIAN HIEROGLYPH E001;Lo;0;L;;;;;N;;;;;
18195130D3;EGYPTIAN HIEROGLYPH E002;Lo;0;L;;;;;N;;;;;
18196130D4;EGYPTIAN HIEROGLYPH E003;Lo;0;L;;;;;N;;;;;
18197130D5;EGYPTIAN HIEROGLYPH E004;Lo;0;L;;;;;N;;;;;
18198130D6;EGYPTIAN HIEROGLYPH E005;Lo;0;L;;;;;N;;;;;
18199130D7;EGYPTIAN HIEROGLYPH E006;Lo;0;L;;;;;N;;;;;
18200130D8;EGYPTIAN HIEROGLYPH E007;Lo;0;L;;;;;N;;;;;
18201130D9;EGYPTIAN HIEROGLYPH E008;Lo;0;L;;;;;N;;;;;
18202130DA;EGYPTIAN HIEROGLYPH E008A;Lo;0;L;;;;;N;;;;;
18203130DB;EGYPTIAN HIEROGLYPH E009;Lo;0;L;;;;;N;;;;;
18204130DC;EGYPTIAN HIEROGLYPH E009A;Lo;0;L;;;;;N;;;;;
18205130DD;EGYPTIAN HIEROGLYPH E010;Lo;0;L;;;;;N;;;;;
18206130DE;EGYPTIAN HIEROGLYPH E011;Lo;0;L;;;;;N;;;;;
18207130DF;EGYPTIAN HIEROGLYPH E012;Lo;0;L;;;;;N;;;;;
18208130E0;EGYPTIAN HIEROGLYPH E013;Lo;0;L;;;;;N;;;;;
18209130E1;EGYPTIAN HIEROGLYPH E014;Lo;0;L;;;;;N;;;;;
18210130E2;EGYPTIAN HIEROGLYPH E015;Lo;0;L;;;;;N;;;;;
18211130E3;EGYPTIAN HIEROGLYPH E016;Lo;0;L;;;;;N;;;;;
18212130E4;EGYPTIAN HIEROGLYPH E016A;Lo;0;L;;;;;N;;;;;
18213130E5;EGYPTIAN HIEROGLYPH E017;Lo;0;L;;;;;N;;;;;
18214130E6;EGYPTIAN HIEROGLYPH E017A;Lo;0;L;;;;;N;;;;;
18215130E7;EGYPTIAN HIEROGLYPH E018;Lo;0;L;;;;;N;;;;;
18216130E8;EGYPTIAN HIEROGLYPH E019;Lo;0;L;;;;;N;;;;;
18217130E9;EGYPTIAN HIEROGLYPH E020;Lo;0;L;;;;;N;;;;;
18218130EA;EGYPTIAN HIEROGLYPH E020A;Lo;0;L;;;;;N;;;;;
18219130EB;EGYPTIAN HIEROGLYPH E021;Lo;0;L;;;;;N;;;;;
18220130EC;EGYPTIAN HIEROGLYPH E022;Lo;0;L;;;;;N;;;;;
18221130ED;EGYPTIAN HIEROGLYPH E023;Lo;0;L;;;;;N;;;;;
18222130EE;EGYPTIAN HIEROGLYPH E024;Lo;0;L;;;;;N;;;;;
18223130EF;EGYPTIAN HIEROGLYPH E025;Lo;0;L;;;;;N;;;;;
18224130F0;EGYPTIAN HIEROGLYPH E026;Lo;0;L;;;;;N;;;;;
18225130F1;EGYPTIAN HIEROGLYPH E027;Lo;0;L;;;;;N;;;;;
18226130F2;EGYPTIAN HIEROGLYPH E028;Lo;0;L;;;;;N;;;;;
18227130F3;EGYPTIAN HIEROGLYPH E028A;Lo;0;L;;;;;N;;;;;
18228130F4;EGYPTIAN HIEROGLYPH E029;Lo;0;L;;;;;N;;;;;
18229130F5;EGYPTIAN HIEROGLYPH E030;Lo;0;L;;;;;N;;;;;
18230130F6;EGYPTIAN HIEROGLYPH E031;Lo;0;L;;;;;N;;;;;
18231130F7;EGYPTIAN HIEROGLYPH E032;Lo;0;L;;;;;N;;;;;
18232130F8;EGYPTIAN HIEROGLYPH E033;Lo;0;L;;;;;N;;;;;
18233130F9;EGYPTIAN HIEROGLYPH E034;Lo;0;L;;;;;N;;;;;
18234130FA;EGYPTIAN HIEROGLYPH E034A;Lo;0;L;;;;;N;;;;;
18235130FB;EGYPTIAN HIEROGLYPH E036;Lo;0;L;;;;;N;;;;;
18236130FC;EGYPTIAN HIEROGLYPH E037;Lo;0;L;;;;;N;;;;;
18237130FD;EGYPTIAN HIEROGLYPH E038;Lo;0;L;;;;;N;;;;;
18238130FE;EGYPTIAN HIEROGLYPH F001;Lo;0;L;;;;;N;;;;;
18239130FF;EGYPTIAN HIEROGLYPH F001A;Lo;0;L;;;;;N;;;;;
1824013100;EGYPTIAN HIEROGLYPH F002;Lo;0;L;;;;;N;;;;;
1824113101;EGYPTIAN HIEROGLYPH F003;Lo;0;L;;;;;N;;;;;
1824213102;EGYPTIAN HIEROGLYPH F004;Lo;0;L;;;;;N;;;;;
1824313103;EGYPTIAN HIEROGLYPH F005;Lo;0;L;;;;;N;;;;;
1824413104;EGYPTIAN HIEROGLYPH F006;Lo;0;L;;;;;N;;;;;
1824513105;EGYPTIAN HIEROGLYPH F007;Lo;0;L;;;;;N;;;;;
1824613106;EGYPTIAN HIEROGLYPH F008;Lo;0;L;;;;;N;;;;;
1824713107;EGYPTIAN HIEROGLYPH F009;Lo;0;L;;;;;N;;;;;
1824813108;EGYPTIAN HIEROGLYPH F010;Lo;0;L;;;;;N;;;;;
1824913109;EGYPTIAN HIEROGLYPH F011;Lo;0;L;;;;;N;;;;;
182501310A;EGYPTIAN HIEROGLYPH F012;Lo;0;L;;;;;N;;;;;
182511310B;EGYPTIAN HIEROGLYPH F013;Lo;0;L;;;;;N;;;;;
182521310C;EGYPTIAN HIEROGLYPH F013A;Lo;0;L;;;;;N;;;;;
182531310D;EGYPTIAN HIEROGLYPH F014;Lo;0;L;;;;;N;;;;;
182541310E;EGYPTIAN HIEROGLYPH F015;Lo;0;L;;;;;N;;;;;
182551310F;EGYPTIAN HIEROGLYPH F016;Lo;0;L;;;;;N;;;;;
1825613110;EGYPTIAN HIEROGLYPH F017;Lo;0;L;;;;;N;;;;;
1825713111;EGYPTIAN HIEROGLYPH F018;Lo;0;L;;;;;N;;;;;
1825813112;EGYPTIAN HIEROGLYPH F019;Lo;0;L;;;;;N;;;;;
1825913113;EGYPTIAN HIEROGLYPH F020;Lo;0;L;;;;;N;;;;;
1826013114;EGYPTIAN HIEROGLYPH F021;Lo;0;L;;;;;N;;;;;
1826113115;EGYPTIAN HIEROGLYPH F021A;Lo;0;L;;;;;N;;;;;
1826213116;EGYPTIAN HIEROGLYPH F022;Lo;0;L;;;;;N;;;;;
1826313117;EGYPTIAN HIEROGLYPH F023;Lo;0;L;;;;;N;;;;;
1826413118;EGYPTIAN HIEROGLYPH F024;Lo;0;L;;;;;N;;;;;
1826513119;EGYPTIAN HIEROGLYPH F025;Lo;0;L;;;;;N;;;;;
182661311A;EGYPTIAN HIEROGLYPH F026;Lo;0;L;;;;;N;;;;;
182671311B;EGYPTIAN HIEROGLYPH F027;Lo;0;L;;;;;N;;;;;
182681311C;EGYPTIAN HIEROGLYPH F028;Lo;0;L;;;;;N;;;;;
182691311D;EGYPTIAN HIEROGLYPH F029;Lo;0;L;;;;;N;;;;;
182701311E;EGYPTIAN HIEROGLYPH F030;Lo;0;L;;;;;N;;;;;
182711311F;EGYPTIAN HIEROGLYPH F031;Lo;0;L;;;;;N;;;;;
1827213120;EGYPTIAN HIEROGLYPH F031A;Lo;0;L;;;;;N;;;;;
1827313121;EGYPTIAN HIEROGLYPH F032;Lo;0;L;;;;;N;;;;;
1827413122;EGYPTIAN HIEROGLYPH F033;Lo;0;L;;;;;N;;;;;
1827513123;EGYPTIAN HIEROGLYPH F034;Lo;0;L;;;;;N;;;;;
1827613124;EGYPTIAN HIEROGLYPH F035;Lo;0;L;;;;;N;;;;;
1827713125;EGYPTIAN HIEROGLYPH F036;Lo;0;L;;;;;N;;;;;
1827813126;EGYPTIAN HIEROGLYPH F037;Lo;0;L;;;;;N;;;;;
1827913127;EGYPTIAN HIEROGLYPH F037A;Lo;0;L;;;;;N;;;;;
1828013128;EGYPTIAN HIEROGLYPH F038;Lo;0;L;;;;;N;;;;;
1828113129;EGYPTIAN HIEROGLYPH F038A;Lo;0;L;;;;;N;;;;;
182821312A;EGYPTIAN HIEROGLYPH F039;Lo;0;L;;;;;N;;;;;
182831312B;EGYPTIAN HIEROGLYPH F040;Lo;0;L;;;;;N;;;;;
182841312C;EGYPTIAN HIEROGLYPH F041;Lo;0;L;;;;;N;;;;;
182851312D;EGYPTIAN HIEROGLYPH F042;Lo;0;L;;;;;N;;;;;
182861312E;EGYPTIAN HIEROGLYPH F043;Lo;0;L;;;;;N;;;;;
182871312F;EGYPTIAN HIEROGLYPH F044;Lo;0;L;;;;;N;;;;;
1828813130;EGYPTIAN HIEROGLYPH F045;Lo;0;L;;;;;N;;;;;
1828913131;EGYPTIAN HIEROGLYPH F045A;Lo;0;L;;;;;N;;;;;
1829013132;EGYPTIAN HIEROGLYPH F046;Lo;0;L;;;;;N;;;;;
1829113133;EGYPTIAN HIEROGLYPH F046A;Lo;0;L;;;;;N;;;;;
1829213134;EGYPTIAN HIEROGLYPH F047;Lo;0;L;;;;;N;;;;;
1829313135;EGYPTIAN HIEROGLYPH F047A;Lo;0;L;;;;;N;;;;;
1829413136;EGYPTIAN HIEROGLYPH F048;Lo;0;L;;;;;N;;;;;
1829513137;EGYPTIAN HIEROGLYPH F049;Lo;0;L;;;;;N;;;;;
1829613138;EGYPTIAN HIEROGLYPH F050;Lo;0;L;;;;;N;;;;;
1829713139;EGYPTIAN HIEROGLYPH F051;Lo;0;L;;;;;N;;;;;
182981313A;EGYPTIAN HIEROGLYPH F051A;Lo;0;L;;;;;N;;;;;
182991313B;EGYPTIAN HIEROGLYPH F051B;Lo;0;L;;;;;N;;;;;
183001313C;EGYPTIAN HIEROGLYPH F051C;Lo;0;L;;;;;N;;;;;
183011313D;EGYPTIAN HIEROGLYPH F052;Lo;0;L;;;;;N;;;;;
183021313E;EGYPTIAN HIEROGLYPH F053;Lo;0;L;;;;;N;;;;;
183031313F;EGYPTIAN HIEROGLYPH G001;Lo;0;L;;;;;N;;;;;
1830413140;EGYPTIAN HIEROGLYPH G002;Lo;0;L;;;;;N;;;;;
1830513141;EGYPTIAN HIEROGLYPH G003;Lo;0;L;;;;;N;;;;;
1830613142;EGYPTIAN HIEROGLYPH G004;Lo;0;L;;;;;N;;;;;
1830713143;EGYPTIAN HIEROGLYPH G005;Lo;0;L;;;;;N;;;;;
1830813144;EGYPTIAN HIEROGLYPH G006;Lo;0;L;;;;;N;;;;;
1830913145;EGYPTIAN HIEROGLYPH G006A;Lo;0;L;;;;;N;;;;;
1831013146;EGYPTIAN HIEROGLYPH G007;Lo;0;L;;;;;N;;;;;
1831113147;EGYPTIAN HIEROGLYPH G007A;Lo;0;L;;;;;N;;;;;
1831213148;EGYPTIAN HIEROGLYPH G007B;Lo;0;L;;;;;N;;;;;
1831313149;EGYPTIAN HIEROGLYPH G008;Lo;0;L;;;;;N;;;;;
183141314A;EGYPTIAN HIEROGLYPH G009;Lo;0;L;;;;;N;;;;;
183151314B;EGYPTIAN HIEROGLYPH G010;Lo;0;L;;;;;N;;;;;
183161314C;EGYPTIAN HIEROGLYPH G011;Lo;0;L;;;;;N;;;;;
183171314D;EGYPTIAN HIEROGLYPH G011A;Lo;0;L;;;;;N;;;;;
183181314E;EGYPTIAN HIEROGLYPH G012;Lo;0;L;;;;;N;;;;;
183191314F;EGYPTIAN HIEROGLYPH G013;Lo;0;L;;;;;N;;;;;
1832013150;EGYPTIAN HIEROGLYPH G014;Lo;0;L;;;;;N;;;;;
1832113151;EGYPTIAN HIEROGLYPH G015;Lo;0;L;;;;;N;;;;;
1832213152;EGYPTIAN HIEROGLYPH G016;Lo;0;L;;;;;N;;;;;
1832313153;EGYPTIAN HIEROGLYPH G017;Lo;0;L;;;;;N;;;;;
1832413154;EGYPTIAN HIEROGLYPH G018;Lo;0;L;;;;;N;;;;;
1832513155;EGYPTIAN HIEROGLYPH G019;Lo;0;L;;;;;N;;;;;
1832613156;EGYPTIAN HIEROGLYPH G020;Lo;0;L;;;;;N;;;;;
1832713157;EGYPTIAN HIEROGLYPH G020A;Lo;0;L;;;;;N;;;;;
1832813158;EGYPTIAN HIEROGLYPH G021;Lo;0;L;;;;;N;;;;;
1832913159;EGYPTIAN HIEROGLYPH G022;Lo;0;L;;;;;N;;;;;
183301315A;EGYPTIAN HIEROGLYPH G023;Lo;0;L;;;;;N;;;;;
183311315B;EGYPTIAN HIEROGLYPH G024;Lo;0;L;;;;;N;;;;;
183321315C;EGYPTIAN HIEROGLYPH G025;Lo;0;L;;;;;N;;;;;
183331315D;EGYPTIAN HIEROGLYPH G026;Lo;0;L;;;;;N;;;;;
183341315E;EGYPTIAN HIEROGLYPH G026A;Lo;0;L;;;;;N;;;;;
183351315F;EGYPTIAN HIEROGLYPH G027;Lo;0;L;;;;;N;;;;;
1833613160;EGYPTIAN HIEROGLYPH G028;Lo;0;L;;;;;N;;;;;
1833713161;EGYPTIAN HIEROGLYPH G029;Lo;0;L;;;;;N;;;;;
1833813162;EGYPTIAN HIEROGLYPH G030;Lo;0;L;;;;;N;;;;;
1833913163;EGYPTIAN HIEROGLYPH G031;Lo;0;L;;;;;N;;;;;
1834013164;EGYPTIAN HIEROGLYPH G032;Lo;0;L;;;;;N;;;;;
1834113165;EGYPTIAN HIEROGLYPH G033;Lo;0;L;;;;;N;;;;;
1834213166;EGYPTIAN HIEROGLYPH G034;Lo;0;L;;;;;N;;;;;
1834313167;EGYPTIAN HIEROGLYPH G035;Lo;0;L;;;;;N;;;;;
1834413168;EGYPTIAN HIEROGLYPH G036;Lo;0;L;;;;;N;;;;;
1834513169;EGYPTIAN HIEROGLYPH G036A;Lo;0;L;;;;;N;;;;;
183461316A;EGYPTIAN HIEROGLYPH G037;Lo;0;L;;;;;N;;;;;
183471316B;EGYPTIAN HIEROGLYPH G037A;Lo;0;L;;;;;N;;;;;
183481316C;EGYPTIAN HIEROGLYPH G038;Lo;0;L;;;;;N;;;;;
183491316D;EGYPTIAN HIEROGLYPH G039;Lo;0;L;;;;;N;;;;;
183501316E;EGYPTIAN HIEROGLYPH G040;Lo;0;L;;;;;N;;;;;
183511316F;EGYPTIAN HIEROGLYPH G041;Lo;0;L;;;;;N;;;;;
1835213170;EGYPTIAN HIEROGLYPH G042;Lo;0;L;;;;;N;;;;;
1835313171;EGYPTIAN HIEROGLYPH G043;Lo;0;L;;;;;N;;;;;
1835413172;EGYPTIAN HIEROGLYPH G043A;Lo;0;L;;;;;N;;;;;
1835513173;EGYPTIAN HIEROGLYPH G044;Lo;0;L;;;;;N;;;;;
1835613174;EGYPTIAN HIEROGLYPH G045;Lo;0;L;;;;;N;;;;;
1835713175;EGYPTIAN HIEROGLYPH G045A;Lo;0;L;;;;;N;;;;;
1835813176;EGYPTIAN HIEROGLYPH G046;Lo;0;L;;;;;N;;;;;
1835913177;EGYPTIAN HIEROGLYPH G047;Lo;0;L;;;;;N;;;;;
1836013178;EGYPTIAN HIEROGLYPH G048;Lo;0;L;;;;;N;;;;;
1836113179;EGYPTIAN HIEROGLYPH G049;Lo;0;L;;;;;N;;;;;
183621317A;EGYPTIAN HIEROGLYPH G050;Lo;0;L;;;;;N;;;;;
183631317B;EGYPTIAN HIEROGLYPH G051;Lo;0;L;;;;;N;;;;;
183641317C;EGYPTIAN HIEROGLYPH G052;Lo;0;L;;;;;N;;;;;
183651317D;EGYPTIAN HIEROGLYPH G053;Lo;0;L;;;;;N;;;;;
183661317E;EGYPTIAN HIEROGLYPH G054;Lo;0;L;;;;;N;;;;;
183671317F;EGYPTIAN HIEROGLYPH H001;Lo;0;L;;;;;N;;;;;
1836813180;EGYPTIAN HIEROGLYPH H002;Lo;0;L;;;;;N;;;;;
1836913181;EGYPTIAN HIEROGLYPH H003;Lo;0;L;;;;;N;;;;;
1837013182;EGYPTIAN HIEROGLYPH H004;Lo;0;L;;;;;N;;;;;
1837113183;EGYPTIAN HIEROGLYPH H005;Lo;0;L;;;;;N;;;;;
1837213184;EGYPTIAN HIEROGLYPH H006;Lo;0;L;;;;;N;;;;;
1837313185;EGYPTIAN HIEROGLYPH H006A;Lo;0;L;;;;;N;;;;;
1837413186;EGYPTIAN HIEROGLYPH H007;Lo;0;L;;;;;N;;;;;
1837513187;EGYPTIAN HIEROGLYPH H008;Lo;0;L;;;;;N;;;;;
1837613188;EGYPTIAN HIEROGLYPH I001;Lo;0;L;;;;;N;;;;;
1837713189;EGYPTIAN HIEROGLYPH I002;Lo;0;L;;;;;N;;;;;
183781318A;EGYPTIAN HIEROGLYPH I003;Lo;0;L;;;;;N;;;;;
183791318B;EGYPTIAN HIEROGLYPH I004;Lo;0;L;;;;;N;;;;;
183801318C;EGYPTIAN HIEROGLYPH I005;Lo;0;L;;;;;N;;;;;
183811318D;EGYPTIAN HIEROGLYPH I005A;Lo;0;L;;;;;N;;;;;
183821318E;EGYPTIAN HIEROGLYPH I006;Lo;0;L;;;;;N;;;;;
183831318F;EGYPTIAN HIEROGLYPH I007;Lo;0;L;;;;;N;;;;;
1838413190;EGYPTIAN HIEROGLYPH I008;Lo;0;L;;;;;N;;;;;
1838513191;EGYPTIAN HIEROGLYPH I009;Lo;0;L;;;;;N;;;;;
1838613192;EGYPTIAN HIEROGLYPH I009A;Lo;0;L;;;;;N;;;;;
1838713193;EGYPTIAN HIEROGLYPH I010;Lo;0;L;;;;;N;;;;;
1838813194;EGYPTIAN HIEROGLYPH I010A;Lo;0;L;;;;;N;;;;;
1838913195;EGYPTIAN HIEROGLYPH I011;Lo;0;L;;;;;N;;;;;
1839013196;EGYPTIAN HIEROGLYPH I011A;Lo;0;L;;;;;N;;;;;
1839113197;EGYPTIAN HIEROGLYPH I012;Lo;0;L;;;;;N;;;;;
1839213198;EGYPTIAN HIEROGLYPH I013;Lo;0;L;;;;;N;;;;;
1839313199;EGYPTIAN HIEROGLYPH I014;Lo;0;L;;;;;N;;;;;
183941319A;EGYPTIAN HIEROGLYPH I015;Lo;0;L;;;;;N;;;;;
183951319B;EGYPTIAN HIEROGLYPH K001;Lo;0;L;;;;;N;;;;;
183961319C;EGYPTIAN HIEROGLYPH K002;Lo;0;L;;;;;N;;;;;
183971319D;EGYPTIAN HIEROGLYPH K003;Lo;0;L;;;;;N;;;;;
183981319E;EGYPTIAN HIEROGLYPH K004;Lo;0;L;;;;;N;;;;;
183991319F;EGYPTIAN HIEROGLYPH K005;Lo;0;L;;;;;N;;;;;
18400131A0;EGYPTIAN HIEROGLYPH K006;Lo;0;L;;;;;N;;;;;
18401131A1;EGYPTIAN HIEROGLYPH K007;Lo;0;L;;;;;N;;;;;
18402131A2;EGYPTIAN HIEROGLYPH K008;Lo;0;L;;;;;N;;;;;
18403131A3;EGYPTIAN HIEROGLYPH L001;Lo;0;L;;;;;N;;;;;
18404131A4;EGYPTIAN HIEROGLYPH L002;Lo;0;L;;;;;N;;;;;
18405131A5;EGYPTIAN HIEROGLYPH L002A;Lo;0;L;;;;;N;;;;;
18406131A6;EGYPTIAN HIEROGLYPH L003;Lo;0;L;;;;;N;;;;;
18407131A7;EGYPTIAN HIEROGLYPH L004;Lo;0;L;;;;;N;;;;;
18408131A8;EGYPTIAN HIEROGLYPH L005;Lo;0;L;;;;;N;;;;;
18409131A9;EGYPTIAN HIEROGLYPH L006;Lo;0;L;;;;;N;;;;;
18410131AA;EGYPTIAN HIEROGLYPH L006A;Lo;0;L;;;;;N;;;;;
18411131AB;EGYPTIAN HIEROGLYPH L007;Lo;0;L;;;;;N;;;;;
18412131AC;EGYPTIAN HIEROGLYPH L008;Lo;0;L;;;;;N;;;;;
18413131AD;EGYPTIAN HIEROGLYPH M001;Lo;0;L;;;;;N;;;;;
18414131AE;EGYPTIAN HIEROGLYPH M001A;Lo;0;L;;;;;N;;;;;
18415131AF;EGYPTIAN HIEROGLYPH M001B;Lo;0;L;;;;;N;;;;;
18416131B0;EGYPTIAN HIEROGLYPH M002;Lo;0;L;;;;;N;;;;;
18417131B1;EGYPTIAN HIEROGLYPH M003;Lo;0;L;;;;;N;;;;;
18418131B2;EGYPTIAN HIEROGLYPH M003A;Lo;0;L;;;;;N;;;;;
18419131B3;EGYPTIAN HIEROGLYPH M004;Lo;0;L;;;;;N;;;;;
18420131B4;EGYPTIAN HIEROGLYPH M005;Lo;0;L;;;;;N;;;;;
18421131B5;EGYPTIAN HIEROGLYPH M006;Lo;0;L;;;;;N;;;;;
18422131B6;EGYPTIAN HIEROGLYPH M007;Lo;0;L;;;;;N;;;;;
18423131B7;EGYPTIAN HIEROGLYPH M008;Lo;0;L;;;;;N;;;;;
18424131B8;EGYPTIAN HIEROGLYPH M009;Lo;0;L;;;;;N;;;;;
18425131B9;EGYPTIAN HIEROGLYPH M010;Lo;0;L;;;;;N;;;;;
18426131BA;EGYPTIAN HIEROGLYPH M010A;Lo;0;L;;;;;N;;;;;
18427131BB;EGYPTIAN HIEROGLYPH M011;Lo;0;L;;;;;N;;;;;
18428131BC;EGYPTIAN HIEROGLYPH M012;Lo;0;L;;;;;N;;;;;
18429131BD;EGYPTIAN HIEROGLYPH M012A;Lo;0;L;;;;;N;;;;;
18430131BE;EGYPTIAN HIEROGLYPH M012B;Lo;0;L;;;;;N;;;;;
18431131BF;EGYPTIAN HIEROGLYPH M012C;Lo;0;L;;;;;N;;;;;
18432131C0;EGYPTIAN HIEROGLYPH M012D;Lo;0;L;;;;;N;;;;;
18433131C1;EGYPTIAN HIEROGLYPH M012E;Lo;0;L;;;;;N;;;;;
18434131C2;EGYPTIAN HIEROGLYPH M012F;Lo;0;L;;;;;N;;;;;
18435131C3;EGYPTIAN HIEROGLYPH M012G;Lo;0;L;;;;;N;;;;;
18436131C4;EGYPTIAN HIEROGLYPH M012H;Lo;0;L;;;;;N;;;;;
18437131C5;EGYPTIAN HIEROGLYPH M013;Lo;0;L;;;;;N;;;;;
18438131C6;EGYPTIAN HIEROGLYPH M014;Lo;0;L;;;;;N;;;;;
18439131C7;EGYPTIAN HIEROGLYPH M015;Lo;0;L;;;;;N;;;;;
18440131C8;EGYPTIAN HIEROGLYPH M015A;Lo;0;L;;;;;N;;;;;
18441131C9;EGYPTIAN HIEROGLYPH M016;Lo;0;L;;;;;N;;;;;
18442131CA;EGYPTIAN HIEROGLYPH M016A;Lo;0;L;;;;;N;;;;;
18443131CB;EGYPTIAN HIEROGLYPH M017;Lo;0;L;;;;;N;;;;;
18444131CC;EGYPTIAN HIEROGLYPH M017A;Lo;0;L;;;;;N;;;;;
18445131CD;EGYPTIAN HIEROGLYPH M018;Lo;0;L;;;;;N;;;;;
18446131CE;EGYPTIAN HIEROGLYPH M019;Lo;0;L;;;;;N;;;;;
18447131CF;EGYPTIAN HIEROGLYPH M020;Lo;0;L;;;;;N;;;;;
18448131D0;EGYPTIAN HIEROGLYPH M021;Lo;0;L;;;;;N;;;;;
18449131D1;EGYPTIAN HIEROGLYPH M022;Lo;0;L;;;;;N;;;;;
18450131D2;EGYPTIAN HIEROGLYPH M022A;Lo;0;L;;;;;N;;;;;
18451131D3;EGYPTIAN HIEROGLYPH M023;Lo;0;L;;;;;N;;;;;
18452131D4;EGYPTIAN HIEROGLYPH M024;Lo;0;L;;;;;N;;;;;
18453131D5;EGYPTIAN HIEROGLYPH M024A;Lo;0;L;;;;;N;;;;;
18454131D6;EGYPTIAN HIEROGLYPH M025;Lo;0;L;;;;;N;;;;;
18455131D7;EGYPTIAN HIEROGLYPH M026;Lo;0;L;;;;;N;;;;;
18456131D8;EGYPTIAN HIEROGLYPH M027;Lo;0;L;;;;;N;;;;;
18457131D9;EGYPTIAN HIEROGLYPH M028;Lo;0;L;;;;;N;;;;;
18458131DA;EGYPTIAN HIEROGLYPH M028A;Lo;0;L;;;;;N;;;;;
18459131DB;EGYPTIAN HIEROGLYPH M029;Lo;0;L;;;;;N;;;;;
18460131DC;EGYPTIAN HIEROGLYPH M030;Lo;0;L;;;;;N;;;;;
18461131DD;EGYPTIAN HIEROGLYPH M031;Lo;0;L;;;;;N;;;;;
18462131DE;EGYPTIAN HIEROGLYPH M031A;Lo;0;L;;;;;N;;;;;
18463131DF;EGYPTIAN HIEROGLYPH M032;Lo;0;L;;;;;N;;;;;
18464131E0;EGYPTIAN HIEROGLYPH M033;Lo;0;L;;;;;N;;;;;
18465131E1;EGYPTIAN HIEROGLYPH M033A;Lo;0;L;;;;;N;;;;;
18466131E2;EGYPTIAN HIEROGLYPH M033B;Lo;0;L;;;;;N;;;;;
18467131E3;EGYPTIAN HIEROGLYPH M034;Lo;0;L;;;;;N;;;;;
18468131E4;EGYPTIAN HIEROGLYPH M035;Lo;0;L;;;;;N;;;;;
18469131E5;EGYPTIAN HIEROGLYPH M036;Lo;0;L;;;;;N;;;;;
18470131E6;EGYPTIAN HIEROGLYPH M037;Lo;0;L;;;;;N;;;;;
18471131E7;EGYPTIAN HIEROGLYPH M038;Lo;0;L;;;;;N;;;;;
18472131E8;EGYPTIAN HIEROGLYPH M039;Lo;0;L;;;;;N;;;;;
18473131E9;EGYPTIAN HIEROGLYPH M040;Lo;0;L;;;;;N;;;;;
18474131EA;EGYPTIAN HIEROGLYPH M040A;Lo;0;L;;;;;N;;;;;
18475131EB;EGYPTIAN HIEROGLYPH M041;Lo;0;L;;;;;N;;;;;
18476131EC;EGYPTIAN HIEROGLYPH M042;Lo;0;L;;;;;N;;;;;
18477131ED;EGYPTIAN HIEROGLYPH M043;Lo;0;L;;;;;N;;;;;
18478131EE;EGYPTIAN HIEROGLYPH M044;Lo;0;L;;;;;N;;;;;
18479131EF;EGYPTIAN HIEROGLYPH N001;Lo;0;L;;;;;N;;;;;
18480131F0;EGYPTIAN HIEROGLYPH N002;Lo;0;L;;;;;N;;;;;
18481131F1;EGYPTIAN HIEROGLYPH N003;Lo;0;L;;;;;N;;;;;
18482131F2;EGYPTIAN HIEROGLYPH N004;Lo;0;L;;;;;N;;;;;
18483131F3;EGYPTIAN HIEROGLYPH N005;Lo;0;L;;;;;N;;;;;
18484131F4;EGYPTIAN HIEROGLYPH N006;Lo;0;L;;;;;N;;;;;
18485131F5;EGYPTIAN HIEROGLYPH N007;Lo;0;L;;;;;N;;;;;
18486131F6;EGYPTIAN HIEROGLYPH N008;Lo;0;L;;;;;N;;;;;
18487131F7;EGYPTIAN HIEROGLYPH N009;Lo;0;L;;;;;N;;;;;
18488131F8;EGYPTIAN HIEROGLYPH N010;Lo;0;L;;;;;N;;;;;
18489131F9;EGYPTIAN HIEROGLYPH N011;Lo;0;L;;;;;N;;;;;
18490131FA;EGYPTIAN HIEROGLYPH N012;Lo;0;L;;;;;N;;;;;
18491131FB;EGYPTIAN HIEROGLYPH N013;Lo;0;L;;;;;N;;;;;
18492131FC;EGYPTIAN HIEROGLYPH N014;Lo;0;L;;;;;N;;;;;
18493131FD;EGYPTIAN HIEROGLYPH N015;Lo;0;L;;;;;N;;;;;
18494131FE;EGYPTIAN HIEROGLYPH N016;Lo;0;L;;;;;N;;;;;
18495131FF;EGYPTIAN HIEROGLYPH N017;Lo;0;L;;;;;N;;;;;
1849613200;EGYPTIAN HIEROGLYPH N018;Lo;0;L;;;;;N;;;;;
1849713201;EGYPTIAN HIEROGLYPH N018A;Lo;0;L;;;;;N;;;;;
1849813202;EGYPTIAN HIEROGLYPH N018B;Lo;0;L;;;;;N;;;;;
1849913203;EGYPTIAN HIEROGLYPH N019;Lo;0;L;;;;;N;;;;;
1850013204;EGYPTIAN HIEROGLYPH N020;Lo;0;L;;;;;N;;;;;
1850113205;EGYPTIAN HIEROGLYPH N021;Lo;0;L;;;;;N;;;;;
1850213206;EGYPTIAN HIEROGLYPH N022;Lo;0;L;;;;;N;;;;;
1850313207;EGYPTIAN HIEROGLYPH N023;Lo;0;L;;;;;N;;;;;
1850413208;EGYPTIAN HIEROGLYPH N024;Lo;0;L;;;;;N;;;;;
1850513209;EGYPTIAN HIEROGLYPH N025;Lo;0;L;;;;;N;;;;;
185061320A;EGYPTIAN HIEROGLYPH N025A;Lo;0;L;;;;;N;;;;;
185071320B;EGYPTIAN HIEROGLYPH N026;Lo;0;L;;;;;N;;;;;
185081320C;EGYPTIAN HIEROGLYPH N027;Lo;0;L;;;;;N;;;;;
185091320D;EGYPTIAN HIEROGLYPH N028;Lo;0;L;;;;;N;;;;;
185101320E;EGYPTIAN HIEROGLYPH N029;Lo;0;L;;;;;N;;;;;
185111320F;EGYPTIAN HIEROGLYPH N030;Lo;0;L;;;;;N;;;;;
1851213210;EGYPTIAN HIEROGLYPH N031;Lo;0;L;;;;;N;;;;;
1851313211;EGYPTIAN HIEROGLYPH N032;Lo;0;L;;;;;N;;;;;
1851413212;EGYPTIAN HIEROGLYPH N033;Lo;0;L;;;;;N;;;;;
1851513213;EGYPTIAN HIEROGLYPH N033A;Lo;0;L;;;;;N;;;;;
1851613214;EGYPTIAN HIEROGLYPH N034;Lo;0;L;;;;;N;;;;;
1851713215;EGYPTIAN HIEROGLYPH N034A;Lo;0;L;;;;;N;;;;;
1851813216;EGYPTIAN HIEROGLYPH N035;Lo;0;L;;;;;N;;;;;
1851913217;EGYPTIAN HIEROGLYPH N035A;Lo;0;L;;;;;N;;;;;
1852013218;EGYPTIAN HIEROGLYPH N036;Lo;0;L;;;;;N;;;;;
1852113219;EGYPTIAN HIEROGLYPH N037;Lo;0;L;;;;;N;;;;;
185221321A;EGYPTIAN HIEROGLYPH N037A;Lo;0;L;;;;;N;;;;;
185231321B;EGYPTIAN HIEROGLYPH N038;Lo;0;L;;;;;N;;;;;
185241321C;EGYPTIAN HIEROGLYPH N039;Lo;0;L;;;;;N;;;;;
185251321D;EGYPTIAN HIEROGLYPH N040;Lo;0;L;;;;;N;;;;;
185261321E;EGYPTIAN HIEROGLYPH N041;Lo;0;L;;;;;N;;;;;
185271321F;EGYPTIAN HIEROGLYPH N042;Lo;0;L;;;;;N;;;;;
1852813220;EGYPTIAN HIEROGLYPH NL001;Lo;0;L;;;;;N;;;;;
1852913221;EGYPTIAN HIEROGLYPH NL002;Lo;0;L;;;;;N;;;;;
1853013222;EGYPTIAN HIEROGLYPH NL003;Lo;0;L;;;;;N;;;;;
1853113223;EGYPTIAN HIEROGLYPH NL004;Lo;0;L;;;;;N;;;;;
1853213224;EGYPTIAN HIEROGLYPH NL005;Lo;0;L;;;;;N;;;;;
1853313225;EGYPTIAN HIEROGLYPH NL005A;Lo;0;L;;;;;N;;;;;
1853413226;EGYPTIAN HIEROGLYPH NL006;Lo;0;L;;;;;N;;;;;
1853513227;EGYPTIAN HIEROGLYPH NL007;Lo;0;L;;;;;N;;;;;
1853613228;EGYPTIAN HIEROGLYPH NL008;Lo;0;L;;;;;N;;;;;
1853713229;EGYPTIAN HIEROGLYPH NL009;Lo;0;L;;;;;N;;;;;
185381322A;EGYPTIAN HIEROGLYPH NL010;Lo;0;L;;;;;N;;;;;
185391322B;EGYPTIAN HIEROGLYPH NL011;Lo;0;L;;;;;N;;;;;
185401322C;EGYPTIAN HIEROGLYPH NL012;Lo;0;L;;;;;N;;;;;
185411322D;EGYPTIAN HIEROGLYPH NL013;Lo;0;L;;;;;N;;;;;
185421322E;EGYPTIAN HIEROGLYPH NL014;Lo;0;L;;;;;N;;;;;
185431322F;EGYPTIAN HIEROGLYPH NL015;Lo;0;L;;;;;N;;;;;
1854413230;EGYPTIAN HIEROGLYPH NL016;Lo;0;L;;;;;N;;;;;
1854513231;EGYPTIAN HIEROGLYPH NL017;Lo;0;L;;;;;N;;;;;
1854613232;EGYPTIAN HIEROGLYPH NL017A;Lo;0;L;;;;;N;;;;;
1854713233;EGYPTIAN HIEROGLYPH NL018;Lo;0;L;;;;;N;;;;;
1854813234;EGYPTIAN HIEROGLYPH NL019;Lo;0;L;;;;;N;;;;;
1854913235;EGYPTIAN HIEROGLYPH NL020;Lo;0;L;;;;;N;;;;;
1855013236;EGYPTIAN HIEROGLYPH NU001;Lo;0;L;;;;;N;;;;;
1855113237;EGYPTIAN HIEROGLYPH NU002;Lo;0;L;;;;;N;;;;;
1855213238;EGYPTIAN HIEROGLYPH NU003;Lo;0;L;;;;;N;;;;;
1855313239;EGYPTIAN HIEROGLYPH NU004;Lo;0;L;;;;;N;;;;;
185541323A;EGYPTIAN HIEROGLYPH NU005;Lo;0;L;;;;;N;;;;;
185551323B;EGYPTIAN HIEROGLYPH NU006;Lo;0;L;;;;;N;;;;;
185561323C;EGYPTIAN HIEROGLYPH NU007;Lo;0;L;;;;;N;;;;;
185571323D;EGYPTIAN HIEROGLYPH NU008;Lo;0;L;;;;;N;;;;;
185581323E;EGYPTIAN HIEROGLYPH NU009;Lo;0;L;;;;;N;;;;;
185591323F;EGYPTIAN HIEROGLYPH NU010;Lo;0;L;;;;;N;;;;;
1856013240;EGYPTIAN HIEROGLYPH NU010A;Lo;0;L;;;;;N;;;;;
1856113241;EGYPTIAN HIEROGLYPH NU011;Lo;0;L;;;;;N;;;;;
1856213242;EGYPTIAN HIEROGLYPH NU011A;Lo;0;L;;;;;N;;;;;
1856313243;EGYPTIAN HIEROGLYPH NU012;Lo;0;L;;;;;N;;;;;
1856413244;EGYPTIAN HIEROGLYPH NU013;Lo;0;L;;;;;N;;;;;
1856513245;EGYPTIAN HIEROGLYPH NU014;Lo;0;L;;;;;N;;;;;
1856613246;EGYPTIAN HIEROGLYPH NU015;Lo;0;L;;;;;N;;;;;
1856713247;EGYPTIAN HIEROGLYPH NU016;Lo;0;L;;;;;N;;;;;
1856813248;EGYPTIAN HIEROGLYPH NU017;Lo;0;L;;;;;N;;;;;
1856913249;EGYPTIAN HIEROGLYPH NU018;Lo;0;L;;;;;N;;;;;
185701324A;EGYPTIAN HIEROGLYPH NU018A;Lo;0;L;;;;;N;;;;;
185711324B;EGYPTIAN HIEROGLYPH NU019;Lo;0;L;;;;;N;;;;;
185721324C;EGYPTIAN HIEROGLYPH NU020;Lo;0;L;;;;;N;;;;;
185731324D;EGYPTIAN HIEROGLYPH NU021;Lo;0;L;;;;;N;;;;;
185741324E;EGYPTIAN HIEROGLYPH NU022;Lo;0;L;;;;;N;;;;;
185751324F;EGYPTIAN HIEROGLYPH NU022A;Lo;0;L;;;;;N;;;;;
1857613250;EGYPTIAN HIEROGLYPH O001;Lo;0;L;;;;;N;;;;;
1857713251;EGYPTIAN HIEROGLYPH O001A;Lo;0;L;;;;;N;;;;;
1857813252;EGYPTIAN HIEROGLYPH O002;Lo;0;L;;;;;N;;;;;
1857913253;EGYPTIAN HIEROGLYPH O003;Lo;0;L;;;;;N;;;;;
1858013254;EGYPTIAN HIEROGLYPH O004;Lo;0;L;;;;;N;;;;;
1858113255;EGYPTIAN HIEROGLYPH O005;Lo;0;L;;;;;N;;;;;
1858213256;EGYPTIAN HIEROGLYPH O005A;Lo;0;L;;;;;N;;;;;
1858313257;EGYPTIAN HIEROGLYPH O006;Lo;0;L;;;;;N;;;;;
1858413258;EGYPTIAN HIEROGLYPH O006A;Lo;0;L;;;;;N;;;;;
1858513259;EGYPTIAN HIEROGLYPH O006B;Lo;0;L;;;;;N;;;;;
185861325A;EGYPTIAN HIEROGLYPH O006C;Lo;0;L;;;;;N;;;;;
185871325B;EGYPTIAN HIEROGLYPH O006D;Lo;0;L;;;;;N;;;;;
185881325C;EGYPTIAN HIEROGLYPH O006E;Lo;0;L;;;;;N;;;;;
185891325D;EGYPTIAN HIEROGLYPH O006F;Lo;0;L;;;;;N;;;;;
185901325E;EGYPTIAN HIEROGLYPH O007;Lo;0;L;;;;;N;;;;;
185911325F;EGYPTIAN HIEROGLYPH O008;Lo;0;L;;;;;N;;;;;
1859213260;EGYPTIAN HIEROGLYPH O009;Lo;0;L;;;;;N;;;;;
1859313261;EGYPTIAN HIEROGLYPH O010;Lo;0;L;;;;;N;;;;;
1859413262;EGYPTIAN HIEROGLYPH O010A;Lo;0;L;;;;;N;;;;;
1859513263;EGYPTIAN HIEROGLYPH O010B;Lo;0;L;;;;;N;;;;;
1859613264;EGYPTIAN HIEROGLYPH O010C;Lo;0;L;;;;;N;;;;;
1859713265;EGYPTIAN HIEROGLYPH O011;Lo;0;L;;;;;N;;;;;
1859813266;EGYPTIAN HIEROGLYPH O012;Lo;0;L;;;;;N;;;;;
1859913267;EGYPTIAN HIEROGLYPH O013;Lo;0;L;;;;;N;;;;;
1860013268;EGYPTIAN HIEROGLYPH O014;Lo;0;L;;;;;N;;;;;
1860113269;EGYPTIAN HIEROGLYPH O015;Lo;0;L;;;;;N;;;;;
186021326A;EGYPTIAN HIEROGLYPH O016;Lo;0;L;;;;;N;;;;;
186031326B;EGYPTIAN HIEROGLYPH O017;Lo;0;L;;;;;N;;;;;
186041326C;EGYPTIAN HIEROGLYPH O018;Lo;0;L;;;;;N;;;;;
186051326D;EGYPTIAN HIEROGLYPH O019;Lo;0;L;;;;;N;;;;;
186061326E;EGYPTIAN HIEROGLYPH O019A;Lo;0;L;;;;;N;;;;;
186071326F;EGYPTIAN HIEROGLYPH O020;Lo;0;L;;;;;N;;;;;
1860813270;EGYPTIAN HIEROGLYPH O020A;Lo;0;L;;;;;N;;;;;
1860913271;EGYPTIAN HIEROGLYPH O021;Lo;0;L;;;;;N;;;;;
1861013272;EGYPTIAN HIEROGLYPH O022;Lo;0;L;;;;;N;;;;;
1861113273;EGYPTIAN HIEROGLYPH O023;Lo;0;L;;;;;N;;;;;
1861213274;EGYPTIAN HIEROGLYPH O024;Lo;0;L;;;;;N;;;;;
1861313275;EGYPTIAN HIEROGLYPH O024A;Lo;0;L;;;;;N;;;;;
1861413276;EGYPTIAN HIEROGLYPH O025;Lo;0;L;;;;;N;;;;;
1861513277;EGYPTIAN HIEROGLYPH O025A;Lo;0;L;;;;;N;;;;;
1861613278;EGYPTIAN HIEROGLYPH O026;Lo;0;L;;;;;N;;;;;
1861713279;EGYPTIAN HIEROGLYPH O027;Lo;0;L;;;;;N;;;;;
186181327A;EGYPTIAN HIEROGLYPH O028;Lo;0;L;;;;;N;;;;;
186191327B;EGYPTIAN HIEROGLYPH O029;Lo;0;L;;;;;N;;;;;
186201327C;EGYPTIAN HIEROGLYPH O029A;Lo;0;L;;;;;N;;;;;
186211327D;EGYPTIAN HIEROGLYPH O030;Lo;0;L;;;;;N;;;;;
186221327E;EGYPTIAN HIEROGLYPH O030A;Lo;0;L;;;;;N;;;;;
186231327F;EGYPTIAN HIEROGLYPH O031;Lo;0;L;;;;;N;;;;;
1862413280;EGYPTIAN HIEROGLYPH O032;Lo;0;L;;;;;N;;;;;
1862513281;EGYPTIAN HIEROGLYPH O033;Lo;0;L;;;;;N;;;;;
1862613282;EGYPTIAN HIEROGLYPH O033A;Lo;0;L;;;;;N;;;;;
1862713283;EGYPTIAN HIEROGLYPH O034;Lo;0;L;;;;;N;;;;;
1862813284;EGYPTIAN HIEROGLYPH O035;Lo;0;L;;;;;N;;;;;
1862913285;EGYPTIAN HIEROGLYPH O036;Lo;0;L;;;;;N;;;;;
1863013286;EGYPTIAN HIEROGLYPH O036A;Lo;0;L;;;;;N;;;;;
1863113287;EGYPTIAN HIEROGLYPH O036B;Lo;0;L;;;;;N;;;;;
1863213288;EGYPTIAN HIEROGLYPH O036C;Lo;0;L;;;;;N;;;;;
1863313289;EGYPTIAN HIEROGLYPH O036D;Lo;0;L;;;;;N;;;;;
186341328A;EGYPTIAN HIEROGLYPH O037;Lo;0;L;;;;;N;;;;;
186351328B;EGYPTIAN HIEROGLYPH O038;Lo;0;L;;;;;N;;;;;
186361328C;EGYPTIAN HIEROGLYPH O039;Lo;0;L;;;;;N;;;;;
186371328D;EGYPTIAN HIEROGLYPH O040;Lo;0;L;;;;;N;;;;;
186381328E;EGYPTIAN HIEROGLYPH O041;Lo;0;L;;;;;N;;;;;
186391328F;EGYPTIAN HIEROGLYPH O042;Lo;0;L;;;;;N;;;;;
1864013290;EGYPTIAN HIEROGLYPH O043;Lo;0;L;;;;;N;;;;;
1864113291;EGYPTIAN HIEROGLYPH O044;Lo;0;L;;;;;N;;;;;
1864213292;EGYPTIAN HIEROGLYPH O045;Lo;0;L;;;;;N;;;;;
1864313293;EGYPTIAN HIEROGLYPH O046;Lo;0;L;;;;;N;;;;;
1864413294;EGYPTIAN HIEROGLYPH O047;Lo;0;L;;;;;N;;;;;
1864513295;EGYPTIAN HIEROGLYPH O048;Lo;0;L;;;;;N;;;;;
1864613296;EGYPTIAN HIEROGLYPH O049;Lo;0;L;;;;;N;;;;;
1864713297;EGYPTIAN HIEROGLYPH O050;Lo;0;L;;;;;N;;;;;
1864813298;EGYPTIAN HIEROGLYPH O050A;Lo;0;L;;;;;N;;;;;
1864913299;EGYPTIAN HIEROGLYPH O050B;Lo;0;L;;;;;N;;;;;
186501329A;EGYPTIAN HIEROGLYPH O051;Lo;0;L;;;;;N;;;;;
186511329B;EGYPTIAN HIEROGLYPH P001;Lo;0;L;;;;;N;;;;;
186521329C;EGYPTIAN HIEROGLYPH P001A;Lo;0;L;;;;;N;;;;;
186531329D;EGYPTIAN HIEROGLYPH P002;Lo;0;L;;;;;N;;;;;
186541329E;EGYPTIAN HIEROGLYPH P003;Lo;0;L;;;;;N;;;;;
186551329F;EGYPTIAN HIEROGLYPH P003A;Lo;0;L;;;;;N;;;;;
18656132A0;EGYPTIAN HIEROGLYPH P004;Lo;0;L;;;;;N;;;;;
18657132A1;EGYPTIAN HIEROGLYPH P005;Lo;0;L;;;;;N;;;;;
18658132A2;EGYPTIAN HIEROGLYPH P006;Lo;0;L;;;;;N;;;;;
18659132A3;EGYPTIAN HIEROGLYPH P007;Lo;0;L;;;;;N;;;;;
18660132A4;EGYPTIAN HIEROGLYPH P008;Lo;0;L;;;;;N;;;;;
18661132A5;EGYPTIAN HIEROGLYPH P009;Lo;0;L;;;;;N;;;;;
18662132A6;EGYPTIAN HIEROGLYPH P010;Lo;0;L;;;;;N;;;;;
18663132A7;EGYPTIAN HIEROGLYPH P011;Lo;0;L;;;;;N;;;;;
18664132A8;EGYPTIAN HIEROGLYPH Q001;Lo;0;L;;;;;N;;;;;
18665132A9;EGYPTIAN HIEROGLYPH Q002;Lo;0;L;;;;;N;;;;;
18666132AA;EGYPTIAN HIEROGLYPH Q003;Lo;0;L;;;;;N;;;;;
18667132AB;EGYPTIAN HIEROGLYPH Q004;Lo;0;L;;;;;N;;;;;
18668132AC;EGYPTIAN HIEROGLYPH Q005;Lo;0;L;;;;;N;;;;;
18669132AD;EGYPTIAN HIEROGLYPH Q006;Lo;0;L;;;;;N;;;;;
18670132AE;EGYPTIAN HIEROGLYPH Q007;Lo;0;L;;;;;N;;;;;
18671132AF;EGYPTIAN HIEROGLYPH R001;Lo;0;L;;;;;N;;;;;
18672132B0;EGYPTIAN HIEROGLYPH R002;Lo;0;L;;;;;N;;;;;
18673132B1;EGYPTIAN HIEROGLYPH R002A;Lo;0;L;;;;;N;;;;;
18674132B2;EGYPTIAN HIEROGLYPH R003;Lo;0;L;;;;;N;;;;;
18675132B3;EGYPTIAN HIEROGLYPH R003A;Lo;0;L;;;;;N;;;;;
18676132B4;EGYPTIAN HIEROGLYPH R003B;Lo;0;L;;;;;N;;;;;
18677132B5;EGYPTIAN HIEROGLYPH R004;Lo;0;L;;;;;N;;;;;
18678132B6;EGYPTIAN HIEROGLYPH R005;Lo;0;L;;;;;N;;;;;
18679132B7;EGYPTIAN HIEROGLYPH R006;Lo;0;L;;;;;N;;;;;
18680132B8;EGYPTIAN HIEROGLYPH R007;Lo;0;L;;;;;N;;;;;
18681132B9;EGYPTIAN HIEROGLYPH R008;Lo;0;L;;;;;N;;;;;
18682132BA;EGYPTIAN HIEROGLYPH R009;Lo;0;L;;;;;N;;;;;
18683132BB;EGYPTIAN HIEROGLYPH R010;Lo;0;L;;;;;N;;;;;
18684132BC;EGYPTIAN HIEROGLYPH R010A;Lo;0;L;;;;;N;;;;;
18685132BD;EGYPTIAN HIEROGLYPH R011;Lo;0;L;;;;;N;;;;;
18686132BE;EGYPTIAN HIEROGLYPH R012;Lo;0;L;;;;;N;;;;;
18687132BF;EGYPTIAN HIEROGLYPH R013;Lo;0;L;;;;;N;;;;;
18688132C0;EGYPTIAN HIEROGLYPH R014;Lo;0;L;;;;;N;;;;;
18689132C1;EGYPTIAN HIEROGLYPH R015;Lo;0;L;;;;;N;;;;;
18690132C2;EGYPTIAN HIEROGLYPH R016;Lo;0;L;;;;;N;;;;;
18691132C3;EGYPTIAN HIEROGLYPH R016A;Lo;0;L;;;;;N;;;;;
18692132C4;EGYPTIAN HIEROGLYPH R017;Lo;0;L;;;;;N;;;;;
18693132C5;EGYPTIAN HIEROGLYPH R018;Lo;0;L;;;;;N;;;;;
18694132C6;EGYPTIAN HIEROGLYPH R019;Lo;0;L;;;;;N;;;;;
18695132C7;EGYPTIAN HIEROGLYPH R020;Lo;0;L;;;;;N;;;;;
18696132C8;EGYPTIAN HIEROGLYPH R021;Lo;0;L;;;;;N;;;;;
18697132C9;EGYPTIAN HIEROGLYPH R022;Lo;0;L;;;;;N;;;;;
18698132CA;EGYPTIAN HIEROGLYPH R023;Lo;0;L;;;;;N;;;;;
18699132CB;EGYPTIAN HIEROGLYPH R024;Lo;0;L;;;;;N;;;;;
18700132CC;EGYPTIAN HIEROGLYPH R025;Lo;0;L;;;;;N;;;;;
18701132CD;EGYPTIAN HIEROGLYPH R026;Lo;0;L;;;;;N;;;;;
18702132CE;EGYPTIAN HIEROGLYPH R027;Lo;0;L;;;;;N;;;;;
18703132CF;EGYPTIAN HIEROGLYPH R028;Lo;0;L;;;;;N;;;;;
18704132D0;EGYPTIAN HIEROGLYPH R029;Lo;0;L;;;;;N;;;;;
18705132D1;EGYPTIAN HIEROGLYPH S001;Lo;0;L;;;;;N;;;;;
18706132D2;EGYPTIAN HIEROGLYPH S002;Lo;0;L;;;;;N;;;;;
18707132D3;EGYPTIAN HIEROGLYPH S002A;Lo;0;L;;;;;N;;;;;
18708132D4;EGYPTIAN HIEROGLYPH S003;Lo;0;L;;;;;N;;;;;
18709132D5;EGYPTIAN HIEROGLYPH S004;Lo;0;L;;;;;N;;;;;
18710132D6;EGYPTIAN HIEROGLYPH S005;Lo;0;L;;;;;N;;;;;
18711132D7;EGYPTIAN HIEROGLYPH S006;Lo;0;L;;;;;N;;;;;
18712132D8;EGYPTIAN HIEROGLYPH S006A;Lo;0;L;;;;;N;;;;;
18713132D9;EGYPTIAN HIEROGLYPH S007;Lo;0;L;;;;;N;;;;;
18714132DA;EGYPTIAN HIEROGLYPH S008;Lo;0;L;;;;;N;;;;;
18715132DB;EGYPTIAN HIEROGLYPH S009;Lo;0;L;;;;;N;;;;;
18716132DC;EGYPTIAN HIEROGLYPH S010;Lo;0;L;;;;;N;;;;;
18717132DD;EGYPTIAN HIEROGLYPH S011;Lo;0;L;;;;;N;;;;;
18718132DE;EGYPTIAN HIEROGLYPH S012;Lo;0;L;;;;;N;;;;;
18719132DF;EGYPTIAN HIEROGLYPH S013;Lo;0;L;;;;;N;;;;;
18720132E0;EGYPTIAN HIEROGLYPH S014;Lo;0;L;;;;;N;;;;;
18721132E1;EGYPTIAN HIEROGLYPH S014A;Lo;0;L;;;;;N;;;;;
18722132E2;EGYPTIAN HIEROGLYPH S014B;Lo;0;L;;;;;N;;;;;
18723132E3;EGYPTIAN HIEROGLYPH S015;Lo;0;L;;;;;N;;;;;
18724132E4;EGYPTIAN HIEROGLYPH S016;Lo;0;L;;;;;N;;;;;
18725132E5;EGYPTIAN HIEROGLYPH S017;Lo;0;L;;;;;N;;;;;
18726132E6;EGYPTIAN HIEROGLYPH S017A;Lo;0;L;;;;;N;;;;;
18727132E7;EGYPTIAN HIEROGLYPH S018;Lo;0;L;;;;;N;;;;;
18728132E8;EGYPTIAN HIEROGLYPH S019;Lo;0;L;;;;;N;;;;;
18729132E9;EGYPTIAN HIEROGLYPH S020;Lo;0;L;;;;;N;;;;;
18730132EA;EGYPTIAN HIEROGLYPH S021;Lo;0;L;;;;;N;;;;;
18731132EB;EGYPTIAN HIEROGLYPH S022;Lo;0;L;;;;;N;;;;;
18732132EC;EGYPTIAN HIEROGLYPH S023;Lo;0;L;;;;;N;;;;;
18733132ED;EGYPTIAN HIEROGLYPH S024;Lo;0;L;;;;;N;;;;;
18734132EE;EGYPTIAN HIEROGLYPH S025;Lo;0;L;;;;;N;;;;;
18735132EF;EGYPTIAN HIEROGLYPH S026;Lo;0;L;;;;;N;;;;;
18736132F0;EGYPTIAN HIEROGLYPH S026A;Lo;0;L;;;;;N;;;;;
18737132F1;EGYPTIAN HIEROGLYPH S026B;Lo;0;L;;;;;N;;;;;
18738132F2;EGYPTIAN HIEROGLYPH S027;Lo;0;L;;;;;N;;;;;
18739132F3;EGYPTIAN HIEROGLYPH S028;Lo;0;L;;;;;N;;;;;
18740132F4;EGYPTIAN HIEROGLYPH S029;Lo;0;L;;;;;N;;;;;
18741132F5;EGYPTIAN HIEROGLYPH S030;Lo;0;L;;;;;N;;;;;
18742132F6;EGYPTIAN HIEROGLYPH S031;Lo;0;L;;;;;N;;;;;
18743132F7;EGYPTIAN HIEROGLYPH S032;Lo;0;L;;;;;N;;;;;
18744132F8;EGYPTIAN HIEROGLYPH S033;Lo;0;L;;;;;N;;;;;
18745132F9;EGYPTIAN HIEROGLYPH S034;Lo;0;L;;;;;N;;;;;
18746132FA;EGYPTIAN HIEROGLYPH S035;Lo;0;L;;;;;N;;;;;
18747132FB;EGYPTIAN HIEROGLYPH S035A;Lo;0;L;;;;;N;;;;;
18748132FC;EGYPTIAN HIEROGLYPH S036;Lo;0;L;;;;;N;;;;;
18749132FD;EGYPTIAN HIEROGLYPH S037;Lo;0;L;;;;;N;;;;;
18750132FE;EGYPTIAN HIEROGLYPH S038;Lo;0;L;;;;;N;;;;;
18751132FF;EGYPTIAN HIEROGLYPH S039;Lo;0;L;;;;;N;;;;;
1875213300;EGYPTIAN HIEROGLYPH S040;Lo;0;L;;;;;N;;;;;
1875313301;EGYPTIAN HIEROGLYPH S041;Lo;0;L;;;;;N;;;;;
1875413302;EGYPTIAN HIEROGLYPH S042;Lo;0;L;;;;;N;;;;;
1875513303;EGYPTIAN HIEROGLYPH S043;Lo;0;L;;;;;N;;;;;
1875613304;EGYPTIAN HIEROGLYPH S044;Lo;0;L;;;;;N;;;;;
1875713305;EGYPTIAN HIEROGLYPH S045;Lo;0;L;;;;;N;;;;;
1875813306;EGYPTIAN HIEROGLYPH S046;Lo;0;L;;;;;N;;;;;
1875913307;EGYPTIAN HIEROGLYPH T001;Lo;0;L;;;;;N;;;;;
1876013308;EGYPTIAN HIEROGLYPH T002;Lo;0;L;;;;;N;;;;;
1876113309;EGYPTIAN HIEROGLYPH T003;Lo;0;L;;;;;N;;;;;
187621330A;EGYPTIAN HIEROGLYPH T003A;Lo;0;L;;;;;N;;;;;
187631330B;EGYPTIAN HIEROGLYPH T004;Lo;0;L;;;;;N;;;;;
187641330C;EGYPTIAN HIEROGLYPH T005;Lo;0;L;;;;;N;;;;;
187651330D;EGYPTIAN HIEROGLYPH T006;Lo;0;L;;;;;N;;;;;
187661330E;EGYPTIAN HIEROGLYPH T007;Lo;0;L;;;;;N;;;;;
187671330F;EGYPTIAN HIEROGLYPH T007A;Lo;0;L;;;;;N;;;;;
1876813310;EGYPTIAN HIEROGLYPH T008;Lo;0;L;;;;;N;;;;;
1876913311;EGYPTIAN HIEROGLYPH T008A;Lo;0;L;;;;;N;;;;;
1877013312;EGYPTIAN HIEROGLYPH T009;Lo;0;L;;;;;N;;;;;
1877113313;EGYPTIAN HIEROGLYPH T009A;Lo;0;L;;;;;N;;;;;
1877213314;EGYPTIAN HIEROGLYPH T010;Lo;0;L;;;;;N;;;;;
1877313315;EGYPTIAN HIEROGLYPH T011;Lo;0;L;;;;;N;;;;;
1877413316;EGYPTIAN HIEROGLYPH T011A;Lo;0;L;;;;;N;;;;;
1877513317;EGYPTIAN HIEROGLYPH T012;Lo;0;L;;;;;N;;;;;
1877613318;EGYPTIAN HIEROGLYPH T013;Lo;0;L;;;;;N;;;;;
1877713319;EGYPTIAN HIEROGLYPH T014;Lo;0;L;;;;;N;;;;;
187781331A;EGYPTIAN HIEROGLYPH T015;Lo;0;L;;;;;N;;;;;
187791331B;EGYPTIAN HIEROGLYPH T016;Lo;0;L;;;;;N;;;;;
187801331C;EGYPTIAN HIEROGLYPH T016A;Lo;0;L;;;;;N;;;;;
187811331D;EGYPTIAN HIEROGLYPH T017;Lo;0;L;;;;;N;;;;;
187821331E;EGYPTIAN HIEROGLYPH T018;Lo;0;L;;;;;N;;;;;
187831331F;EGYPTIAN HIEROGLYPH T019;Lo;0;L;;;;;N;;;;;
1878413320;EGYPTIAN HIEROGLYPH T020;Lo;0;L;;;;;N;;;;;
1878513321;EGYPTIAN HIEROGLYPH T021;Lo;0;L;;;;;N;;;;;
1878613322;EGYPTIAN HIEROGLYPH T022;Lo;0;L;;;;;N;;;;;
1878713323;EGYPTIAN HIEROGLYPH T023;Lo;0;L;;;;;N;;;;;
1878813324;EGYPTIAN HIEROGLYPH T024;Lo;0;L;;;;;N;;;;;
1878913325;EGYPTIAN HIEROGLYPH T025;Lo;0;L;;;;;N;;;;;
1879013326;EGYPTIAN HIEROGLYPH T026;Lo;0;L;;;;;N;;;;;
1879113327;EGYPTIAN HIEROGLYPH T027;Lo;0;L;;;;;N;;;;;
1879213328;EGYPTIAN HIEROGLYPH T028;Lo;0;L;;;;;N;;;;;
1879313329;EGYPTIAN HIEROGLYPH T029;Lo;0;L;;;;;N;;;;;
187941332A;EGYPTIAN HIEROGLYPH T030;Lo;0;L;;;;;N;;;;;
187951332B;EGYPTIAN HIEROGLYPH T031;Lo;0;L;;;;;N;;;;;
187961332C;EGYPTIAN HIEROGLYPH T032;Lo;0;L;;;;;N;;;;;
187971332D;EGYPTIAN HIEROGLYPH T032A;Lo;0;L;;;;;N;;;;;
187981332E;EGYPTIAN HIEROGLYPH T033;Lo;0;L;;;;;N;;;;;
187991332F;EGYPTIAN HIEROGLYPH T033A;Lo;0;L;;;;;N;;;;;
1880013330;EGYPTIAN HIEROGLYPH T034;Lo;0;L;;;;;N;;;;;
1880113331;EGYPTIAN HIEROGLYPH T035;Lo;0;L;;;;;N;;;;;
1880213332;EGYPTIAN HIEROGLYPH T036;Lo;0;L;;;;;N;;;;;
1880313333;EGYPTIAN HIEROGLYPH U001;Lo;0;L;;;;;N;;;;;
1880413334;EGYPTIAN HIEROGLYPH U002;Lo;0;L;;;;;N;;;;;
1880513335;EGYPTIAN HIEROGLYPH U003;Lo;0;L;;;;;N;;;;;
1880613336;EGYPTIAN HIEROGLYPH U004;Lo;0;L;;;;;N;;;;;
1880713337;EGYPTIAN HIEROGLYPH U005;Lo;0;L;;;;;N;;;;;
1880813338;EGYPTIAN HIEROGLYPH U006;Lo;0;L;;;;;N;;;;;
1880913339;EGYPTIAN HIEROGLYPH U006A;Lo;0;L;;;;;N;;;;;
188101333A;EGYPTIAN HIEROGLYPH U006B;Lo;0;L;;;;;N;;;;;
188111333B;EGYPTIAN HIEROGLYPH U007;Lo;0;L;;;;;N;;;;;
188121333C;EGYPTIAN HIEROGLYPH U008;Lo;0;L;;;;;N;;;;;
188131333D;EGYPTIAN HIEROGLYPH U009;Lo;0;L;;;;;N;;;;;
188141333E;EGYPTIAN HIEROGLYPH U010;Lo;0;L;;;;;N;;;;;
188151333F;EGYPTIAN HIEROGLYPH U011;Lo;0;L;;;;;N;;;;;
1881613340;EGYPTIAN HIEROGLYPH U012;Lo;0;L;;;;;N;;;;;
1881713341;EGYPTIAN HIEROGLYPH U013;Lo;0;L;;;;;N;;;;;
1881813342;EGYPTIAN HIEROGLYPH U014;Lo;0;L;;;;;N;;;;;
1881913343;EGYPTIAN HIEROGLYPH U015;Lo;0;L;;;;;N;;;;;
1882013344;EGYPTIAN HIEROGLYPH U016;Lo;0;L;;;;;N;;;;;
1882113345;EGYPTIAN HIEROGLYPH U017;Lo;0;L;;;;;N;;;;;
1882213346;EGYPTIAN HIEROGLYPH U018;Lo;0;L;;;;;N;;;;;
1882313347;EGYPTIAN HIEROGLYPH U019;Lo;0;L;;;;;N;;;;;
1882413348;EGYPTIAN HIEROGLYPH U020;Lo;0;L;;;;;N;;;;;
1882513349;EGYPTIAN HIEROGLYPH U021;Lo;0;L;;;;;N;;;;;
188261334A;EGYPTIAN HIEROGLYPH U022;Lo;0;L;;;;;N;;;;;
188271334B;EGYPTIAN HIEROGLYPH U023;Lo;0;L;;;;;N;;;;;
188281334C;EGYPTIAN HIEROGLYPH U023A;Lo;0;L;;;;;N;;;;;
188291334D;EGYPTIAN HIEROGLYPH U024;Lo;0;L;;;;;N;;;;;
188301334E;EGYPTIAN HIEROGLYPH U025;Lo;0;L;;;;;N;;;;;
188311334F;EGYPTIAN HIEROGLYPH U026;Lo;0;L;;;;;N;;;;;
1883213350;EGYPTIAN HIEROGLYPH U027;Lo;0;L;;;;;N;;;;;
1883313351;EGYPTIAN HIEROGLYPH U028;Lo;0;L;;;;;N;;;;;
1883413352;EGYPTIAN HIEROGLYPH U029;Lo;0;L;;;;;N;;;;;
1883513353;EGYPTIAN HIEROGLYPH U029A;Lo;0;L;;;;;N;;;;;
1883613354;EGYPTIAN HIEROGLYPH U030;Lo;0;L;;;;;N;;;;;
1883713355;EGYPTIAN HIEROGLYPH U031;Lo;0;L;;;;;N;;;;;
1883813356;EGYPTIAN HIEROGLYPH U032;Lo;0;L;;;;;N;;;;;
1883913357;EGYPTIAN HIEROGLYPH U032A;Lo;0;L;;;;;N;;;;;
1884013358;EGYPTIAN HIEROGLYPH U033;Lo;0;L;;;;;N;;;;;
1884113359;EGYPTIAN HIEROGLYPH U034;Lo;0;L;;;;;N;;;;;
188421335A;EGYPTIAN HIEROGLYPH U035;Lo;0;L;;;;;N;;;;;
188431335B;EGYPTIAN HIEROGLYPH U036;Lo;0;L;;;;;N;;;;;
188441335C;EGYPTIAN HIEROGLYPH U037;Lo;0;L;;;;;N;;;;;
188451335D;EGYPTIAN HIEROGLYPH U038;Lo;0;L;;;;;N;;;;;
188461335E;EGYPTIAN HIEROGLYPH U039;Lo;0;L;;;;;N;;;;;
188471335F;EGYPTIAN HIEROGLYPH U040;Lo;0;L;;;;;N;;;;;
1884813360;EGYPTIAN HIEROGLYPH U041;Lo;0;L;;;;;N;;;;;
1884913361;EGYPTIAN HIEROGLYPH U042;Lo;0;L;;;;;N;;;;;
1885013362;EGYPTIAN HIEROGLYPH V001;Lo;0;L;;;;;N;;;;;
1885113363;EGYPTIAN HIEROGLYPH V001A;Lo;0;L;;;;;N;;;;;
1885213364;EGYPTIAN HIEROGLYPH V001B;Lo;0;L;;;;;N;;;;;
1885313365;EGYPTIAN HIEROGLYPH V001C;Lo;0;L;;;;;N;;;;;
1885413366;EGYPTIAN HIEROGLYPH V001D;Lo;0;L;;;;;N;;;;;
1885513367;EGYPTIAN HIEROGLYPH V001E;Lo;0;L;;;;;N;;;;;
1885613368;EGYPTIAN HIEROGLYPH V001F;Lo;0;L;;;;;N;;;;;
1885713369;EGYPTIAN HIEROGLYPH V001G;Lo;0;L;;;;;N;;;;;
188581336A;EGYPTIAN HIEROGLYPH V001H;Lo;0;L;;;;;N;;;;;
188591336B;EGYPTIAN HIEROGLYPH V001I;Lo;0;L;;;;;N;;;;;
188601336C;EGYPTIAN HIEROGLYPH V002;Lo;0;L;;;;;N;;;;;
188611336D;EGYPTIAN HIEROGLYPH V002A;Lo;0;L;;;;;N;;;;;
188621336E;EGYPTIAN HIEROGLYPH V003;Lo;0;L;;;;;N;;;;;
188631336F;EGYPTIAN HIEROGLYPH V004;Lo;0;L;;;;;N;;;;;
1886413370;EGYPTIAN HIEROGLYPH V005;Lo;0;L;;;;;N;;;;;
1886513371;EGYPTIAN HIEROGLYPH V006;Lo;0;L;;;;;N;;;;;
1886613372;EGYPTIAN HIEROGLYPH V007;Lo;0;L;;;;;N;;;;;
1886713373;EGYPTIAN HIEROGLYPH V007A;Lo;0;L;;;;;N;;;;;
1886813374;EGYPTIAN HIEROGLYPH V007B;Lo;0;L;;;;;N;;;;;
1886913375;EGYPTIAN HIEROGLYPH V008;Lo;0;L;;;;;N;;;;;
1887013376;EGYPTIAN HIEROGLYPH V009;Lo;0;L;;;;;N;;;;;
1887113377;EGYPTIAN HIEROGLYPH V010;Lo;0;L;;;;;N;;;;;
1887213378;EGYPTIAN HIEROGLYPH V011;Lo;0;L;;;;;N;;;;;
1887313379;EGYPTIAN HIEROGLYPH V011A;Lo;0;L;;;;;N;;;;;
188741337A;EGYPTIAN HIEROGLYPH V011B;Lo;0;L;;;;;N;;;;;
188751337B;EGYPTIAN HIEROGLYPH V011C;Lo;0;L;;;;;N;;;;;
188761337C;EGYPTIAN HIEROGLYPH V012;Lo;0;L;;;;;N;;;;;
188771337D;EGYPTIAN HIEROGLYPH V012A;Lo;0;L;;;;;N;;;;;
188781337E;EGYPTIAN HIEROGLYPH V012B;Lo;0;L;;;;;N;;;;;
188791337F;EGYPTIAN HIEROGLYPH V013;Lo;0;L;;;;;N;;;;;
1888013380;EGYPTIAN HIEROGLYPH V014;Lo;0;L;;;;;N;;;;;
1888113381;EGYPTIAN HIEROGLYPH V015;Lo;0;L;;;;;N;;;;;
1888213382;EGYPTIAN HIEROGLYPH V016;Lo;0;L;;;;;N;;;;;
1888313383;EGYPTIAN HIEROGLYPH V017;Lo;0;L;;;;;N;;;;;
1888413384;EGYPTIAN HIEROGLYPH V018;Lo;0;L;;;;;N;;;;;
1888513385;EGYPTIAN HIEROGLYPH V019;Lo;0;L;;;;;N;;;;;
1888613386;EGYPTIAN HIEROGLYPH V020;Lo;0;L;;;;;N;;;;;
1888713387;EGYPTIAN HIEROGLYPH V020A;Lo;0;L;;;;;N;;;;;
1888813388;EGYPTIAN HIEROGLYPH V020B;Lo;0;L;;;;;N;;;;;
1888913389;EGYPTIAN HIEROGLYPH V020C;Lo;0;L;;;;;N;;;;;
188901338A;EGYPTIAN HIEROGLYPH V020D;Lo;0;L;;;;;N;;;;;
188911338B;EGYPTIAN HIEROGLYPH V020E;Lo;0;L;;;;;N;;;;;
188921338C;EGYPTIAN HIEROGLYPH V020F;Lo;0;L;;;;;N;;;;;
188931338D;EGYPTIAN HIEROGLYPH V020G;Lo;0;L;;;;;N;;;;;
188941338E;EGYPTIAN HIEROGLYPH V020H;Lo;0;L;;;;;N;;;;;
188951338F;EGYPTIAN HIEROGLYPH V020I;Lo;0;L;;;;;N;;;;;
1889613390;EGYPTIAN HIEROGLYPH V020J;Lo;0;L;;;;;N;;;;;
1889713391;EGYPTIAN HIEROGLYPH V020K;Lo;0;L;;;;;N;;;;;
1889813392;EGYPTIAN HIEROGLYPH V020L;Lo;0;L;;;;;N;;;;;
1889913393;EGYPTIAN HIEROGLYPH V021;Lo;0;L;;;;;N;;;;;
1890013394;EGYPTIAN HIEROGLYPH V022;Lo;0;L;;;;;N;;;;;
1890113395;EGYPTIAN HIEROGLYPH V023;Lo;0;L;;;;;N;;;;;
1890213396;EGYPTIAN HIEROGLYPH V023A;Lo;0;L;;;;;N;;;;;
1890313397;EGYPTIAN HIEROGLYPH V024;Lo;0;L;;;;;N;;;;;
1890413398;EGYPTIAN HIEROGLYPH V025;Lo;0;L;;;;;N;;;;;
1890513399;EGYPTIAN HIEROGLYPH V026;Lo;0;L;;;;;N;;;;;
189061339A;EGYPTIAN HIEROGLYPH V027;Lo;0;L;;;;;N;;;;;
189071339B;EGYPTIAN HIEROGLYPH V028;Lo;0;L;;;;;N;;;;;
189081339C;EGYPTIAN HIEROGLYPH V028A;Lo;0;L;;;;;N;;;;;
189091339D;EGYPTIAN HIEROGLYPH V029;Lo;0;L;;;;;N;;;;;
189101339E;EGYPTIAN HIEROGLYPH V029A;Lo;0;L;;;;;N;;;;;
189111339F;EGYPTIAN HIEROGLYPH V030;Lo;0;L;;;;;N;;;;;
18912133A0;EGYPTIAN HIEROGLYPH V030A;Lo;0;L;;;;;N;;;;;
18913133A1;EGYPTIAN HIEROGLYPH V031;Lo;0;L;;;;;N;;;;;
18914133A2;EGYPTIAN HIEROGLYPH V031A;Lo;0;L;;;;;N;;;;;
18915133A3;EGYPTIAN HIEROGLYPH V032;Lo;0;L;;;;;N;;;;;
18916133A4;EGYPTIAN HIEROGLYPH V033;Lo;0;L;;;;;N;;;;;
18917133A5;EGYPTIAN HIEROGLYPH V033A;Lo;0;L;;;;;N;;;;;
18918133A6;EGYPTIAN HIEROGLYPH V034;Lo;0;L;;;;;N;;;;;
18919133A7;EGYPTIAN HIEROGLYPH V035;Lo;0;L;;;;;N;;;;;
18920133A8;EGYPTIAN HIEROGLYPH V036;Lo;0;L;;;;;N;;;;;
18921133A9;EGYPTIAN HIEROGLYPH V037;Lo;0;L;;;;;N;;;;;
18922133AA;EGYPTIAN HIEROGLYPH V037A;Lo;0;L;;;;;N;;;;;
18923133AB;EGYPTIAN HIEROGLYPH V038;Lo;0;L;;;;;N;;;;;
18924133AC;EGYPTIAN HIEROGLYPH V039;Lo;0;L;;;;;N;;;;;
18925133AD;EGYPTIAN HIEROGLYPH V040;Lo;0;L;;;;;N;;;;;
18926133AE;EGYPTIAN HIEROGLYPH V040A;Lo;0;L;;;;;N;;;;;
18927133AF;EGYPTIAN HIEROGLYPH W001;Lo;0;L;;;;;N;;;;;
18928133B0;EGYPTIAN HIEROGLYPH W002;Lo;0;L;;;;;N;;;;;
18929133B1;EGYPTIAN HIEROGLYPH W003;Lo;0;L;;;;;N;;;;;
18930133B2;EGYPTIAN HIEROGLYPH W003A;Lo;0;L;;;;;N;;;;;
18931133B3;EGYPTIAN HIEROGLYPH W004;Lo;0;L;;;;;N;;;;;
18932133B4;EGYPTIAN HIEROGLYPH W005;Lo;0;L;;;;;N;;;;;
18933133B5;EGYPTIAN HIEROGLYPH W006;Lo;0;L;;;;;N;;;;;
18934133B6;EGYPTIAN HIEROGLYPH W007;Lo;0;L;;;;;N;;;;;
18935133B7;EGYPTIAN HIEROGLYPH W008;Lo;0;L;;;;;N;;;;;
18936133B8;EGYPTIAN HIEROGLYPH W009;Lo;0;L;;;;;N;;;;;
18937133B9;EGYPTIAN HIEROGLYPH W009A;Lo;0;L;;;;;N;;;;;
18938133BA;EGYPTIAN HIEROGLYPH W010;Lo;0;L;;;;;N;;;;;
18939133BB;EGYPTIAN HIEROGLYPH W010A;Lo;0;L;;;;;N;;;;;
18940133BC;EGYPTIAN HIEROGLYPH W011;Lo;0;L;;;;;N;;;;;
18941133BD;EGYPTIAN HIEROGLYPH W012;Lo;0;L;;;;;N;;;;;
18942133BE;EGYPTIAN HIEROGLYPH W013;Lo;0;L;;;;;N;;;;;
18943133BF;EGYPTIAN HIEROGLYPH W014;Lo;0;L;;;;;N;;;;;
18944133C0;EGYPTIAN HIEROGLYPH W014A;Lo;0;L;;;;;N;;;;;
18945133C1;EGYPTIAN HIEROGLYPH W015;Lo;0;L;;;;;N;;;;;
18946133C2;EGYPTIAN HIEROGLYPH W016;Lo;0;L;;;;;N;;;;;
18947133C3;EGYPTIAN HIEROGLYPH W017;Lo;0;L;;;;;N;;;;;
18948133C4;EGYPTIAN HIEROGLYPH W017A;Lo;0;L;;;;;N;;;;;
18949133C5;EGYPTIAN HIEROGLYPH W018;Lo;0;L;;;;;N;;;;;
18950133C6;EGYPTIAN HIEROGLYPH W018A;Lo;0;L;;;;;N;;;;;
18951133C7;EGYPTIAN HIEROGLYPH W019;Lo;0;L;;;;;N;;;;;
18952133C8;EGYPTIAN HIEROGLYPH W020;Lo;0;L;;;;;N;;;;;
18953133C9;EGYPTIAN HIEROGLYPH W021;Lo;0;L;;;;;N;;;;;
18954133CA;EGYPTIAN HIEROGLYPH W022;Lo;0;L;;;;;N;;;;;
18955133CB;EGYPTIAN HIEROGLYPH W023;Lo;0;L;;;;;N;;;;;
18956133CC;EGYPTIAN HIEROGLYPH W024;Lo;0;L;;;;;N;;;;;
18957133CD;EGYPTIAN HIEROGLYPH W024A;Lo;0;L;;;;;N;;;;;
18958133CE;EGYPTIAN HIEROGLYPH W025;Lo;0;L;;;;;N;;;;;
18959133CF;EGYPTIAN HIEROGLYPH X001;Lo;0;L;;;;;N;;;;;
18960133D0;EGYPTIAN HIEROGLYPH X002;Lo;0;L;;;;;N;;;;;
18961133D1;EGYPTIAN HIEROGLYPH X003;Lo;0;L;;;;;N;;;;;
18962133D2;EGYPTIAN HIEROGLYPH X004;Lo;0;L;;;;;N;;;;;
18963133D3;EGYPTIAN HIEROGLYPH X004A;Lo;0;L;;;;;N;;;;;
18964133D4;EGYPTIAN HIEROGLYPH X004B;Lo;0;L;;;;;N;;;;;
18965133D5;EGYPTIAN HIEROGLYPH X005;Lo;0;L;;;;;N;;;;;
18966133D6;EGYPTIAN HIEROGLYPH X006;Lo;0;L;;;;;N;;;;;
18967133D7;EGYPTIAN HIEROGLYPH X006A;Lo;0;L;;;;;N;;;;;
18968133D8;EGYPTIAN HIEROGLYPH X007;Lo;0;L;;;;;N;;;;;
18969133D9;EGYPTIAN HIEROGLYPH X008;Lo;0;L;;;;;N;;;;;
18970133DA;EGYPTIAN HIEROGLYPH X008A;Lo;0;L;;;;;N;;;;;
18971133DB;EGYPTIAN HIEROGLYPH Y001;Lo;0;L;;;;;N;;;;;
18972133DC;EGYPTIAN HIEROGLYPH Y001A;Lo;0;L;;;;;N;;;;;
18973133DD;EGYPTIAN HIEROGLYPH Y002;Lo;0;L;;;;;N;;;;;
18974133DE;EGYPTIAN HIEROGLYPH Y003;Lo;0;L;;;;;N;;;;;
18975133DF;EGYPTIAN HIEROGLYPH Y004;Lo;0;L;;;;;N;;;;;
18976133E0;EGYPTIAN HIEROGLYPH Y005;Lo;0;L;;;;;N;;;;;
18977133E1;EGYPTIAN HIEROGLYPH Y006;Lo;0;L;;;;;N;;;;;
18978133E2;EGYPTIAN HIEROGLYPH Y007;Lo;0;L;;;;;N;;;;;
18979133E3;EGYPTIAN HIEROGLYPH Y008;Lo;0;L;;;;;N;;;;;
18980133E4;EGYPTIAN HIEROGLYPH Z001;Lo;0;L;;;;;N;;;;;
18981133E5;EGYPTIAN HIEROGLYPH Z002;Lo;0;L;;;;;N;;;;;
18982133E6;EGYPTIAN HIEROGLYPH Z002A;Lo;0;L;;;;;N;;;;;
18983133E7;EGYPTIAN HIEROGLYPH Z002B;Lo;0;L;;;;;N;;;;;
18984133E8;EGYPTIAN HIEROGLYPH Z002C;Lo;0;L;;;;;N;;;;;
18985133E9;EGYPTIAN HIEROGLYPH Z002D;Lo;0;L;;;;;N;;;;;
18986133EA;EGYPTIAN HIEROGLYPH Z003;Lo;0;L;;;;;N;;;;;
18987133EB;EGYPTIAN HIEROGLYPH Z003A;Lo;0;L;;;;;N;;;;;
18988133EC;EGYPTIAN HIEROGLYPH Z003B;Lo;0;L;;;;;N;;;;;
18989133ED;EGYPTIAN HIEROGLYPH Z004;Lo;0;L;;;;;N;;;;;
18990133EE;EGYPTIAN HIEROGLYPH Z004A;Lo;0;L;;;;;N;;;;;
18991133EF;EGYPTIAN HIEROGLYPH Z005;Lo;0;L;;;;;N;;;;;
18992133F0;EGYPTIAN HIEROGLYPH Z005A;Lo;0;L;;;;;N;;;;;
18993133F1;EGYPTIAN HIEROGLYPH Z006;Lo;0;L;;;;;N;;;;;
18994133F2;EGYPTIAN HIEROGLYPH Z007;Lo;0;L;;;;;N;;;;;
18995133F3;EGYPTIAN HIEROGLYPH Z008;Lo;0;L;;;;;N;;;;;
18996133F4;EGYPTIAN HIEROGLYPH Z009;Lo;0;L;;;;;N;;;;;
18997133F5;EGYPTIAN HIEROGLYPH Z010;Lo;0;L;;;;;N;;;;;
18998133F6;EGYPTIAN HIEROGLYPH Z011;Lo;0;L;;;;;N;;;;;
18999133F7;EGYPTIAN HIEROGLYPH Z012;Lo;0;L;;;;;N;;;;;
19000133F8;EGYPTIAN HIEROGLYPH Z013;Lo;0;L;;;;;N;;;;;
19001133F9;EGYPTIAN HIEROGLYPH Z014;Lo;0;L;;;;;N;;;;;
19002133FA;EGYPTIAN HIEROGLYPH Z015;Lo;0;L;;;;;N;;;;;
19003133FB;EGYPTIAN HIEROGLYPH Z015A;Lo;0;L;;;;;N;;;;;
19004133FC;EGYPTIAN HIEROGLYPH Z015B;Lo;0;L;;;;;N;;;;;
19005133FD;EGYPTIAN HIEROGLYPH Z015C;Lo;0;L;;;;;N;;;;;
19006133FE;EGYPTIAN HIEROGLYPH Z015D;Lo;0;L;;;;;N;;;;;
19007133FF;EGYPTIAN HIEROGLYPH Z015E;Lo;0;L;;;;;N;;;;;
1900813400;EGYPTIAN HIEROGLYPH Z015F;Lo;0;L;;;;;N;;;;;
1900913401;EGYPTIAN HIEROGLYPH Z015G;Lo;0;L;;;;;N;;;;;
1901013402;EGYPTIAN HIEROGLYPH Z015H;Lo;0;L;;;;;N;;;;;
1901113403;EGYPTIAN HIEROGLYPH Z015I;Lo;0;L;;;;;N;;;;;
1901213404;EGYPTIAN HIEROGLYPH Z016;Lo;0;L;;;;;N;;;;;
1901313405;EGYPTIAN HIEROGLYPH Z016A;Lo;0;L;;;;;N;;;;;
1901413406;EGYPTIAN HIEROGLYPH Z016B;Lo;0;L;;;;;N;;;;;
1901513407;EGYPTIAN HIEROGLYPH Z016C;Lo;0;L;;;;;N;;;;;
1901613408;EGYPTIAN HIEROGLYPH Z016D;Lo;0;L;;;;;N;;;;;
1901713409;EGYPTIAN HIEROGLYPH Z016E;Lo;0;L;;;;;N;;;;;
190181340A;EGYPTIAN HIEROGLYPH Z016F;Lo;0;L;;;;;N;;;;;
190191340B;EGYPTIAN HIEROGLYPH Z016G;Lo;0;L;;;;;N;;;;;
190201340C;EGYPTIAN HIEROGLYPH Z016H;Lo;0;L;;;;;N;;;;;
190211340D;EGYPTIAN HIEROGLYPH AA001;Lo;0;L;;;;;N;;;;;
190221340E;EGYPTIAN HIEROGLYPH AA002;Lo;0;L;;;;;N;;;;;
190231340F;EGYPTIAN HIEROGLYPH AA003;Lo;0;L;;;;;N;;;;;
1902413410;EGYPTIAN HIEROGLYPH AA004;Lo;0;L;;;;;N;;;;;
1902513411;EGYPTIAN HIEROGLYPH AA005;Lo;0;L;;;;;N;;;;;
1902613412;EGYPTIAN HIEROGLYPH AA006;Lo;0;L;;;;;N;;;;;
1902713413;EGYPTIAN HIEROGLYPH AA007;Lo;0;L;;;;;N;;;;;
1902813414;EGYPTIAN HIEROGLYPH AA007A;Lo;0;L;;;;;N;;;;;
1902913415;EGYPTIAN HIEROGLYPH AA007B;Lo;0;L;;;;;N;;;;;
1903013416;EGYPTIAN HIEROGLYPH AA008;Lo;0;L;;;;;N;;;;;
1903113417;EGYPTIAN HIEROGLYPH AA009;Lo;0;L;;;;;N;;;;;
1903213418;EGYPTIAN HIEROGLYPH AA010;Lo;0;L;;;;;N;;;;;
1903313419;EGYPTIAN HIEROGLYPH AA011;Lo;0;L;;;;;N;;;;;
190341341A;EGYPTIAN HIEROGLYPH AA012;Lo;0;L;;;;;N;;;;;
190351341B;EGYPTIAN HIEROGLYPH AA013;Lo;0;L;;;;;N;;;;;
190361341C;EGYPTIAN HIEROGLYPH AA014;Lo;0;L;;;;;N;;;;;
190371341D;EGYPTIAN HIEROGLYPH AA015;Lo;0;L;;;;;N;;;;;
190381341E;EGYPTIAN HIEROGLYPH AA016;Lo;0;L;;;;;N;;;;;
190391341F;EGYPTIAN HIEROGLYPH AA017;Lo;0;L;;;;;N;;;;;
1904013420;EGYPTIAN HIEROGLYPH AA018;Lo;0;L;;;;;N;;;;;
1904113421;EGYPTIAN HIEROGLYPH AA019;Lo;0;L;;;;;N;;;;;
1904213422;EGYPTIAN HIEROGLYPH AA020;Lo;0;L;;;;;N;;;;;
1904313423;EGYPTIAN HIEROGLYPH AA021;Lo;0;L;;;;;N;;;;;
1904413424;EGYPTIAN HIEROGLYPH AA022;Lo;0;L;;;;;N;;;;;
1904513425;EGYPTIAN HIEROGLYPH AA023;Lo;0;L;;;;;N;;;;;
1904613426;EGYPTIAN HIEROGLYPH AA024;Lo;0;L;;;;;N;;;;;
1904713427;EGYPTIAN HIEROGLYPH AA025;Lo;0;L;;;;;N;;;;;
1904813428;EGYPTIAN HIEROGLYPH AA026;Lo;0;L;;;;;N;;;;;
1904913429;EGYPTIAN HIEROGLYPH AA027;Lo;0;L;;;;;N;;;;;
190501342A;EGYPTIAN HIEROGLYPH AA028;Lo;0;L;;;;;N;;;;;
190511342B;EGYPTIAN HIEROGLYPH AA029;Lo;0;L;;;;;N;;;;;
190521342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;;
190531342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;;
190541342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;;
190551D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
190561D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
190571D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
190581D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;
190591D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;
190601D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;
190611D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;
190621D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;
190631D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;
190641D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;
190651D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;
190661D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;
190671D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;
190681D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;
190691D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;
190701D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;
190711D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;
190721D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;
190731D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;
190741D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;
190751D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;
190761D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;
190771D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;
190781D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;
190791D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;
190801D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;
190811D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;
190821D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;
190831D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;
190841D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;
190851D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;
190861D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;
190871D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;
190881D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;
190891D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;
190901D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;
190911D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;
190921D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;
190931D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;
190941D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;
190951D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;
190961D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;
190971D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;
190981D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;
190991D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;
191001D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;
191011D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;
191021D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;
191031D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;
191041D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;
191051D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;
191061D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;
191071D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;
191081D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;
191091D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;
191101D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;
191111D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;
191121D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;
191131D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;
191141D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;
191151D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;
191161D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;
191171D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;
191181D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;
191191D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;
191201D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;
191211D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;
191221D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;
191231D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;
191241D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;
191251D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;
191261D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;
191271D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;
191281D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;
191291D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;
191301D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;
191311D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;
191321D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;
191331D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;
191341D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;
191351D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;
191361D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;
191371D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;
191381D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;
191391D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;
191401D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;
191411D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;
191421D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;
191431D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;
191441D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;
191451D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;
191461D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;
191471D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;
191481D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;
191491D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;
191501D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;
191511D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;
191521D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;
191531D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;
191541D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;
191551D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;
191561D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;
191571D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;
191581D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;
191591D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;
191601D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;
191611D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;
191621D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;
191631D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;
191641D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;
191651D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;
191661D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;
191671D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;
191681D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;
191691D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;
191701D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;
191711D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;
191721D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;
191731D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;
191741D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;
191751D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;
191761D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;
191771D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;
191781D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;
191791D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;
191801D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;
191811D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;
191821D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;
191831D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;
191841D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;
191851D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;
191861D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;
191871D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;
191881D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;
191891D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;
191901D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;
191911D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;
191921D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;
191931D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;
191941D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;
191951D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;
191961D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;
191971D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;
191981D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;
191991D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;
192001D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
192011D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;
192021D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;
192031D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;
192041D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
192051D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;
192061D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;
192071D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;
192081D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;
192091D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;
192101D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;
192111D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;
192121D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;
192131D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;
192141D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;
192151D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;
192161D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;
192171D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;
192181D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;
192191D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
192201D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
192211D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;
192221D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;
192231D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;
192241D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;
192251D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;
192261D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;
192271D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
192281D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
192291D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;
192301D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;
192311D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;
192321D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;
192331D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;
192341D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;
192351D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;
192361D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;
192371D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;
192381D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;
192391D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;
192401D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;
192411D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;
192421D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;
192431D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;
192441D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;
192451D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;
192461D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;
192471D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;
192481D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;
192491D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;
192501D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;
192511D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;
192521D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;
192531D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;
192541D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;
192551D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;
192561D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;
192571D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;
192581D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;
192591D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;
192601D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;
192611D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;
192621D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;
192631D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
192641D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
192651D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
192661D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
192671D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
192681D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
192691D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
192701D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
192711D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;
192721D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;
192731D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;
192741D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;
192751D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;
192761D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;
192771D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;
192781D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;
192791D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;
192801D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;
192811D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;
192821D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;
192831D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;
192841D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;
192851D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;
192861D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;
192871D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;
192881D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;
192891D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;
192901D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;
192911D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;
192921D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;
192931D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;
192941D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;
192951D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;
192961D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;
192971D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;
192981D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;
192991D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;
193001D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;
193011D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;
193021D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;
193031D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;
193041D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;
193051D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;
193061D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;
193071D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;
193081D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;
193091D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;
193101D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;
193111D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;
193121D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;
193131D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;
193141D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;
193151D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;
193161D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;
193171D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;
193181D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;
193191D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;
193201D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;
193211D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;
193221D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;
193231D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;
193241D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;
193251D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;
193261D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;
193271D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;
193281D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;
193291D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;
193301D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;
193311D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;
193321D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
193331D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
193341D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;
193351D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;
193361D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
193371D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
193381D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;
193391D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;
193401D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;So;0;L;;;;;N;;;;;
193411D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;
193421D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;
193431D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;
193441D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;
193451D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;
193461D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;
193471D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;
193481D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;
193491D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;
193501D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;
193511D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;
193521D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;
193531D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;
193541D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;
193551D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;
193561D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;
193571D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;
193581D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;
193591D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;
193601D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;
193611D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;
193621D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;
193631D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;
193641D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;
193651D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;
193661D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;
193671D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;
193681D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;
193691D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
193701D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
193711D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;
193721D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;
193731D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;
193741D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;
193751D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;
193761D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;
193771D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
193781D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
193791D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;
193801D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;
193811D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
193821D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
193831D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
193841D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
193851D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;
193861D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;
193871D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
193881D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;
193891D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
193901D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
193911D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;
193921D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;
193931D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;
193941D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;
193951D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;
193961D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;
193971D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;
193981D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;
193991D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;
194001D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;
194011D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;
194021D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;
194031D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;
194041D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;
194051D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;
194061D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;
194071D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;
194081D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;
194091D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;
194101D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;
194111D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;
194121D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;
194131D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;
194141D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;
194151D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;
194161D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;
194171D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;
194181D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;
194191D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;
194201D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;
194211D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;
194221D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;
194231D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;
194241D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;
194251D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;
194261D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;
194271D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;
194281D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;
194291D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;
194301D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;
194311D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;
194321D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;
194331D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;
194341D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;
194351D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;
194361D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;
194371D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;
194381D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;
194391D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;
194401D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;
194411D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;
194421D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;
194431D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;
194441D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;
194451D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;
194461D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;
194471D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;
194481D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;
194491D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;
194501D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;
194511D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;
194521D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;
194531D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;
194541D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;
194551D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;
194561D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;
194571D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;
194581D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;
194591D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;
194601D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;
194611D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;
194621D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;
194631D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;
194641D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;
194651D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;
194661D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;
194671D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;
194681D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;
194691D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;
194701D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;
194711D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;
194721D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;
194731D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;
194741D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;
194751D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;
194761D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;
194771D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;
194781D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;
194791D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;
194801D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;
194811D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;
194821D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;
194831D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;
194841D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;
194851D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;
194861D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;
194871D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;
194881D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;
194891D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;
194901D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;
194911D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;
194921D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;
194931D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;
194941D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;
194951D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;
194961D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;
194971D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;
194981D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
194991D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
195001D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
195011D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
195021D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
195031D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
195041D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;
195051D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;
195061D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;
195071D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;
195081D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;
195091D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;
195101D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;
195111D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;
195121D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;
195131D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;
195141D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;
195151D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;
195161D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;
195171D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;
195181D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;
195191D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;
195201D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;
195211D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
195221D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
195231D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;;
195241D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
195251D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
195261D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;;
195271D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
195281D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
195291D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;;
195301D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;;
195311D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
195321D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
195331D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
195341D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
195351D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;;
195361D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;;
195371D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
195381D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
195391D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
195401D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;;
195411D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;;
195421D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;;
195431D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
195441D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
195451D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
195461D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
195471D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
195481D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
195491D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
195501D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
195511D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
195521D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
195531D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
195541D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
195551D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
195561D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
195571D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
195581D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
195591D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
195601D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
195611D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
195621D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
195631D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
195641D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
195651D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;;
195661D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;;
195671D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;;
195681D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;;
195691D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;;
195701D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;;
195711D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;;
195721D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;;
195731D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;;
195741D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;;
195751D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;;
195761D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;;
195771D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;;
195781D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;;
195791D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;;
195801D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;;
195811D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;;
195821D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
195831D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
195841D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
195851D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
195861D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
195871D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;;
195881D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
195891D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
195901D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
195911D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
195921D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;;
195931D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;;
195941D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;;
195951D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;;
195961D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
195971D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;;
195981D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;;
195991D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;;
196001D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;;
196011D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;;
196021D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;;
196031D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;;
196041D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
196051D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;;
196061D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;;
196071D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;;
196081D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;;
196091D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
196101D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;;
196111D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;;
196121D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;;
196131D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;;
196141D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
196151D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
196161D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;;
196171D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;;
196181D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;;
196191D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;;
196201D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;;
196211D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;;
196221D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;;
196231D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;;
196241D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;;
196251D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;;
196261D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;;
196271D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;;
196281D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;;
196291D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;;
196301D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;;
196311D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;;
196321D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;;
196331D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;;
196341D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;;
196351D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;;
196361D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;;
196371D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;;
196381D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;;
196391D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;;
196401D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;;
196411D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;;
196421D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;;
196431D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;;
196441D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;;
196451D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;;
196461D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;;
196471D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;;
196481D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;;
196491D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;;
196501D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;;
196511D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;;
196521D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;;
196531D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;;
196541D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;;
196551D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;;
196561D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;;
196571D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;;
196581D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;;
196591D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;;
196601D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;;
196611D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;;
196621D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;;
196631D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;;
196641D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;;
196651D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;;
196661D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;;
196671D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;;
196681D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;;
196691D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;;
196701D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;;
196711D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;;
196721D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;;
196731D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;;
196741D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;;
196751D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;;
196761D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;;
196771D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;;
196781D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;;
196791D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;;
196801D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;;
196811D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;;
196821D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;;
196831D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;;
196841D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;;
196851D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;;
196861D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;;
196871D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;;
196881D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;;
196891D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;;
196901D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;;
196911D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;;
196921D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;;
196931D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;;
196941D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;;
196951D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;;
196961D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
196971D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
196981D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
196991D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
197001D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
197011D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
197021D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
197031D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
197041D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
197051D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
197061D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
197071D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
197081D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
197091D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
197101D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
197111D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
197121D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
197131D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
197141D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
197151D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
197161D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
197171D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
197181D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
197191D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
197201D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
197211D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
197221D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
197231D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
197241D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
197251D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
197261D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
197271D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
197281D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
197291D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
197301D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
197311D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
197321D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
197331D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
197341D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
197351D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
197361D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
197371D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
197381D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
197391D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
197401D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
197411D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
197421D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
197431D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
197441D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
197451D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
197461D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
197471D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
197481D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
197491D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
197501D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
197511D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
197521D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
197531D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
197541D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
197551D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
197561D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
197571D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
197581D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
197591D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
197601D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
197611D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
197621D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
197631D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
197641D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
197651D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
197661D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
197671D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
197681D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
197691D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
197701D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
197711D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
197721D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
197731D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
197741D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
197751D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
197761D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
197771D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
197781D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
197791D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
197801D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
197811D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
197821D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
197831D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
197841D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
197851D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
197861D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
197871D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
197881D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
197891D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
197901D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
197911D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
197921D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
197931D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
197941D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
197951D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
197961D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
197971D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
197981D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
197991D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
198001D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
198011D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
198021D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
198031D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
198041D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
198051D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
198061D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
198071D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
198081D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
198091D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
198101D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
198111D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
198121D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
198131D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
198141D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
198151D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
198161D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
198171D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
198181D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
198191D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
198201D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
198211D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
198221D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
198231D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
198241D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
198251D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
198261D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
198271D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
198281D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
198291D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
198301D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
198311D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
198321D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
198331D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
198341D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
198351D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
198361D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
198371D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
198381D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
198391D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
198401D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
198411D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
198421D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
198431D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
198441D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
198451D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
198461D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
198471D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
198481D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
198491D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
198501D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
198511D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
198521D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
198531D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
198541D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
198551D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
198561D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
198571D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
198581D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
198591D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
198601D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
198611D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
198621D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
198631D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
198641D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
198651D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
198661D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
198671D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
198681D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
198691D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
198701D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
198711D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
198721D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
198731D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
198741D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
198751D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
198761D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
198771D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
198781D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
198791D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
198801D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
198811D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
198821D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
198831D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
198841D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
198851D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
198861D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
198871D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
198881D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
198891D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
198901D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
198911D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
198921D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
198931D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
198941D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
198951D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
198961D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
198971D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
198981D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
198991D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
199001D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
199011D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
199021D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
199031D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
199041D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
199051D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
199061D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
199071D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
199081D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
199091D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
199101D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
199111D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
199121D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
199131D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
199141D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
199151D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
199161D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
199171D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
199181D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
199191D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
199201D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
199211D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
199221D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
199231D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
199241D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
199251D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
199261D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
199271D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
199281D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
199291D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
199301D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
199311D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
199321D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
199331D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
199341D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
199351D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
199361D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
199371D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
199381D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
199391D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
199401D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
199411D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
199421D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
199431D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
199441D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
199451D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
199461D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
199471D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
199481D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
199491D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
199501D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
199511D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
199521D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
199531D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
199541D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
199551D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
199561D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
199571D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
199581D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
199591D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
199601D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
199611D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
199621D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
199631D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
199641D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
199651D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
199661D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
199671D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
199681D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
199691D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
199701D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
199711D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
199721D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
199731D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
199741D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
199751D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
199761D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
199771D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
199781D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
199791D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
199801D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
199811D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
199821D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
199831D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
199841D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
199851D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
199861D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
199871D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
199881D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
199891D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
199901D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
199911D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
199921D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
199931D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
199941D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
199951D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
199961D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
199971D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
199981D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
199991D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
200001D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
200011D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
200021D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
200031D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
200041D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
200051D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
200061D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
200071D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
200081D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
200091D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
200101D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
200111D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
200121D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
200131D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
200141D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
200151D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
200161D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
200171D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
200181D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
200191D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
200201D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
200211D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
200221D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
200231D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
200241D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
200251D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
200261D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
200271D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
200281D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
200291D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
200301D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
200311D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
200321D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
200331D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
200341D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
200351D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
200361D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
200371D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
200381D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
200391D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
200401D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
200411D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
200421D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
200431D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
200441D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
200451D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
200461D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
200471D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
200481D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
200491D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
200501D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
200511D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
200521D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
200531D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
200541D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
200551D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
200561D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
200571D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
200581D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
200591D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
200601D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
200611D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
200621D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
200631D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
200641D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
200651D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
200661D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
200671D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
200681D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
200691D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
200701D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
200711D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
200721D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
200731D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
200741D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
200751D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
200761D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
200771D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
200781D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
200791D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
200801D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
200811D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
200821D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
200831D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
200841D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
200851D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
200861D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
200871D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
200881D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
200891D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
200901D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
200911D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
200921D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
200931D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
200941D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
200951D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
200961D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
200971D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
200981D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
200991D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
201001D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
201011D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
201021D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
201031D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
201041D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
201051D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
201061D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
201071D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
201081D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
201091D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
201101D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
201111D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
201121D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
201131D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
201141D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
201151D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
201161D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
201171D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
201181D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
201191D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
201201D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
201211D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
201221D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
201231D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
201241D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
201251D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
201261D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
201271D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
201281D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
201291D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
201301D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
201311D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
201321D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
201331D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
201341D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
201351D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
201361D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
201371D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
201381D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
201391D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
201401D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
201411D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
201421D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
201431D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
201441D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
201451D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
201461D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
201471D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
201481D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
201491D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
201501D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
201511D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
201521D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
201531D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
201541D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
201551D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
201561D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
201571D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
201581D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
201591D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
201601D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
201611D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
201621D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
201631D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
201641D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
201651D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
201661D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
201671D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
201681D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
201691D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
201701D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
201711D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
201721D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
201731D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
201741D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
201751D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
201761D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
201771D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
201781D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
201791D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
201801D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
201811D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
201821D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
201831D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
201841D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
201851D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
201861D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
201871D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
201881D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
201891D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
201901D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
201911D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
201921D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
201931D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
201941D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
201951D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
201961D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
201971D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
201981D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
201991D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
202001D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
202011D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
202021D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
202031D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
202041D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
202051D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
202061D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
202071D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
202081D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
202091D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
202101D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
202111D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
202121D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
202131D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
202141D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
202151D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
202161D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
202171D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
202181D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
202191D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
202201D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
202211D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
202221D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
202231D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
202241D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
202251D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
202261D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
202271D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
202281D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
202291D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
202301D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
202311D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
202321D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
202331D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
202341D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
202351D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
202361D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
202371D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
202381D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
202391D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
202401D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
202411D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
202421D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
202431D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
202441D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
202451D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
202461D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
202471D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
202481D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
202491D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
202501D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
202511D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
202521D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
202531D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
202541D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
202551D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
202561D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
202571D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
202581D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
202591D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
202601D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
202611D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
202621D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
202631D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
202641D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
202651D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
202661D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
202671D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
202681D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
202691D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
202701D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
202711D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
202721D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
202731D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
202741D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
202751D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
202761D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
202771D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
202781D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
202791D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
202801D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
202811D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
202821D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
202831D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
202841D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
202851D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
202861D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
202871D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
202881D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
202891D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
202901D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
202911D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
202921D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
202931D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
202941D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
202951D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
202961D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
202971D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
202981D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
202991D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
203001D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
203011D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
203021D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
203031D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
203041D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
203051D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
203061D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
203071D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
203081D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
203091D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
203101D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
203111D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
203121D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
203131D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
203141D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
203151D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
203161D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
203171D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
203181D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
203191D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
203201D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
203211D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
203221D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
203231D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
203241D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
203251D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
203261D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
203271D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
203281D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
203291D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
203301D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
203311D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
203321D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
203331D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
203341D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
203351D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
203361D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
203371D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
203381D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
203391D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
203401D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
203411D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
203421D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
203431D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
203441D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
203451D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
203461D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
203471D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
203481D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;;
203491D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;N;;;;;
203501D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
203511D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
203521D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
203531D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
203541D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
203551D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
203561D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
203571D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
203581D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
203591D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
203601D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
203611D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
203621D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
203631D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
203641D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
203651D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
203661D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
203671D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
203681D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
203691D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
203701D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
203711D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
203721D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
203731D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
203741D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
203751D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
203761D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
203771D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
203781D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
203791D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
203801D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
203811D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
203821D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
203831D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
203841D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
203851D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
203861D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
203871D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
203881D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
203891D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
203901D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
203911D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
203921D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
203931D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
203941D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
203951D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
203961D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
203971D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
203981D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
203991D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
204001D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
204011D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
204021D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
204031D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
204041D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
204051D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
204061D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
204071D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
204081D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
204091D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
204101D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
204111D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
204121D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
204131D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
204141D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
204151D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
204161D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
204171D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
204181D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
204191D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
204201D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
204211D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
204221D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
204231D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
204241D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
204251D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
204261D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
204271D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
204281D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
204291D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
204301D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
204311D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
204321D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
204331D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
204341D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
204351D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
204361D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
204371D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
204381D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
204391D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
204401D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
204411D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
204421D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
204431D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
204441D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
204451D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
204461D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
204471D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
204481D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
204491D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
204501D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
204511D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
204521D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
204531D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
204541D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
204551D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
204561D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
204571D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
204581D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
204591D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
204601D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
204611D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
204621D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
204631D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
204641D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
204651D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
204661D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
204671D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
204681D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
204691D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
204701D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
204711D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
204721D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
204731D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
204741D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
204751D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
204761D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
204771D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
204781D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
204791D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
204801D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
204811D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
204821D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
204831D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
204841D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
204851D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
204861D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
204871D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
204881D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
204891D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
204901D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
204911D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
204921D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
204931D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
204941D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
204951D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
204961D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
204971D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
204981D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
204991D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
205001D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
205011D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
205021D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
205031D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
205041D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
205051D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
205061D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
205071D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
205081D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
205091D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
205101D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
205111D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
205121D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
205131D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
205141D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
205151D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
205161D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
205171D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
205181D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
205191D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
205201D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
205211D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
205221D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
205231D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
205241D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
205251D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
205261D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
205271D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
205281D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
205291D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
205301D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
205311D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
205321D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
205331D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
205341D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
205351D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
205361D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
205371D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
205381D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
205391D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
205401D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
205411D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
205421D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
205431D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
205441D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
205451D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
205461D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
205471D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
205481D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
205491D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
205501D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
205511D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
205521D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
205531D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
205541D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
205551D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
205561D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
205571D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
205581D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
205591D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
205601D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
205611D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
205621D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
205631D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
205641D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
205651D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
205661D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
205671D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
205681D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
205691D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
205701D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
205711D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
205721D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
205731D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
205741D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
205751D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
205761D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
205771D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
205781D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
205791D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
205801D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
205811D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
205821D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
205831D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
205841D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
205851D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
205861D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
205871D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
205881D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
205891D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
205901D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
205911D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
205921D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
205931D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
205941D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
205951D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
205961D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
205971D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
205981D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
205991D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
206001D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
206011D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
206021D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
206031D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
206041D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
206051D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
206061D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
206071D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
206081D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
206091D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
206101D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
206111D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
206121D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
206131D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
206141D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
206151D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
206161D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
206171D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
206181D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
206191D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
206201D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
206211D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
206221D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
206231D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
206241D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
206251D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
206261D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
206271D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
206281D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
206291D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
206301D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
206311D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
206321D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
206331D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
206341D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
206351D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
206361D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
206371D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
206381D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
206391D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
206401D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L;<font> 03DC;;;;N;;;;;
206411D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L;<font> 03DD;;;;N;;;;;
206421D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
206431D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
206441D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
206451D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
206461D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
206471D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
206481D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
206491D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
206501D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
206511D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
206521D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
206531D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
206541D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
206551D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
206561D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
206571D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
206581D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
206591D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
206601D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
206611D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
206621D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
206631D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
206641D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
206651D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
206661D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
206671D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
206681D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
206691D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
206701D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
206711D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
206721D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
206731D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
206741D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
206751D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
206761D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
206771D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
206781D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
206791D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
206801D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
206811D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
206821D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
206831D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
206841D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
206851D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
206861D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
206871D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
206881D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
206891D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
206901D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
206911D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
206921F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;;
206931F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;;
206941F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;;
206951F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;;
206961F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;;
206971F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;;
206981F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;;
206991F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;;
207001F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;;
207011F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;;
207021F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;;
207031F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;;
207041F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;;
207051F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;;
207061F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;;
207071F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;;
207081F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;;
207091F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;;
207101F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;;
207111F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;;
207121F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;;
207131F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;;
207141F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;;
207151F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;;
207161F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;;
207171F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;;
207181F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;;
207191F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;;
207201F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;;
207211F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;;
207221F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;;
207231F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;;
207241F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;;
207251F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;;
207261F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;;
207271F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;;
207281F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;;
207291F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;;
207301F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;;
207311F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;;
207321F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;;
207331F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;;
207341F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;;
207351F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;;
207361F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;;
207371F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;;
207381F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;;
207391F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;;
207401F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;;
207411F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;;
207421F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;;
207431F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;;
207441F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;;
207451F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;;
207461F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;;
207471F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;;
207481F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;;
207491F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;;
207501F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;;
207511F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;;
207521F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;;
207531F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;;
207541F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;;
207551F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;;
207561F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;;
207571F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;;
207581F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;;
207591F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;;
207601F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;;
207611F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;;
207621F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;;
207631F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;;
207641F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;;
207651F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;;
207661F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;;
207671F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;;
207681F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;;
207691F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;;
207701F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;;
207711F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;;
207721F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;;
207731F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;;
207741F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;;
207751F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;;
207761F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;;
207771F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;;
207781F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;;
207791F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;;
207801F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;;
207811F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;;
207821F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;;
207831F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;;
207841F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;;
207851F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;;
207861F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;;
207871F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;;
207881F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;;
207891F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;;
207901F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;;
207911F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;;
207921F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;;
207931F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;;
207941F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;;
207951F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;;
207961F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;;
207971F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;;
207981F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;;
207991F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;;
208001F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;;
208011F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;;
208021F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;;
208031F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;;
208041F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;;
208051F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;;
208061F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;;
208071F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;;
208081F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;;
208091F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;;
208101F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;;
208111F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;;
208121F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;;
208131F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;;
208141F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;;
208151F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;;
208161F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;;
208171F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;;
208181F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;;
208191F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;;
208201F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;;
208211F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;;
208221F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;;
208231F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;;
208241F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;;
208251F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;;
208261F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;;
208271F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;;
208281F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;;
208291F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;;
208301F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;;
208311F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;;
208321F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;;
208331F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;;
208341F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;;
208351F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;N;;;;;
208361F100;DIGIT ZERO FULL STOP;No;0;EN;<compat> 0030 002E;;0;0;N;;;;;
208371F101;DIGIT ZERO COMMA;No;0;EN;<compat> 0030 002C;;0;0;N;;;;;
208381F102;DIGIT ONE COMMA;No;0;EN;<compat> 0031 002C;;1;1;N;;;;;
208391F103;DIGIT TWO COMMA;No;0;EN;<compat> 0032 002C;;2;2;N;;;;;
208401F104;DIGIT THREE COMMA;No;0;EN;<compat> 0033 002C;;3;3;N;;;;;
208411F105;DIGIT FOUR COMMA;No;0;EN;<compat> 0034 002C;;4;4;N;;;;;
208421F106;DIGIT FIVE COMMA;No;0;EN;<compat> 0035 002C;;5;5;N;;;;;
208431F107;DIGIT SIX COMMA;No;0;EN;<compat> 0036 002C;;6;6;N;;;;;
208441F108;DIGIT SEVEN COMMA;No;0;EN;<compat> 0037 002C;;7;7;N;;;;;
208451F109;DIGIT EIGHT COMMA;No;0;EN;<compat> 0038 002C;;8;8;N;;;;;
208461F10A;DIGIT NINE COMMA;No;0;EN;<compat> 0039 002C;;9;9;N;;;;;
208471F110;PARENTHESIZED LATIN CAPITAL LETTER A;So;0;L;<compat> 0028 0041 0029;;;;N;;;;;
208481F111;PARENTHESIZED LATIN CAPITAL LETTER B;So;0;L;<compat> 0028 0042 0029;;;;N;;;;;
208491F112;PARENTHESIZED LATIN CAPITAL LETTER C;So;0;L;<compat> 0028 0043 0029;;;;N;;;;;
208501F113;PARENTHESIZED LATIN CAPITAL LETTER D;So;0;L;<compat> 0028 0044 0029;;;;N;;;;;
208511F114;PARENTHESIZED LATIN CAPITAL LETTER E;So;0;L;<compat> 0028 0045 0029;;;;N;;;;;
208521F115;PARENTHESIZED LATIN CAPITAL LETTER F;So;0;L;<compat> 0028 0046 0029;;;;N;;;;;
208531F116;PARENTHESIZED LATIN CAPITAL LETTER G;So;0;L;<compat> 0028 0047 0029;;;;N;;;;;
208541F117;PARENTHESIZED LATIN CAPITAL LETTER H;So;0;L;<compat> 0028 0048 0029;;;;N;;;;;
208551F118;PARENTHESIZED LATIN CAPITAL LETTER I;So;0;L;<compat> 0028 0049 0029;;;;N;;;;;
208561F119;PARENTHESIZED LATIN CAPITAL LETTER J;So;0;L;<compat> 0028 004A 0029;;;;N;;;;;
208571F11A;PARENTHESIZED LATIN CAPITAL LETTER K;So;0;L;<compat> 0028 004B 0029;;;;N;;;;;
208581F11B;PARENTHESIZED LATIN CAPITAL LETTER L;So;0;L;<compat> 0028 004C 0029;;;;N;;;;;
208591F11C;PARENTHESIZED LATIN CAPITAL LETTER M;So;0;L;<compat> 0028 004D 0029;;;;N;;;;;
208601F11D;PARENTHESIZED LATIN CAPITAL LETTER N;So;0;L;<compat> 0028 004E 0029;;;;N;;;;;
208611F11E;PARENTHESIZED LATIN CAPITAL LETTER O;So;0;L;<compat> 0028 004F 0029;;;;N;;;;;
208621F11F;PARENTHESIZED LATIN CAPITAL LETTER P;So;0;L;<compat> 0028 0050 0029;;;;N;;;;;
208631F120;PARENTHESIZED LATIN CAPITAL LETTER Q;So;0;L;<compat> 0028 0051 0029;;;;N;;;;;
208641F121;PARENTHESIZED LATIN CAPITAL LETTER R;So;0;L;<compat> 0028 0052 0029;;;;N;;;;;
208651F122;PARENTHESIZED LATIN CAPITAL LETTER S;So;0;L;<compat> 0028 0053 0029;;;;N;;;;;
208661F123;PARENTHESIZED LATIN CAPITAL LETTER T;So;0;L;<compat> 0028 0054 0029;;;;N;;;;;
208671F124;PARENTHESIZED LATIN CAPITAL LETTER U;So;0;L;<compat> 0028 0055 0029;;;;N;;;;;
208681F125;PARENTHESIZED LATIN CAPITAL LETTER V;So;0;L;<compat> 0028 0056 0029;;;;N;;;;;
208691F126;PARENTHESIZED LATIN CAPITAL LETTER W;So;0;L;<compat> 0028 0057 0029;;;;N;;;;;
208701F127;PARENTHESIZED LATIN CAPITAL LETTER X;So;0;L;<compat> 0028 0058 0029;;;;N;;;;;
208711F128;PARENTHESIZED LATIN CAPITAL LETTER Y;So;0;L;<compat> 0028 0059 0029;;;;N;;;;;
208721F129;PARENTHESIZED LATIN CAPITAL LETTER Z;So;0;L;<compat> 0028 005A 0029;;;;N;;;;;
208731F12A;TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S;So;0;L;<compat> 3014 0053 3015;;;;N;;;;;
208741F12B;CIRCLED ITALIC LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;;
208751F12C;CIRCLED ITALIC LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;;
208761F12D;CIRCLED CD;So;0;L;<circle> 0043 0044;;;;N;;;;;
208771F12E;CIRCLED WZ;So;0;L;<circle> 0057 005A;;;;N;;;;;
208781F131;SQUARED LATIN CAPITAL LETTER B;So;0;L;<square> 0042;;;;N;;;;;
208791F13D;SQUARED LATIN CAPITAL LETTER N;So;0;L;<square> 004E;;;;N;;;;;
208801F13F;SQUARED LATIN CAPITAL LETTER P;So;0;L;<square> 0050;;;;N;;;;;
208811F142;SQUARED LATIN CAPITAL LETTER S;So;0;L;<square> 0053;;;;N;;;;;
208821F146;SQUARED LATIN CAPITAL LETTER W;So;0;L;<square> 0057;;;;N;;;;;
208831F14A;SQUARED HV;So;0;L;<square> 0048 0056;;;;N;;;;;
208841F14B;SQUARED MV;So;0;L;<square> 004D 0056;;;;N;;;;;
208851F14C;SQUARED SD;So;0;L;<square> 0053 0044;;;;N;;;;;
208861F14D;SQUARED SS;So;0;L;<square> 0053 0053;;;;N;;;;;
208871F14E;SQUARED PPV;So;0;L;<square> 0050 0050 0056;;;;N;;;;;
208881F157;NEGATIVE CIRCLED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;;
208891F15F;NEGATIVE CIRCLED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
208901F179;NEGATIVE SQUARED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;;
208911F17B;NEGATIVE SQUARED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;;
208921F17C;NEGATIVE SQUARED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;;
208931F17F;NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
208941F18A;CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
208951F18B;NEGATIVE SQUARED IC;So;0;L;;;;;N;;;;;
208961F18C;NEGATIVE SQUARED PA;So;0;L;;;;;N;;;;;
208971F18D;NEGATIVE SQUARED SA;So;0;L;;;;;N;;;;;
208981F190;SQUARE DJ;So;0;L;<square> 0044 004A;;;;N;;;;;
208991F200;SQUARE HIRAGANA HOKA;So;0;L;<square> 307B 304B;;;;N;;;;;
209001F210;SQUARED CJK UNIFIED IDEOGRAPH-624B;So;0;L;<square> 624B;;;;N;;;;;
209011F211;SQUARED CJK UNIFIED IDEOGRAPH-5B57;So;0;L;<square> 5B57;;;;N;;;;;
209021F212;SQUARED CJK UNIFIED IDEOGRAPH-53CC;So;0;L;<square> 53CC;;;;N;;;;;
209031F213;SQUARED KATAKANA DE;So;0;L;<square> 30C7;;;;N;;;;;
209041F214;SQUARED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L;<square> 4E8C;;;;N;;;;;
209051F215;SQUARED CJK UNIFIED IDEOGRAPH-591A;So;0;L;<square> 591A;;;;N;;;;;
209061F216;SQUARED CJK UNIFIED IDEOGRAPH-89E3;So;0;L;<square> 89E3;;;;N;;;;;
209071F217;SQUARED CJK UNIFIED IDEOGRAPH-5929;So;0;L;<square> 5929;;;;N;;;;;
209081F218;SQUARED CJK UNIFIED IDEOGRAPH-4EA4;So;0;L;<square> 4EA4;;;;N;;;;;
209091F219;SQUARED CJK UNIFIED IDEOGRAPH-6620;So;0;L;<square> 6620;;;;N;;;;;
209101F21A;SQUARED CJK UNIFIED IDEOGRAPH-7121;So;0;L;<square> 7121;;;;N;;;;;
209111F21B;SQUARED CJK UNIFIED IDEOGRAPH-6599;So;0;L;<square> 6599;;;;N;;;;;
209121F21C;SQUARED CJK UNIFIED IDEOGRAPH-524D;So;0;L;<square> 524D;;;;N;;;;;
209131F21D;SQUARED CJK UNIFIED IDEOGRAPH-5F8C;So;0;L;<square> 5F8C;;;;N;;;;;
209141F21E;SQUARED CJK UNIFIED IDEOGRAPH-518D;So;0;L;<square> 518D;;;;N;;;;;
209151F21F;SQUARED CJK UNIFIED IDEOGRAPH-65B0;So;0;L;<square> 65B0;;;;N;;;;;
209161F220;SQUARED CJK UNIFIED IDEOGRAPH-521D;So;0;L;<square> 521D;;;;N;;;;;
209171F221;SQUARED CJK UNIFIED IDEOGRAPH-7D42;So;0;L;<square> 7D42;;;;N;;;;;
209181F222;SQUARED CJK UNIFIED IDEOGRAPH-751F;So;0;L;<square> 751F;;;;N;;;;;
209191F223;SQUARED CJK UNIFIED IDEOGRAPH-8CA9;So;0;L;<square> 8CA9;;;;N;;;;;
209201F224;SQUARED CJK UNIFIED IDEOGRAPH-58F0;So;0;L;<square> 58F0;;;;N;;;;;
209211F225;SQUARED CJK UNIFIED IDEOGRAPH-5439;So;0;L;<square> 5439;;;;N;;;;;
209221F226;SQUARED CJK UNIFIED IDEOGRAPH-6F14;So;0;L;<square> 6F14;;;;N;;;;;
209231F227;SQUARED CJK UNIFIED IDEOGRAPH-6295;So;0;L;<square> 6295;;;;N;;;;;
209241F228;SQUARED CJK UNIFIED IDEOGRAPH-6355;So;0;L;<square> 6355;;;;N;;;;;
209251F229;SQUARED CJK UNIFIED IDEOGRAPH-4E00;So;0;L;<square> 4E00;;;;N;;;;;
209261F22A;SQUARED CJK UNIFIED IDEOGRAPH-4E09;So;0;L;<square> 4E09;;;;N;;;;;
209271F22B;SQUARED CJK UNIFIED IDEOGRAPH-904A;So;0;L;<square> 904A;;;;N;;;;;
209281F22C;SQUARED CJK UNIFIED IDEOGRAPH-5DE6;So;0;L;<square> 5DE6;;;;N;;;;;
209291F22D;SQUARED CJK UNIFIED IDEOGRAPH-4E2D;So;0;L;<square> 4E2D;;;;N;;;;;
209301F22E;SQUARED CJK UNIFIED IDEOGRAPH-53F3;So;0;L;<square> 53F3;;;;N;;;;;
209311F22F;SQUARED CJK UNIFIED IDEOGRAPH-6307;So;0;L;<square> 6307;;;;N;;;;;
209321F230;SQUARED CJK UNIFIED IDEOGRAPH-8D70;So;0;L;<square> 8D70;;;;N;;;;;
209331F231;SQUARED CJK UNIFIED IDEOGRAPH-6253;So;0;L;<square> 6253;;;;N;;;;;
209341F240;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C;So;0;L;<compat> 3014 672C 3015;;;;N;;;;;
209351F241;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09;So;0;L;<compat> 3014 4E09 3015;;;;N;;;;;
209361F242;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L;<compat> 3014 4E8C 3015;;;;N;;;;;
209371F243;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89;So;0;L;<compat> 3014 5B89 3015;;;;N;;;;;
209381F244;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9;So;0;L;<compat> 3014 70B9 3015;;;;N;;;;;
209391F245;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253;So;0;L;<compat> 3014 6253 3015;;;;N;;;;;
209401F246;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7;So;0;L;<compat> 3014 76D7 3015;;;;N;;;;;
209411F247;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD;So;0;L;<compat> 3014 52DD 3015;;;;N;;;;;
209421F248;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557;So;0;L;<compat> 3014 6557 3015;;;;N;;;;;
2094320000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
209442A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
209452A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
209462B734;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;;
209472F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
209482F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
209492F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
209502F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;
209512F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;
209522F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;
209532F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;
209542F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;
209552F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;
209562F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;
209572F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;
209582F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;
209592F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;
209602F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;
209612F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;
209622F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;
209632F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;
209642F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;
209652F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;
209662F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;
209672F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;
209682F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;
209692F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;
209702F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;
209712F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;
209722F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;
209732F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;
209742F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;
209752F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;
209762F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;
209772F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;
209782F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;
209792F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;
209802F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;
209812F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;
209822F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;
209832F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;
209842F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;
209852F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;
209862F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;
209872F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;
209882F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;
209892F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;
209902F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;
209912F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;
209922F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;
209932F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;
209942F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;
209952F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;
209962F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;
209972F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;
209982F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;
209992F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;
210002F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;
210012F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;
210022F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;
210032F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;
210042F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;
210052F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;
210062F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;
210072F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;
210082F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;
210092F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;
210102F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;
210112F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;
210122F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;
210132F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;
210142F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;
210152F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;
210162F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;
210172F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;
210182F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;
210192F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;
210202F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;
210212F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;
210222F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;
210232F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;
210242F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;
210252F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;
210262F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;
210272F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;
210282F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;
210292F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;
210302F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;
210312F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;
210322F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;
210332F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;
210342F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;
210352F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;
210362F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;
210372F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;
210382F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;
210392F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;
210402F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;
210412F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;
210422F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;
210432F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;
210442F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;
210452F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;
210462F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;
210472F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;
210482F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;
210492F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;
210502F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;
210512F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;;
210522F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;
210532F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;
210542F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;
210552F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;
210562F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;
210572F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;
210582F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;
210592F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;
210602F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;
210612F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;
210622F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;
210632F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;;
210642F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;
210652F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;
210662F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;
210672F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;
210682F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;
210692F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;
210702F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;
210712F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;
210722F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;
210732F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;
210742F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;
210752F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;
210762F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;
210772F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;
210782F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;
210792F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;
210802F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;
210812F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;
210822F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;
210832F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;
210842F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;
210852F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;
210862F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;
210872F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;
210882F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;
210892F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;
210902F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;
210912F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;9;N;;;;;
210922F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;
210932F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;
210942F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;
210952F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;
210962F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;
210972F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;
210982F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;
210992F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;
211002F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;
211012F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;
211022F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;
211032F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;
211042F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;
211052F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;
211062F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;
211072F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;
211082F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;
211092F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;
211102F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;
211112F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;
211122F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;
211132F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;
211142F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;
211152F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;
211162F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;
211172F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;
211182F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;
211192F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;
211202F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;
211212F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;
211222F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;
211232F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;
211242F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;
211252F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;
211262F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;
211272F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;
211282F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;
211292F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;
211302F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;
211312F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;
211322F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;
211332F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;
211342F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;
211352F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;
211362F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;
211372F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;
211382F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;
211392F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;
211402F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;
211412F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;
211422F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;
211432F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;
211442F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;
211452F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;
211462F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;
211472F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;
211482F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;
211492F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;
211502F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;
211512F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;
211522F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;
211532F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;
211542F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;
211552F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;
211562F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;
211572F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;
211582F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;
211592F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;
211602F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;
211612F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;
211622F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;
211632F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;
211642F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;
211652F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;
211662F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;
211672F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;
211682F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;
211692F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;
211702F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;
211712F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;
211722F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;
211732F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;
211742F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;
211752F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;
211762F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;
211772F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;
211782F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;
211792F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;
211802F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;
211812F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;
211822F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;
211832F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;
211842F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;
211852F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;
211862F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;
211872F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;
211882F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;
211892F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;
211902F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;
211912F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;
211922F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;
211932F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;
211942F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;
211952F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;
211962F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;
211972F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;
211982F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;
211992F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;
212002F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;
212012F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;
212022F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;
212032F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;
212042F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;
212052F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;
212062F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;
212072F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;
212082F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;
212092F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;
212102F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;
212112F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;
212122F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;
212132F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;
212142F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;
212152F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;
212162F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;
212172F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;
212182F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;
212192F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;
212202F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;
212212F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;
212222F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;
212232F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;
212242F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;
212252F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;
212262F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;
212272F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;
212282F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;
212292F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;
212302F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;
212312F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;
212322F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;
212332F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;
212342F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;;
212352F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;
212362F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;
212372F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;
212382F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;
212392F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;
212402F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;
212412F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;
212422F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;
212432F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;
212442F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;
212452F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;
212462F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;
212472F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;
212482F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;
212492F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;
212502F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;
212512F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;
212522F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;
212532F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;
212542F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;
212552F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;
212562F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;
212572F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;
212582F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;
212592F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;
212602F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;
212612F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;
212622F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;
212632F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;
212642F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;
212652F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;
212662F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;
212672F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;
212682F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;
212692F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;
212702F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;
212712F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;
212722F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;
212732F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;
212742F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;
212752F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;
212762F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;
212772F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;
212782F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;
212792F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;
212802F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;
212812F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;
212822F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;
212832F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;
212842F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;
212852F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;
212862F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;
212872F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;
212882F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;
212892F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;
212902F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;
212912F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;
212922F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;
212932F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;
212942F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;
212952F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;
212962F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;
212972F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;
212982F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;;
212992F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;
213002F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;
213012F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;
213022F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;
213032F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;
213042F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;
213052F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;
213062F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;
213072F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;
213082F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;
213092F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;
213102F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;
213112F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;
213122F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;
213132F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;
213142F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;
213152F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;
213162F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;
213172F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;
213182F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;
213192F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;
213202F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;
213212F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;
213222F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;
213232F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;
213242F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;
213252F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;
213262F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;
213272F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;
213282F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;
213292F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;
213302F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;
213312F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;
213322F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;
213332F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;
213342F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;
213352F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;
213362F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;
213372F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;
213382F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;
213392F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;
213402F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;
213412F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;
213422F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;
213432F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;
213442F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;
213452F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;
213462F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;
213472F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;
213482F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;
213492F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;
213502F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;
213512F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;
213522F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;
213532F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;
213542F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;
213552F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;
213562F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;
213572F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;
213582F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;
213592F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;
213602F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;
213612F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;
213622F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;
213632F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;
213642F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;
213652F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;
213662F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;
213672F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;
213682F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;
213692F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;
213702F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;
213712F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;
213722F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;
213732F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;
213742F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;
213752F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;
213762F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;
213772F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;
213782F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;
213792F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;
213802F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;
213812F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;
213822F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;
213832F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;
213842F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;
213852F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;
213862F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;
213872F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;
213882F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;
213892F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;
213902F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;
213912F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;
213922F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;
213932F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;
213942F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;;
213952F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;
213962F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;
213972F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;
213982F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;
213992F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;
214002F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;
214012F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;
214022F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;
214032F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;
214042F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;
214052F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;
214062F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;
214072F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;
214082F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;
214092F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;
214102F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;
214112F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;
214122F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;
214132F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;
214142F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;
214152F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;
214162F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;
214172F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;
214182F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;
214192F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;
214202F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;
214212F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;
214222F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;
214232F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;
214242F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;
214252F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;
214262F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;
214272F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;
214282F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;
214292F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;
214302F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;
214312F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;
214322F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;
214332F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;
214342F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;
214352F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;
214362F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;
214372F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;
214382F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;
214392F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;
214402F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;
214412F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;
214422F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;
214432F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;
214442F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;
214452F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;
214462F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;
214472F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;
214482F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;
214492F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;
214502F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;
214512F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;
214522F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;
214532F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;
214542F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;
214552F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;
214562F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;
214572F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;
214582F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;
214592FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;
214602FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;
214612FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;
214622FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;
214632FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;
214642FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;
214652FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;
214662FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;
214672FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;
214682FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;
214692FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;
214702FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;
214712FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;
214722FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;
214732FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;
214742FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;
214752FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;
214762FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;
214772FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;
214782FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;
214792FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;
214802FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;
214812FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;
214822FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;
214832FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;
214842FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;
214852FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;
214862FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
214872FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
214882FA1D;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
index ce2b1a2b..00000000
--- a/inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php
+++ /dev/null
@@ -1,218 +0,0 @@
1<?php
2
3/////////////////
4$unicode_ranges = array(
5array('starthex'=> '0000', 'endhex'=>'007E', 'startdec'=> 0, 'enddec'=>126 , 'range'=>'Basic Latin'),
6array('starthex'=> '00A0', 'endhex'=>'00FF', 'startdec'=> 160, 'enddec'=>255 , 'range'=>'Latin-1 Supplement'),
7array('starthex'=> '0100', 'endhex'=>'017F', 'startdec'=> 256, 'enddec'=>383 , 'range'=>'Latin Extended-A'),
8array('starthex'=> '0180', 'endhex'=>'024F', 'startdec'=> 384, 'enddec'=>591 , 'range'=>'Latin Extended-B'),
9array('starthex'=> '0250', 'endhex'=>'02AF', 'startdec'=> 592, 'enddec'=>687 , 'range'=>'IPA Extensions'),
10array('starthex'=> '02B0', 'endhex'=>'02FF', 'startdec'=> 688, 'enddec'=>767 , 'range'=>'Spacing Modifier Letters'),
11array('starthex'=> '0300', 'endhex'=>'036F', 'startdec'=> 768, 'enddec'=>879 , 'range'=>'Combining Diacritical Marks', 'combining'=>true),
12array('starthex'=> '0370', 'endhex'=>'03FF', 'startdec'=> 880, 'enddec'=>1023 , 'range'=>'Greek'),
13array('starthex'=> '0400', 'endhex'=>'04FF', 'startdec'=> 1024, 'enddec'=>1279 , 'range'=>'Cyrillic'),
14array('starthex'=> '0500', 'endhex'=>'052F', 'startdec'=> 1280, 'enddec'=>1327 , 'range'=>'Cyrillic Supplement'),
15array('starthex'=> '0530', 'endhex'=>'058F', 'startdec'=> 1328, 'enddec'=>1423 , 'range'=>'Armenian'),
16array('starthex'=> '0590', 'endhex'=>'05FF', 'startdec'=> 1424, 'enddec'=>1535 , 'range'=>'Hebrew', 'rtl'=>true, 'special'=>true),
17array('starthex'=> '0600', 'endhex'=>'06FF', 'startdec'=> 1536, 'enddec'=>1791 , 'range'=>'Arabic', 'rtl'=>true, 'special'=>true),
18array('starthex'=> '0700', 'endhex'=>'074F', 'startdec'=> 1792, 'enddec'=>1871 , 'range'=>'Syriac', 'rtl'=>true, 'special'=>true),
19array('starthex'=> '0750', 'endhex'=>'077F', 'startdec'=> 1872, 'enddec'=>1919 , 'range'=>'Arabic Supplement', 'rtl'=>true, 'special'=>true),
20array('starthex'=> '0780', 'endhex'=>'07BF', 'startdec'=> 1920, 'enddec'=>1983 , 'range'=>'Thaana', 'rtl'=>true, 'special'=>true),
21array('starthex'=> '07C0', 'endhex'=>'07FF', 'startdec'=> 1984, 'enddec'=>2047 , 'range'=>'N\'Ko (Mandenkan)', 'rtl'=>true),
22array('starthex'=> '0800', 'endhex'=>'083E', 'startdec'=> 2048, 'enddec'=> 2110, 'range'=>'Samaritan', 'rtl'=>true),
23array('starthex'=> '0900', 'endhex'=>'097F', 'startdec'=> 2304, 'enddec'=>2431 , 'range'=>'Devanagari', 'indic'=>true, 'special'=>true),
24array('starthex'=> '0980', 'endhex'=>'09FF', 'startdec'=> 2432, 'enddec'=>2559 , 'range'=>'Bengali', 'indic'=>true, 'special'=>true),
25array('starthex'=> '0A00', 'endhex'=>'0A7F', 'startdec'=> 2560, 'enddec'=>2687 , 'range'=>'Gurmukhi', 'indic'=>true, 'special'=>true),
26array('starthex'=> '0A80', 'endhex'=>'0AFF', 'startdec'=> 2688, 'enddec'=>2815 , 'range'=>'Gujarati', 'indic'=>true, 'special'=>true),
27array('starthex'=> '0B00', 'endhex'=>'0B7F', 'startdec'=> 2816, 'enddec'=>2943 , 'range'=>'Oriya', 'indic'=>true, 'special'=>true),
28array('starthex'=> '0B80', 'endhex'=>'0BFF', 'startdec'=> 2944, 'enddec'=>3071 , 'range'=>'Tamil', 'indic'=>true, 'special'=>true),
29array('starthex'=> '0C00', 'endhex'=>'0C7F', 'startdec'=> 3072, 'enddec'=>3199 , 'range'=>'Telugu', 'indic'=>true, 'special'=>true),
30array('starthex'=> '0C80', 'endhex'=>'0CFF', 'startdec'=> 3200, 'enddec'=>3327 , 'range'=>'Kannada', 'indic'=>true, 'special'=>true),
31array('starthex'=> '0D00', 'endhex'=>'0D7F', 'startdec'=> 3328, 'enddec'=>3455 , 'range'=>'Malayalam', 'indic'=>true, 'special'=>true),
32array('starthex'=> '0D80', 'endhex'=>'0DFF', 'startdec'=> 3456, 'enddec'=>3583 , 'range'=>'Sinhala', 'special'=>true),
33array('starthex'=> '0E00', 'endhex'=>'0E7F', 'startdec'=> 3584, 'enddec'=>3711 , 'range'=>'Thai'),
34array('starthex'=> '0E80', 'endhex'=>'0EFF', 'startdec'=> 3712, 'enddec'=>3839 , 'range'=>'Lao'),
35array('starthex'=> '0F00', 'endhex'=>'0FFF', 'startdec'=> 3840, 'enddec'=>4095 , 'range'=>'Tibetan', 'special'=>true),
36array('starthex'=> '1000', 'endhex'=>'109F', 'startdec'=> 4096, 'enddec'=>4255 , 'range'=>'Myanmar', 'special'=>true),
37array('starthex'=> '10A0', 'endhex'=>'10FF', 'startdec'=> 4256, 'enddec'=>4351 , 'range'=>'Georgian'),
38array('starthex'=> '1100', 'endhex'=>'11FF', 'startdec'=> 4352, 'enddec'=>4607 , 'range'=>'Hangul Jamo', 'cjk'=>true),
39array('starthex'=> '1200', 'endhex'=>'137F', 'startdec'=> 4608, 'enddec'=>4991 , 'range'=>'Ethiopic'),
40array('starthex'=> '1380', 'endhex'=>'139F', 'startdec'=> 4992, 'enddec'=>5023 , 'range'=>'Ethiopic Supplement'),
41array('starthex'=> '13A0', 'endhex'=>'13FF', 'startdec'=> 5024, 'enddec'=>5119 , 'range'=>'Cherokee'),
42array('starthex'=> '1400', 'endhex'=>'167F', 'startdec'=> 5120, 'enddec'=>5759 , 'range'=>'Unified Canadian Aboriginal Syllabics'),
43array('starthex'=> '1680', 'endhex'=>'169F', 'startdec'=> 5760, 'enddec'=>5791 , 'range'=>'Ogham'),
44array('starthex'=> '16A0', 'endhex'=>'16FF', 'startdec'=> 5792, 'enddec'=>5887 , 'range'=>'Runic'),
45array('starthex'=> '1700', 'endhex'=>'171F', 'startdec'=> 5888, 'enddec'=> 5919, 'range'=>'Tagalog (Philippine)'),
46array('starthex'=> '1720', 'endhex'=>'173F', 'startdec'=> 5920, 'enddec'=> 5951, 'range'=>'Hanunoo (Philippine)'),
47array('starthex'=> '1740', 'endhex'=>'175F', 'startdec'=> 5952, 'enddec'=> 5983, 'range'=>'Buhid (Philippine)'),
48array('starthex'=> '1760', 'endhex'=>'177F', 'startdec'=> 5984, 'enddec'=> 6015, 'range'=>'Tagbanwa (Philippine)'),
49array('starthex'=> '1780', 'endhex'=>'17FF', 'startdec'=> 6016, 'enddec'=>6143 , 'range'=>'Khmer', 'special'=>true),
50array('starthex'=> '1800', 'endhex'=>'18AF', 'startdec'=> 6144, 'enddec'=>6319 , 'range'=>'Mongolian', 'vertical'=>true),
51array('starthex'=> '18B0', 'endhex'=>'18F5', 'startdec'=> 6320, 'enddec'=>6389 , 'range'=>'Canadian Syllabics'),
52array('starthex'=> '1900', 'endhex'=>'194F', 'startdec'=> 6400, 'enddec'=> 6479, 'range'=>'Limbu'),
53array('starthex'=> '1950', 'endhex'=>'197F', 'startdec'=> 6480, 'enddec'=> 6527, 'range'=>'Tai Le'),
54array('starthex'=> '1980', 'endhex'=>'19DF', 'startdec'=> 6528, 'enddec'=> 6623, 'range'=>'New Tai Lue'),
55array('starthex'=> '19E0', 'endhex'=>'19FF', 'startdec'=> 6624, 'enddec'=> 6655, 'range'=>'Khmer Symbols', 'special'=>true),
56array('starthex'=> '1A00', 'endhex'=>'1A1F', 'startdec'=> 6656, 'enddec'=> 6687, 'range'=>'Buginese'),
57array('starthex'=> '1A20', 'endhex'=>'1AAF', 'startdec'=> 6688, 'enddec'=> 6831, 'range'=>'Tai Tham'),
58array('starthex'=> '1B00', 'endhex'=>'1B7F', 'startdec'=> 6912, 'enddec'=> 7039, 'range'=>'Balinese', 'special'=>true),
59array('starthex'=> '1B80', 'endhex'=>'1BBF', 'startdec'=> 7040, 'enddec'=> 7103, 'range'=>'Sundanese'),
60array('starthex'=> '1C00', 'endhex'=>'1C4F', 'startdec'=> 7168, 'enddec'=> 7247, 'range'=>'Lepcha (Rong)'),
61array('starthex'=> '1C50', 'endhex'=>'1C7F', 'startdec'=> 7248, 'enddec'=> 7295, 'range'=>'Ol Chiki (Santali / Ol Cemet)'),
62array('starthex'=> '1CD0', 'endhex'=>'1CFF', 'startdec'=> 7376, 'enddec'=> 7423, 'range'=>'Vedic Extensions'),
63array('starthex'=> '1D00', 'endhex'=>'1D7F', 'startdec'=> 7424, 'enddec'=> 7551, 'range'=>'Phonetic Extensions'),
64array('starthex'=> '1D80', 'endhex'=>'1DBF', 'startdec'=> 7552, 'enddec'=> 7615, 'range'=>'Phonetic Extensions Supplement'),
65array('starthex'=> '1DC0', 'endhex'=>'1DFF', 'startdec'=> 7616, 'enddec'=> 7679, 'range'=>'Combining Diacritical Marks Supplement', 'combining'=>true),
66array('starthex'=> '1E00', 'endhex'=>'1EFF', 'startdec'=> 7680, 'enddec'=>7935 , 'range'=>'Latin Extended Additional'),
67array('starthex'=> '1F00', 'endhex'=>'1FFF', 'startdec'=> 7936, 'enddec'=>8191 , 'range'=>'Greek Extended'),
68array('starthex'=> '2000', 'endhex'=>'206F', 'startdec'=> 8192, 'enddec'=>8303 , 'range'=>'General Punctuation'),
69array('starthex'=> '2070', 'endhex'=>'209F', 'startdec'=> 8304, 'enddec'=>8351 , 'range'=>'Superscripts and Subscripts'),
70array('starthex'=> '20A0', 'endhex'=>'20CF', 'startdec'=> 8352, 'enddec'=>8399 , 'range'=>'Currency Symbols'),
71array('starthex'=> '20D0', 'endhex'=>'20FF', 'startdec'=> 8400, 'enddec'=>8447 , 'range'=>'Combining Marks for Symbols', 'combining'=>true),
72array('starthex'=> '2100', 'endhex'=>'214F', 'startdec'=> 8448, 'enddec'=>8527 , 'range'=>'Letterlike Symbols'),
73array('starthex'=> '2150', 'endhex'=>'218F', 'startdec'=> 8528, 'enddec'=>8591 , 'range'=>'Number Forms'),
74array('starthex'=> '2190', 'endhex'=>'21FF', 'startdec'=> 8592, 'enddec'=>8703 , 'range'=>'Arrows'),
75array('starthex'=> '2200', 'endhex'=>'22FF', 'startdec'=> 8704, 'enddec'=>8959 , 'range'=>'Mathematical Operators'),
76array('starthex'=> '2300', 'endhex'=>'23FF', 'startdec'=> 8960, 'enddec'=>9215 , 'range'=>'Miscellaneous Technical'),
77array('starthex'=> '2400', 'endhex'=>'243F', 'startdec'=> 9216, 'enddec'=>9279 , 'range'=>'Control Pictures'),
78array('starthex'=> '2440', 'endhex'=>'245F', 'startdec'=> 9280, 'enddec'=>9311 , 'range'=>'Optical Character Recognition'),
79array('starthex'=> '2460', 'endhex'=>'24FF', 'startdec'=> 9312, 'enddec'=>9471 , 'range'=>'Enclosed Alphanumerics'),
80array('starthex'=> '2500', 'endhex'=>'257F', 'startdec'=> 9472, 'enddec'=>9599 , 'range'=>'Box Drawing'),
81array('starthex'=> '2580', 'endhex'=>'259F', 'startdec'=> 9600, 'enddec'=>9631 , 'range'=>'Block Elements'),
82array('starthex'=> '25A0', 'endhex'=>'25FF', 'startdec'=> 9632, 'enddec'=>9727 , 'range'=>'Geometric Shapes'),
83array('starthex'=> '2600', 'endhex'=>'26FF', 'startdec'=> 9728, 'enddec'=>9983 , 'range'=>'Miscellaneous Symbols'),
84array('starthex'=> '2700', 'endhex'=>'27BF', 'startdec'=> 9984, 'enddec'=>10175 , 'range'=>'Dingbats'),
85array('starthex'=> '27C0', 'endhex'=>'27EF', 'startdec'=> 10176, 'enddec'=> 10223, 'range'=>'Miscellaneous Mathematical Symbols-A'),
86array('starthex'=> '27F0', 'endhex'=>'27FF', 'startdec'=> 10224, 'enddec'=> 10239, 'range'=>'Supplemental Arrows-A'),
87array('starthex'=> '2800', 'endhex'=>'28FF', 'startdec'=> 10240, 'enddec'=>10495 , 'range'=>'Braille Patterns'),
88array('starthex'=> '2900', 'endhex'=>'297F', 'startdec'=> 10496, 'enddec'=> 10623, 'range'=>'Supplemental Arrows-B'),
89array('starthex'=> '2980', 'endhex'=>'29FF', 'startdec'=> 10624, 'enddec'=> 10751, 'range'=>'Miscellaneous Mathematical Symbols-B'),
90array('starthex'=> '2A00', 'endhex'=>'2AFF', 'startdec'=> 10752, 'enddec'=> 11007, 'range'=>'Supplemental Mathematical Operators'),
91array('starthex'=> '2B00', 'endhex'=>'2BFF', 'startdec'=> 11008, 'enddec'=> 11263, 'range'=>'Miscellaneous Symbols and Arrows'),
92array('starthex'=> '2C00', 'endhex'=>'2C5F', 'startdec'=> 11264, 'enddec'=> 11359, 'range'=>'Glagolitic'),
93array('starthex'=> '2C60', 'endhex'=>'2C7F', 'startdec'=> 11360, 'enddec'=> 11391, 'range'=>'Latin Extended-C'),
94array('starthex'=> '2C80', 'endhex'=>'2CFF', 'startdec'=> 11392, 'enddec'=> 11519, 'range'=>'Coptic'),
95array('starthex'=> '2D00', 'endhex'=>'2D2F', 'startdec'=> 11520, 'enddec'=> 11567, 'range'=>'Georgian Supplement'),
96array('starthex'=> '2D30', 'endhex'=>'2D7F', 'startdec'=> 11568, 'enddec'=> 11647, 'range'=>'Tifinagh'),
97array('starthex'=> '2D80', 'endhex'=>'2DDF', 'startdec'=> 11648, 'enddec'=> 11743, 'range'=>'Ethiopic Extended'),
98array('starthex'=> '2DE0', 'endhex'=>'2DFF', 'startdec'=> 11744, 'enddec'=> 11775, 'range'=>'Cyrillic Extended-A'),
99array('starthex'=> '2E00', 'endhex'=>'2E7F', 'startdec'=> 11776, 'enddec'=> 11903, 'range'=>'Supplemental Punctuation'),
100
101array('starthex'=> '2E80', 'endhex'=>'2EFF', 'startdec'=> 11904, 'enddec'=>12031 , 'range'=>'CJK Radicals Supplement', 'cjk'=>true),
102array('starthex'=> '2F00', 'endhex'=>'2FDF', 'startdec'=> 12032, 'enddec'=>12255 , 'range'=>'Kangxi Radicals', 'cjk'=>true),
103array('starthex'=> '2FF0', 'endhex'=>'2FFF', 'startdec'=> 12272, 'enddec'=>12287 , 'range'=>'Ideographic Description Characters', 'cjk'=>true),
104array('starthex'=> '3000', 'endhex'=>'303F', 'startdec'=> 12288, 'enddec'=>12351 , 'range'=>'CJK Symbols and Punctuation', 'cjk'=>true),
105array('starthex'=> '3040', 'endhex'=>'309F', 'startdec'=> 12352, 'enddec'=>12447 , 'range'=>'Hiragana', 'cjk'=>true),
106array('starthex'=> '30A0', 'endhex'=>'30FF', 'startdec'=> 12448, 'enddec'=>12543 , 'range'=>'Katakana', 'cjk'=>true),
107array('starthex'=> '3100', 'endhex'=>'312F', 'startdec'=> 12544, 'enddec'=>12591 , 'range'=>'Bopomofo', 'cjk'=>true),
108array('starthex'=> '3130', 'endhex'=>'318F', 'startdec'=> 12592, 'enddec'=>12687 , 'range'=>'Hangul Compatibility Jamo', 'cjk'=>true),
109array('starthex'=> '3190', 'endhex'=>'319F', 'startdec'=> 12688, 'enddec'=>12703 , 'range'=>'Kanbun', 'cjk'=>true),
110array('starthex'=> '31A0', 'endhex'=>'31BF', 'startdec'=> 12704, 'enddec'=>12735 , 'range'=>'Bopomofo Extended', 'cjk'=>true),
111array('starthex'=> '31C0', 'endhex'=>'31EF', 'startdec'=> 12736, 'enddec'=> 12783, 'range'=>'CJK Strokes', 'cjk'=>true),
112array('starthex'=> '31F0', 'endhex'=>'31FF', 'startdec'=> 12784, 'enddec'=> 12799, 'range'=>'Katakana Phonetic Extensions', 'cjk'=>true),
113array('starthex'=> '3200', 'endhex'=>'32FF', 'startdec'=> 12800, 'enddec'=>13055 , 'range'=>'Enclosed CJK Letters and Months', 'cjk'=>true),
114array('starthex'=> '3300', 'endhex'=>'33FF', 'startdec'=> 13056, 'enddec'=>13311 , 'range'=>'CJK Compatibility', 'cjk'=>true),
115array('starthex'=> '3400', 'endhex'=>'4DB5', 'startdec'=> 13312, 'enddec'=>19893 , 'range'=>'CJK Unified Ideographs Extension A', 'cjk'=>true),
116array('starthex'=> '4DC0', 'endhex'=>'4DFF', 'startdec'=> 19904, 'enddec'=> 19967, 'range'=>'Yijing Hexagram Symbols', 'cjk'=>true),
117array('starthex'=> '4E00', 'endhex'=>'9FFF', 'startdec'=> 19968, 'enddec'=>40959 , 'range'=>'CJK Unified Ideographs', 'cjk'=>true),
118array('starthex'=> 'A000', 'endhex'=>'A48F', 'startdec'=> 40960, 'enddec'=>42127 , 'range'=>'Yi Syllables', 'cjk'=>true),
119array('starthex'=> 'A490', 'endhex'=>'A4CF', 'startdec'=> 42128, 'enddec'=> 42191, 'range'=>'Yi Radicals', 'cjk'=>true),
120
121array('starthex'=> 'A4D0', 'endhex'=>'A4FF', 'startdec'=> 42192, 'enddec'=> 42239, 'range'=>'Lisu'),
122
123array('starthex'=> 'A500', 'endhex'=>'A63F', 'startdec'=> 42240, 'enddec'=> 42559, 'range'=>'Vai'),
124array('starthex'=> 'A640', 'endhex'=>'A69F', 'startdec'=> 42560, 'enddec'=> 42655, 'range'=>'Cyrillic Extended-B'),
125
126array('starthex'=> 'A6A0', 'endhex'=>'A6FF', 'startdec'=> 42656, 'enddec'=> 42751, 'range'=>'Bamum'),
127
128array('starthex'=> 'A700', 'endhex'=>'A71F', 'startdec'=> 42752, 'enddec'=> 42783, 'range'=>'Modifier Tone Letters'),
129array('starthex'=> 'A720', 'endhex'=>'A7FF', 'startdec'=> 42784, 'enddec'=> 43007, 'range'=>'Latin Extended-D'),
130array('starthex'=> 'A800', 'endhex'=>'A82F', 'startdec'=> 43008, 'enddec'=> 43055, 'range'=>'Syloti Nagri'),
131
132array('starthex'=> 'A840', 'endhex'=>'A87F', 'startdec'=> 43072, 'enddec'=> 43135, 'range'=>'Phags-pa', 'vertical'=>true),
133array('starthex'=> 'A880', 'endhex'=>'A8DF', 'startdec'=> 43136, 'enddec'=> 43231, 'range'=>'Saurashtra'),
134
135array('starthex'=> 'A900', 'endhex'=>'A92F', 'startdec'=> 43264, 'enddec'=> 43311, 'range'=>'Kayah Li'),
136array('starthex'=> 'A930', 'endhex'=>'A95F', 'startdec'=> 43312, 'enddec'=> 43359, 'range'=>'Rejang'),
137
138array('starthex'=> 'A960', 'endhex'=>'A97F', 'startdec'=> 43360, 'enddec'=> 43391, 'range'=>'Hangul Choseong', 'cjk'=>true),
139array('starthex'=> 'A980', 'endhex'=>'A9DF', 'startdec'=> 43392, 'enddec'=> 43487, 'range'=>'Javanese'),
140
141array('starthex'=> 'AA00', 'endhex'=>'AA5F', 'startdec'=> 43520, 'enddec'=> 43615, 'range'=>'Cham'),
142array('starthex'=> 'AA60', 'endhex'=>'AA7B', 'startdec'=> 43616, 'enddec'=> 43647, 'range'=>'Myanmar', 'special'=>true),
143array('starthex'=> 'AA80', 'endhex'=>'AADF', 'startdec'=> 43648, 'enddec'=> 43743, 'range'=>'Tai Viet'),
144
145array('starthex'=> 'ABC0', 'endhex'=>'ABF9', 'startdec'=> 43968, 'enddec'=> 44025, 'range'=>'Meetei Mayek'),
146
147array('starthex'=> 'AC00', 'endhex'=>'D7FF', 'startdec'=> 44032, 'enddec'=>55295 , 'range'=>'Hangul Syllables', 'cjk'=>true),
148
149/*
150array('starthex'=> 'D800', 'endhex'=>'DB7F', 'startdec'=> 55296, 'enddec'=>56191 , 'range'=>'High Surrogates', 'reserved'=>true),
151array('starthex'=> 'DB80', 'endhex'=>'DBFF', 'startdec'=> 56192, 'enddec'=>56319 , 'range'=>'High Private Use Surrogates', 'reserved'=>true),
152array('starthex'=> 'DC00', 'endhex'=>'DFFF', 'startdec'=> 56320, 'enddec'=>57343 , 'range'=>'Low Surrogates', 'reserved'=>true),
153*/
154
155array('starthex'=> 'E000', 'endhex'=>'F8FF', 'startdec'=> 57344, 'enddec'=>63743 , 'range'=>'Private Use', 'pua'=>true),
156
157array('starthex'=> 'F900', 'endhex'=>'FAFF', 'startdec'=> 63744, 'enddec'=>64255 , 'range'=>'CJK Compatibility Ideographs', 'cjk'=>true),
158array('starthex'=> 'FB00', 'endhex'=>'FB4F', 'startdec'=> 64256, 'enddec'=>64335 , 'range'=>'Alphabetic Presentation Forms'),
159array('starthex'=> 'FB50', 'endhex'=>'FDFF', 'startdec'=> 64336, 'enddec'=>65023 , 'range'=>'Arabic Presentation Forms-A', 'rtl'=>true),
160
161array('starthex'=> 'FE00', 'endhex'=>'FE0F', 'startdec'=> 65024, 'enddec'=> 65039, 'range'=>'Variation Selectors'),
162
163array('starthex'=> 'FE10', 'endhex'=>'FE1F', 'startdec'=> 65040, 'enddec'=> 65055, 'range'=>'Vertical Forms'),
164array('starthex'=> 'FE20', 'endhex'=>'FE2F', 'startdec'=> 65056, 'enddec'=>65071 , 'range'=>'Combining Half Marks', 'combining'=>true),
165array('starthex'=> 'FE30', 'endhex'=>'FE4F', 'startdec'=> 65072, 'enddec'=>65103 , 'range'=>'CJK Compatibility Forms', 'cjk'=>true),
166array('starthex'=> 'FE50', 'endhex'=>'FE6F', 'startdec'=> 65104, 'enddec'=>65135 , 'range'=>'Small Form Variants', 'cjk'=>true),
167array('starthex'=> 'FE70', 'endhex'=>'FEFE', 'startdec'=> 65136, 'enddec'=>65278 , 'range'=>'Arabic Presentation Forms-B', 'rtl'=>true),
168array('starthex'=> 'FEFF', 'endhex'=>'FEFF', 'startdec'=> 65279, 'enddec'=>65279 , 'range'=>'Specials'),
169array('starthex'=> 'FF00', 'endhex'=>'FFEF', 'startdec'=> 65280, 'enddec'=>65519 , 'range'=>'Halfwidth and Fullwidth Forms', 'cjk'=>true),
170array('starthex'=> 'FFF0', 'endhex'=>'FFFD', 'startdec'=> 65520, 'enddec'=>65533 , 'range'=>'Specials'),
171
172/* PLANE 1 */
173
174array('starthex'=> '10000', 'endhex'=>'1007F', 'startdec'=> 65536 , 'enddec'=> 65663, 'range'=>'Linear B Syllabary'),
175array('starthex'=> '10080', 'endhex'=>'100FF', 'startdec'=> 65664 , 'enddec'=> 65791, 'range'=>'Linear B Ideograms'),
176array('starthex'=> '10100', 'endhex'=>'1013F', 'startdec'=> 65792 , 'enddec'=> 65855, 'range'=>'Aegean Numbers'),
177array('starthex'=> '10140', 'endhex'=>'1018F', 'startdec'=> 65856 , 'enddec'=> 65935, 'range'=>'Ancient Greek Numbers'),
178array('starthex'=> '10190', 'endhex'=>'101CF', 'startdec'=> 65936 , 'enddec'=> 65999, 'range'=>'Ancient Symbols'),
179array('starthex'=> '101D0', 'endhex'=>'101FF', 'startdec'=> 66000 , 'enddec'=> 66047, 'range'=>'Phaistos Disc'),
180array('starthex'=> '10280', 'endhex'=>'1029F', 'startdec'=> 66176 , 'enddec'=> 66207, 'range'=>'Lycian'),
181array('starthex'=> '102A0', 'endhex'=>'102DF', 'startdec'=> 66208 , 'enddec'=> 66271, 'range'=>'Carian'),
182array('starthex'=> '10300', 'endhex'=>'1032F', 'startdec'=> 66304 , 'enddec'=> 66351, 'range'=>'Old Italic'),
183array('starthex'=> '10330', 'endhex'=>'1034F', 'startdec'=> 66352 , 'enddec'=> 66383, 'range'=>'Gothic'),
184array('starthex'=> '10380', 'endhex'=>'1039F', 'startdec'=> 66432 , 'enddec'=> 66463, 'range'=>'Ugaritic'),
185array('starthex'=> '103A0', 'endhex'=>'103DF', 'startdec'=> 66464 , 'enddec'=> 66527, 'range'=>'Old Persian'),
186array('starthex'=> '10400', 'endhex'=>'1044F', 'startdec'=> 66560 , 'enddec'=> 66639, 'range'=>'Deseret'),
187array('starthex'=> '10450', 'endhex'=>'1047F', 'startdec'=> 66640 , 'enddec'=> 66687, 'range'=>'Shavian'),
188array('starthex'=> '10480', 'endhex'=>'104AF', 'startdec'=> 66688 , 'enddec'=> 66735, 'range'=>'Osmanya'),
189array('starthex'=> '10800', 'endhex'=>'1083F', 'startdec'=> 67584 , 'enddec'=> 67647, 'range'=>'Cypriot Syllabary'),
190array('starthex'=> '10900', 'endhex'=>'1091F', 'startdec'=> 67840 , 'enddec'=> 67871, 'range'=>'Phoenician'),
191array('starthex'=> '10920', 'endhex'=>'1093F', 'startdec'=> 67872 , 'enddec'=> 67903, 'range'=>'Lydian'),
192array('starthex'=> '10A00', 'endhex'=>'10A5F', 'startdec'=> 68096 , 'enddec'=> 68191, 'range'=>'Kharoshthi'),
193
194array('starthex'=> '11080', 'endhex'=>'110CF', 'startdec'=> 69760 , 'enddec'=> 69839, 'range'=>'Kaithi'),
195
196array('starthex'=> '12000', 'endhex'=>'123FF', 'startdec'=> 73728 , 'enddec'=> 74751, 'range'=>'Cuneiform (Sumero-Akkadian)'),
197array('starthex'=> '12400', 'endhex'=>'1247F', 'startdec'=> 74752 , 'enddec'=> 74879, 'range'=>'Cuneiform Numbers and Punctuation'),
198
199array('starthex'=> '13000', 'endhex'=>'1342F', 'startdec'=> 77824 , 'enddec'=> 78895, 'range'=>'Egyptian Hieroglyphs'),
200
201array('starthex'=> '1D000', 'endhex'=>'1D0FF', 'startdec'=> 118784 , 'enddec'=> 119039, 'range'=>'Byzantine Musical Symbols'),
202array('starthex'=> '1D100', 'endhex'=>'1D1FF', 'startdec'=> 119040 , 'enddec'=> 119295, 'range'=>'Musical Symbols'),
203array('starthex'=> '1D200', 'endhex'=>'1D24F', 'startdec'=> 119296 , 'enddec'=> 119375, 'range'=>'Ancient Greek Musical Notation'),
204array('starthex'=> '1D300', 'endhex'=>'1D35F', 'startdec'=> 119552 , 'enddec'=> 119647, 'range'=>'Tai Xuan Jing Symbols'),
205array('starthex'=> '1D360', 'endhex'=>'1D37F', 'startdec'=> 119648 , 'enddec'=> 119679, 'range'=>'Counting Rod Numerals'),
206array('starthex'=> '1D400', 'endhex'=>'1D7FF', 'startdec'=> 119808 , 'enddec'=> 120831, 'range'=>'Mathematical Alphanumeric Symbols'),
207array('starthex'=> '1F000', 'endhex'=>'1F02F', 'startdec'=> 126976 , 'enddec'=> 127023, 'range'=>'Mahjong Tiles'),
208array('starthex'=> '1F030', 'endhex'=>'1F09F', 'startdec'=> 127024 , 'enddec'=> 127135, 'range'=>'Domino Tiles'),
209
210/* PLANE 2 */
211
212array('starthex'=> '20000', 'endhex'=>'2A6DF', 'startdec'=> 131072 , 'enddec'=> 173791, 'range'=>'CJK Unified Ideographs Extension B'),
213array('starthex'=> '2A700', 'endhex'=>'2B734', 'startdec'=> 173824 , 'enddec'=> 177972, 'range'=>'CJK Unified Ideographs Extension C'),
214array('starthex'=> '2F800', 'endhex'=>'2FA1F', 'startdec'=> 194560 , 'enddec'=> 195103, 'range'=>'CJK Compatibility Ideographs Supplement'),
215
216);
217
218?> \ 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
index 20f387ef..00000000
--- a/inc/3rdparty/libraries/mpdf/utils/font_collections.php
+++ /dev/null
@@ -1,72 +0,0 @@
1<?php
2
3/* This script prints out details of any TrueType collection font files
4 in your font directory. Files ending wih .otc are examined.
5 Point your browser to
6 http://your.domain/your_path_to _mpdf/utils/font_collections.php
7 By default this will examine the folder /ttfonts/ (or the default font
8 directory defined by _MPDF_TTFONTPATH.
9 You can optionally define an alternative folder to examine by setting
10 the variable below (must be a relative path, or filesystem path):
11*/
12
13
14$checkdir = '';
15
16
17//////////////////////////////////
18//////////////////////////////////
19//////////////////////////////////
20
21ini_set("memory_limit","256M");
22
23
24define('_MPDF_PATH','../');
25
26include("../mpdf.php");
27$mpdf=new mPDF('');
28if ($checkdir) {
29 $ttfdir = $checkdir;
30}
31else { $ttfdir = _MPDF_TTFONTPATH; }
32
33
34
35$mqr=ini_get("magic_quotes_runtime");
36if ($mqr) { set_magic_quotes_runtime(0); }
37if (!class_exists('TTFontFile_Analysis', false)) { include(_MPDF_PATH .'classes/ttfontsuni_analysis.php'); }
38$ttf = new TTFontFile_Analysis();
39
40$ff = scandir($ttfdir);
41
42echo '<h3>Font collection files found in '.$ttfdir.' directory</h3>';
43foreach($ff AS $f) {
44 $ret = array();
45 if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-4,4))=='.ttcf') { // Mac ttcf
46 $ttf->getTTCFonts($ttfdir.$f);
47 $nf = $ttf->numTTCFonts;
48 echo '<p>Font collection file ('.$f.') contains the following fonts:</p>';
49 for ($i=1; $i<=$nf; $i++) {
50 $ret = $ttf->extractCoreInfo($ttfdir.$f, $i);
51 $tfname = $ret[0];
52 $bold = $ret[1];
53 $italic = $ret[2];
54 $fname = strtolower($tfname );
55 $fname = preg_replace('/[ ()]/','',$fname );
56 $style = '';
57 if ($bold) { $style .= 'Bold'; }
58 if ($italic) { $style .= 'Italic'; }
59 if (!$style) { $style = 'Regular'; }
60
61
62 echo '<div>['.$i.'] '.$tfname.' ('.$fname.') '.$style.'</div>';
63
64 }
65 echo '<hr />';
66 }
67}
68
69
70exit;
71
72?> \ 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
index 5286d743..00000000
--- a/inc/3rdparty/libraries/mpdf/utils/font_coverage.php
+++ /dev/null
@@ -1,255 +0,0 @@
1<?php
2
3/* This script prints out the Unicode coverage of all TrueType font files
4 in your font directory.
5 Point your browser to
6 http://your.domain/your_path_to _mpdf/utils/font_coverage.php
7 By default this will examine the folder /ttfonts/ (or the default font
8 directory defined by _MPDF_TTFONTPATH.
9 You can optionally define an alternative folder to examine by setting
10 the variable below (must be a relative path, or filesystem path):
11*/
12
13
14$checkdir = '';
15
16
17//////////////////////////////////
18//////////////////////////////////
19//////////////////////////////////
20
21
22set_time_limit(600);
23ini_set("memory_limit","256M");
24
25//==============================================================
26//==============================================================
27include("../mpdf.php");
28
29$mpdf=new mPDF('','A4-L','','',10,10,10,10);
30$mpdf->SetDisplayMode('fullpage');
31$mpdf->useSubstitutions = true;
32$mpdf->debug = true;
33$mpdf->simpleTables = true;
34if ($checkdir) {
35 $ttfdir = $checkdir;
36}
37else { $ttfdir = _MPDF_TTFONTPATH; }
38
39
40
41$mqr=ini_get("magic_quotes_runtime");
42if ($mqr) { set_magic_quotes_runtime(0); }
43if (!class_exists('TTFontFile_Analysis', false)) { include(_MPDF_PATH .'classes/ttfontsuni_analysis.php'); }
44
45//==============================================================
46 $smp = true;
47 $maxt = 131071;
48//==============================================================
49//==============================================================
50$unifile = file('UnicodeData.txt');
51$unichars = array();
52foreach($unifile AS $line) {
53 if (preg_match('/<control>/',$line,$m)) {
54 $rangename = '';
55 continue;
56 }
57 else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), Last>/',$line,$m)) {
58 if ($rangename && $rangename == $m[2]) {
59 $endrange = hexdec($m[1]);
60 for ($i=$startrange;$i<=$endrange; $i++) {
61 $unichars[$i] = $i;
62 }
63 }
64 $rangename = '';
65 }
66 else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), First>/',$line,$m)) {
67 $startrange = hexdec($m[1]);
68 $rangename = $m[2];
69 }
70 else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});/',$line,$m)) {
71 $unichars[hexdec($m[1])] = hexdec($m[1]);
72 $rangename = '';
73 }
74}
75
76// loads array $unicode_ranges
77include('UnicodeRanges.php');
78//==============================================================
79$html = '<html><head><style>td { border: 0.1mm solid #555555; }
80body { font-weight: normal; font-family: helvetica;font-size:8pt; }
81td { font-family: helvetica;font-size:8pt; vertical-align: top;}
82</style></head><body>';
83
84//==============================================================
85$ff = scandir($ttfdir);
86$tempfontdata = array();
87foreach($ff AS $f) {
88 $ttf = new TTFontFile_Analysis();
89 $ret = array();
90 $isTTC = false;
91 if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf') {
92 $ret[] = $ttf->extractCoreInfo($ttfdir.$f);
93 }
94 for ($i=0; $i<count($ret); $i++) {
95 if (is_array($ret[$i])) {
96 $tfname = $ret[$i][0];
97 $bold = $ret[$i][1];
98 $italic = $ret[$i][2];
99 $fname = strtolower($tfname );
100 $fname = preg_replace('/[ ()]/','',$fname );
101 //$tempfonttrans[$tfname] = $fname;
102 $style = '';
103 if ($bold) { $style .= 'B'; }
104 if ($italic) { $style .= 'I'; }
105 if (!$style) {
106 $tempfontdata[$fname]['file'] = $f;
107 if ($isTTC) {
108 $tempfontdata[$fname]['TTCfontID'] = $ret[$i][4];
109 }
110 }
111 }
112 }
113 unset($ttf);
114
115}
116
117$fullcovers = array();
118$nearlycovers = array();
119ksort($tempfontdata);
120$ningroup = 14;
121$nofgroups = ceil(count($unicode_ranges)/$ningroup);
122
123//==============================================================
124
125
126for ($urgp = 0; $urgp < $nofgroups; $urgp++) {
127
128
129 $html .= '<table cellpadding="2" cellspacing="0" style="page-break-inside:avoid; text-align:center; border-collapse: collapse; ">';
130 $html .= '<thead><tr><td></td>';
131
132 foreach($unicode_ranges AS $urk => $ur) {
133 if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) {
134 $rangekey = $urk;
135 $range = $ur['range'];
136 $rangestart = $ur['starthex'];
137 $rangeend = $ur['endhex'];
138 $html .= '<td style="font-family:helvetica;font-size:8pt;font-weight:bold;">'.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')</td>';
139 }
140 }
141 $html .= '</tr></thead>';
142
143
144 foreach ($tempfontdata AS $fname => $v) {
145 $cw = '';
146 if (file_exists((_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'))) { $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'); }
147 else {
148 $mpdf->fontdata[$fname]['R'] = $tempfontdata[$fname]['file'];
149 $mpdf->AddFont($fname);
150 $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat');
151 }
152 if (!$cw) {
153 continue;
154 die("Font data not available for $fname");
155 }
156
157 $counter=0;
158 $max = $maxt;
159
160 // create HTML content
161 $html .= '<tr>';
162 $html .= '<td>'.$fname.'</td>';
163
164 foreach($unicode_ranges AS $urk => $ur) {
165 if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) {
166 if ($ur['pua'] || $ur['reserved'] || $ur['control']) {
167 $html .= '<td style="background-color: #000000;"></td>';
168 }
169 else {
170 $rangekey = $urk;
171 $range = $ur['range'];
172 $rangestart = $ur['starthex'];
173 $rangeend = $ur['endhex'];
174 $rangestartdec = $ur['startdec'];
175 $rangeenddec = $ur['enddec'];
176 $uniinrange = 0;
177 $fontinrange = 0;
178 for ($i=$rangestartdec; $i<=$rangeenddec; $i++) {
179 //if (isset($cw[$i])) { $fontinrange++; }
180 if ($mpdf->_charDefined($cw, $i)) { $fontinrange++; }
181 if (isset($unichars[$i])) { $uniinrange++; }
182 }
183 if ($uniinrange) {
184 if ($fontinrange) {
185 $pc = ($fontinrange/$uniinrange);
186 $str = '('.$fontinrange.'/'.$uniinrange.')';
187 if ($pc==1) {
188 $fullcovers[$urk][] = $fname;
189 $html .= '<td style="background-color: #00FF00;"></td>';
190 }
191 else if ($pc>1) {
192 $fullcovers[$urk][] = $fname;
193 $html .= '<td style="background-color: #00FF00;">'.$str.'</td>';
194 }
195 else if ($pc>=0.9) {
196 $html .= '<td style="background-color: #AAFFAA;">'.$str.'</td>';
197 $nearlycovers[$urk][] = $fname;
198 }
199 else if ($pc>0.75) { $html .= '<td style="background-color: #00FFAA;">'.$str.'</td>'; }
200 else if ($pc>0.5) { $html .= '<td style="background-color: #AAAAFF;">'.$str.'</td>'; }
201 else if ($pc>0.25) { $html .= '<td style="background-color: #FFFFAA;">'.$str.'</td>'; }
202 else { $html .= '<td style="background-color: #FFAAAA;">'.$str.'</td>'; }
203 }
204 else { $html .= '<td style="background-color: #555555;">(0/0)</td>'; }
205 }
206 else { $html .= '<td style="background-color: #000000;"></td>'; }
207 }
208 }
209 }
210
211
212 $html .= '</tr>';
213
214 }
215//==============================================================
216 $html .= '</table><pagebreak />';
217}
218
219$html .= '<h4>Fonts with full coverage of Unicode Ranges</h4>';
220$html .= '<table>';
221//$html .= '<tr><td></td><td></td></tr>';
222foreach($unicode_ranges AS $urk => $ur) {
223 if ($ur['pua'] || $ur['reserved'] || $ur['control']) { continue; }
224 $rangekey = $urk;
225 $range = $ur['range'];
226 $rangestart = $ur['starthex'];
227 $rangeend = $ur['endhex'];
228 $ext = $ext2 = '';
229 if ($ur['combining']) { $ext = 'background-color:#DDDDFF;'; $ext2 = '<br /><span style="color:#AA0000">Special positioning required</span>'; }
230 if ($ur['vertical']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '<br /><span style="color:#AA0000">Vertical positioning required</span>'; }
231 if ($ur['special']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '<br /><span style="color:#AA0000">Special processing required</span>'; }
232
233
234 $html .= '<tr><td style="font-family:helvetica;font-size:8pt;font-weight:bold;'.$ext.'">'.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')'.$ext2.'</td>';
235 $arr = $fullcovers[$urk];
236 $narr = $nearlycovers[$urk];
237 if (is_array($arr)) { $html .= '<td>'. implode(', ',$arr). '</td></tr>'; }
238 else if (is_array($narr)) { $html .= '<td style="background-color: #AAAAAA;">'. implode(', ',$narr). ' (>90%)</td></tr>'; }
239 else { $html .= '<td style="background-color: #555555;"> </td></tr>'; }
240}
241$html.= '</table>';
242
243
244//==============================================================
245echo $html;
246
247exit;
248
249//==============================================================
250//==============================================================
251//==============================================================
252//==============================================================
253
254
255?> \ 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
index 90731403..00000000
--- a/inc/3rdparty/libraries/mpdf/utils/font_dump.php
+++ /dev/null
@@ -1,222 +0,0 @@
1<?php
2
3/*
4 This script prints out all characters in a TrueType font file
5 to a PDF document. Point your browser to
6 http://your.domain/your_path_to _mpdf/utils/font_dump.php
7 The font file must be located in /ttfonts/ (or the default font
8 directory defined by _MPDF_TTFONTPATH.
9 By default this will examine the font dejavusanscondensed.
10 You can optionally define an alternative font file to examine by setting
11 the variable below (must be a relative path, or filesystem path):
12*/
13
14
15$font = 'dejavusanscondensed'; // Use internal mPDF font-name
16
17$showmissing = true; // Show all missing unicode blocks / characters
18
19
20//////////////////////////////////
21//////////////////////////////////
22//////////////////////////////////
23
24set_time_limit(600);
25ini_set("memory_limit","256M");
26
27//==============================================================
28//==============================================================
29define('_MPDF_URI', '../');
30include("../mpdf.php");
31
32$mpdf=new mPDF('');
33$mpdf->StartProgressBarOutput(2);
34
35$mpdf->SetDisplayMode('fullpage');
36
37$mpdf->useSubstitutions = true;
38$mpdf->debug = true;
39$mpdf->simpleTables = true;
40// force fonts to be embedded whole i.e. NOT susbet
41$mpdf->percentSubset = 0;
42
43//==============================================================
44//==============================================================
45//==============================================================
46//==============================================================
47
48// This generates a .mtx.php file if not already generated
49$mpdf->WriteHTML('<style>td { border: 0.1mm solid #555555; } body { font-weight: normal; }</style>');
50$mpdf->WriteHTML('<h3 style="font-family:'.$font.'">'.strtoupper($font).'</h3>'); // Separate Paragraphs defined by font
51$html = '';
52//==============================================================
53//==============================================================
54//==============================================================
55//==============================================================
56$unifile = file('UnicodeData.txt');
57$unichars = array();
58
59foreach($unifile AS $line) {
60 if ($smp && preg_match('/^(1[0-9A-Za-z]{4});/',$line,$m)) {
61 $unichars[hexdec($m[1])] = hexdec($m[1]);
62 }
63 else if (preg_match('/^([0-9A-Za-z]{4});/',$line,$m)) {
64 $unichars[hexdec($m[1])] = hexdec($m[1]);
65 }
66}
67
68// loads array $unicode_ranges
69include('UnicodeRanges.php');
70//==============================================================
71//==============================================================
72
73
74
75$cw = file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
76if (!$cw) { die("Error - Must be able to read font metrics file: "._MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
77$counter=0;
78
79
80include(_MPDF_TTFONTDATAPATH.$font.'.mtx.php');
81
82if ($smp) {
83 $max = 131071;
84}
85else {
86 $max = 65535;
87}
88
89
90$justfinishedblank = false;
91$justfinishedblankinvalid = false;
92
93 foreach($unicode_ranges AS $urk => $ur) {
94 if (0 >= $ur['startdec'] && 0 <= $ur['enddec']) {
95 $rangekey = $urk;
96 $range = $ur['range'];
97 $rangestart = $ur['starthex'];
98 $rangeend = $ur['endhex'];
99 break;
100 }
101 }
102 $lastrange = $range ;
103 // create HTML content
104 $html .= '<table cellpadding="2" cellspacing="0" style="font-family:'.$font.';text-align:center; border-collapse: collapse; ">';
105 $html .= '<tr><td colspan="18" style="font-family:helvetica;font-weight:bold">'.strtoupper($font).'</td></tr>';
106 $html .= '<tr><td colspan="18" style="font-family:helvetica;font-size:8pt;font-weight:bold">'.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')</td></tr>';
107 $html .= '<tr><td></td>';
108
109 $html .= '<td></td>';
110 for ($i = 0; $i < 16; $i++) {
111 $html .= '<td><b>-'.sprintf('%X', $i).'</b></td>';
112 }
113
114
115 // print each character
116 for ($i = 32; $i < $max; ++$i) {
117 if (($i > 0) AND (($i % 16) == 0)) {
118 $notthisline = true;
119 while($notthisline) {
120 for ($j = 0; $j < 16; $j++) {
121 if ($mpdf->_charDefined($cw, ($i + $j))) {
122 //if (isset($cw[($i+$j)])) {
123 $notthisline = false;
124 }
125 }
126 if ($notthisline) {
127 if ($showmissing) {
128 $range = '';
129 foreach($unicode_ranges AS $urk => $ur) {
130 if ($i >= $ur['startdec'] && $i <= $ur['enddec']) {
131 $rangekey = $urk;
132 $range = $ur['range'];
133 $rangestart = $ur['starthex'];
134 $rangeend = $ur['endhex'];
135 break;
136 }
137 }
138 $anyvalid = false;
139 for ($j = 0; $j < 16; $j++) {
140 if (isset($unichars[$i+$j])) { $anyvalid = true; break; }
141 }
142 if ($range && $range == $lastrange) {
143 if (!$anyvalid) {
144 if (!$justfinishedblankinvalid) {
145 $html .= '<tr><td colspan="18" style="background-color:#555555; font-size: 4pt;">&nbsp;</td></tr>';
146 }
147 $justfinishedblankinvalid = true;
148 }
149 else if (!$justfinishedblank ) {
150 $html .= '<tr><td colspan="18" style="background-color:#FFAAAA; font-size: 4pt;">&nbsp;</td></tr>';
151 $justfinishedblank = true;
152 }
153 }
154 else if($range) {
155 $html .= '</tr></table><br />';
156 $mpdf->WriteHTML($html); $html = '';
157 $html .= '<table cellpadding="2" cellspacing="0" style="font-family:'.$font.';text-align:center; border-collapse: collapse; ">';
158 $html .= '<tr><td colspan="18" style="font-family:helvetica;font-size:8pt;font-weight:bold">'.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')</td></tr>';
159 $html .= '<tr><td></td>';
160 $html .= '<td></td>';
161 for ($k = 0; $k < 16; $k++) {
162 $html .= '<td><b>-'.sprintf('%X', $k).'</b></td>';
163 }
164 $justfinishedblank = false;
165 $justfinishedblankinvalid = false;
166 }
167 $lastrange = $range ;
168 }
169 $i +=16;
170 if ($i > $max) { break 2; }
171 }
172 }
173 foreach($unicode_ranges AS $urk => $ur) {
174 if ($i >= $ur['startdec'] && $i <= $ur['enddec']) {
175 $rangekey = $urk;
176 $range = $ur['range'];
177 $rangestart = $ur['starthex'];
178 $rangeend = $ur['endhex'];
179 break;
180 }
181 }
182
183 if ($i > 0 && ($i % 16) == 0 && ($range != $lastrange)) {
184 $html .= '</tr></table><br />';
185 $mpdf->WriteHTML($html); $html = '';
186 $html .= '<table cellpadding="2" cellspacing="0" style="font-family:'.$font.';text-align:center; border-collapse: collapse; ">';
187 $html .= '<tr><td colspan="18" style="font-family:helvetica;font-size:8pt;font-weight:bold">'.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')</td></tr>';
188 $html .= '<tr><td></td>';
189 $html .= '<td></td>';
190 for ($k = 0; $k < 16; $k++) {
191 $html .= '<td><b>-'.sprintf('%X', $k).'</b></td>';
192 }
193 }
194 $lastrange = $range ;
195 $justfinishedblank = false;
196 $justfinishedblankinvalid = false;
197 $html .= '</tr><tr><td><i>'.(floor($i / 16)*16).'</i></td>';
198 $html .= '<td><b>'.sprintf('%03X', floor($i / 16)).'-</b></td>';
199 }
200 if ($mpdf->_charDefined($cw, $i)) { $html .= '<td>&#'.$i.';</td>'; $counter++; }
201 else if (isset($unichars[$i])) { $html .= '<td style="background-color: #FFAAAA;"></td>'; }
202 else { $html .= '<td style="background-color: #555555;"></td>'; }
203 }
204
205 if (($i % 16) > 0) {
206 for ($j = ($i % 16); $j < 16; ++$j) { $html .= '<td style="background-color: #555555;"></td>'; }
207 }
208 $html .= '</tr></table><br />';
209//==============================================================
210//==============================================================
211$mpdf->WriteHTML($html); // Separate Paragraphs defined by font
212
213$mpdf->Output();
214exit;
215
216//==============================================================
217//==============================================================
218//==============================================================
219//==============================================================
220
221
222?> \ 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
index 21773b86..00000000
--- a/inc/3rdparty/libraries/mpdf/utils/font_names.php
+++ /dev/null
@@ -1,200 +0,0 @@
1<?php
2
3/* This script examines your font directory.
4 Point your browser to
5 http://your.domain/your_path_to _mpdf/utils/font_names.php
6 By default this will examine the folder /ttfonts/ (or the default font
7 directory defined by _MPDF_TTFONTPATH.
8 You can optionally define an alternative folder to examine by setting
9 the variable checkdir below (must be a relative path, or filesystem path).
10 You can optionally output just the font samples as a PDF file by setting $pdf=true.
11*/
12
13
14$checkdir = '';
15
16$pdf = false;
17
18//////////////////////////////////
19//////////////////////////////////
20//////////////////////////////////
21
22ini_set("memory_limit","256M");
23
24define('_MPDF_PATH','../');
25
26include("../mpdf.php");
27$mpdf=new mPDF('s');
28$mpdf->useSubstitutions = true;
29if ($checkdir) {
30 $ttfdir = $checkdir;
31}
32else { $ttfdir = _MPDF_TTFONTPATH; }
33
34$mqr=ini_get("magic_quotes_runtime");
35if ($mqr) { set_magic_quotes_runtime(0); }
36if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
37$ttf = new TTFontFile();
38
39$tempfontdata = array();
40$tempsansfonts = array();
41$tempseriffonts = array();
42$tempmonofonts = array();
43$tempfonttrans = array();
44
45$ff = scandir($ttfdir);
46
47foreach($ff AS $f) {
48 $ret = array();
49 $isTTC = false;
50 if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-5,5))=='.ttcf') { // Mac ttcf
51 $isTTC = true;
52 $ttf->getTTCFonts($ttfdir.$f);
53 $nf = $ttf->numTTCFonts;
54 for ($i=1; $i<=$nf; $i++) {
55 $ret[] = $ttf->extractCoreInfo($ttfdir.$f, $i);
56 }
57 }
58 else if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf' ) {
59 $ret[] = $ttf->extractCoreInfo($ttfdir.$f);
60 }
61 for ($i=0; $i<count($ret); $i++) {
62 if (!is_array($ret[$i])) {
63 if (!$pdf) echo $ret[$i].'<br />';
64 }
65 else {
66 $tfname = $ret[$i][0];
67 $bold = $ret[$i][1];
68 $italic = $ret[$i][2];
69 $fname = strtolower($tfname );
70 $fname = preg_replace('/[ ()]/','',$fname );
71 $tempfonttrans[$tfname] = $fname;
72 $style = '';
73 if ($bold) { $style .= 'B'; }
74 if ($italic) { $style .= 'I'; }
75 if (!$style) { $style = 'R'; }
76 $tempfontdata[$fname][$style] = $f;
77 if ($isTTC) {
78 $tempfontdata[$fname]['TTCfontID'][$style] = $ret[$i][4];
79 }
80 //if ($ret[$i][5]) { $tempfontdata[$fname]['rtl'] = true; }
81 //if ($ret[$i][7]) { $tempfontdata[$fname]['cjk'] = true; }
82 if ($ret[$i][8]) { $tempfontdata[$fname]['sip'] = true; }
83 if ($ret[$i][9]) { $tempfontdata[$fname]['smp'] = true; }
84
85 $ftype = $ret[$i][3]; // mono, sans or serif
86 if ($ftype=='sans') { $tempsansfonts[] = $fname; }
87 else if ($ftype=='serif') { $tempseriffonts[] = $fname; }
88 else if ($ftype=='mono') { $tempmonofonts[] = $fname; }
89 }
90 }
91
92}
93$tempsansfonts = array_unique($tempsansfonts);
94$tempseriffonts = array_unique($tempseriffonts );
95$tempmonofonts = array_unique($tempmonofonts );
96$tempfonttrans = array_unique($tempfonttrans);
97
98if (!$pdf) {
99 echo '<h3>Information</h3>';
100}
101
102foreach ($tempfontdata AS $fname => $v) {
103 if (!isset($tempfontdata[$fname]['R']) || !$tempfontdata[$fname]['R']) {
104 if (!$pdf) echo 'WARNING - Font file for '.$fname.' may be an italic cursive script, or extra-bold etc.<br />';
105 if (isset($tempfontdata[$fname]['I']) && $tempfontdata[$fname]['I']) {
106 $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['I'];
107 }
108 else if (isset($tempfontdata[$fname]['B']) && $tempfontdata[$fname]['B']) {
109 $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['B'];
110 }
111 else if (isset($tempfontdata[$fname]['BI']) && $tempfontdata[$fname]['BI']) {
112 $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['BI'];
113 }
114 }
115 if (isset($tempfontdata[$fname]['smp']) && $tempfontdata[$fname]['smp']) {
116 if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 1 SMP<br />';
117 $tempfontdata[$fname]['smp'] = false;
118 }
119 if (isset($tempfontdata[$fname]['sip']) && $tempfontdata[$fname]['sip']) {
120 if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 2 SIP<br />';
121 if (preg_match('/^(.*)-extb/',$fname, $fm)) {
122 if (isset($tempfontdata[($fm[1])]) && $tempfontdata[($fm[1])]) {
123 $tempfontdata[($fm[1])]['sip-ext'] = $fname;
124 if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1]).'<br />';
125 }
126 else if (isset($tempfontdata[($fm[1].'-exta')]) && $tempfontdata[($fm[1].'-exta')]) {
127 $tempfontdata[($fm[1].'-exta')]['sip-ext'] = $fname;
128 if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1].'-exta').'<br />';
129 }
130 }
131 // else { unset($tempfontdata[$fname]['sip']); }
132 }
133 unset($tempfontdata[$fname]['sip']);
134 unset($tempfontdata[$fname]['smp']);
135}
136
137$mpdf->fontdata = array_merge($tempfontdata ,$mpdf->fontdata);
138
139 $mpdf->available_unifonts = array();
140 foreach ($mpdf->fontdata AS $f => $fs) {
141 if (isset($fs['R']) && $fs['R']) { $mpdf->available_unifonts[] = $f; }
142 if (isset($fs['B']) && $fs['B']) { $mpdf->available_unifonts[] = $f.'B'; }
143 if (isset($fs['I']) && $fs['I']) { $mpdf->available_unifonts[] = $f.'I'; }
144 if (isset($fs['BI']) && $fs['BI']) { $mpdf->available_unifonts[] = $f.'BI'; }
145 }
146
147 $mpdf->default_available_fonts = $mpdf->available_unifonts;
148
149if (!$pdf) {
150 echo '<hr />';
151 echo '<h3>Font names as parsed by mPDF</h3>';
152}
153
154ksort($tempfonttrans);
155$html = '';
156foreach($tempfonttrans AS $on=>$mn) {
157 if (!file_exists($ttfdir.$mpdf->fontdata[$mn]['R'])) { continue; }
158 $ond = '"'.$on.'"';
159 $html .= '<p style="font-family:'.$on.';">'.$ond.' font is available as '.$mn;
160 if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) {
161 $html .= '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext'];
162 }
163 $html .= '</p>';
164}
165
166if ($pdf) {
167 $mpdf->WriteHTML($html);
168 $mpdf->Output();
169 exit;
170}
171
172foreach($tempfonttrans AS $on=>$mn) {
173 $ond = '"'.$on.'"';
174 echo '<div style="font-family:\''.$on.'\';">'.$ond.' font is available as '.$mn;
175 if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) {
176 echo '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext'];
177 }
178 echo '</div>';
179}
180echo '<hr />';
181
182echo '<h3>Sample config_fonts.php file</h3>';
183echo '<div>Remember to edit the following arrays to place your preferred default first in order:</div>';
184
185echo '<pre>';
186
187ksort($tempfontdata);
188echo '$this->fontdata = '.var_export($tempfontdata,true).";\n";
189
190sort($tempsansfonts);
191echo '$this->sans_fonts = array(\''.implode("', '", $tempsansfonts)."');\n";
192sort($tempseriffonts);
193echo '$this->serif_fonts = array(\''.implode("', '", $tempseriffonts)."');\n";
194sort($tempmonofonts);
195echo '$this->mono_fonts = array(\''.implode("', '", $tempmonofonts)."');\n";
196echo '</pre>';
197
198exit;
199
200?> \ 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
index 544f7f2e..00000000
--- a/inc/3rdparty/libraries/mpdf/utils/index.php
+++ /dev/null
@@ -1,26 +0,0 @@
1
2<html>
3<head>
4</head>
5<body bgcolor=#FFFFFF text=#001C66>
6
7<h2>mPDF Font Utility scripts for Version 5.0</h2>
8<p>
9<a href="font_dump.php">Dump all characters from a font (font_dump.php)</a>
10</p>
11<p>
12<a href="font_names.php">Show a list of all font names available (font_names.php)</a>
13</p>
14<p>
15<a href="font_collections.php">Show fonts in Collections .ttc (font_collections.php)</a>
16</p>
17<p>
18<a href="font_coverage.php">Show coverage of characters from all fonts (font_coverage.php)</a>
19</p>
20
21<p>Edit the scripts to change the font folder if you wish - this is set by default to /ttfonts/</p>
22
23
24
25</body>
26</html>