-
Notifications
You must be signed in to change notification settings - Fork 29
/
Copy pathpdfglyphlist.ml
597 lines (577 loc) · 104 KB
/
pdfglyphlist.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
open Pdfutil
let glyphlist_src = "x\001\133\189\217\150#7\146-\250\238_\145k\245\203=k\221\238\162\207\206\214\019G\149JURuI\170\233\141\017\193\b\186\130\164\1358d(\242\235\207\222\006\192`p2\251\1642E\183mp\1920\027\012\006\248\127|\250as\216\254\247'\2533{\026\030\182\159\190\221\127\188\237>\253\185?_\178\255\248\244\243\230a\191\253\244y{:\247\195\241\191?\021\2555\001\184\220\\\236k?m\223.\219\195\195\246\244\169\152\252\255\2487)\178\255@\168\159\182\219O\187\203\229\237\191\255\240\135\183\205\233rD\028\255\181a\n\255\2458\028\254\1769\031\255\240\180\253\188\221\015o\219\211\031.\031o\219\231\225t=\252\225z\236\031\135\167\237\203\241\191v\151\195^\"Z\015\167\195\230\242\223\136\240\000\222~8\254\231\211v\223\031\250\203\246\233\211s\191\221?\157\255\027\161\204\159\255/\255?\159^$\023Gdp\196+\254\207\167_\\\026\159\206\143\155\253\230\244\233\243f\127\221f\179o&\147*\207f+\252.\026\252n\030\175\151\2377\147|\189\000q\216<\158\134#\168U\001\234|\216\236\247\223\172\219\021\194\249`\147E\238\159\149\t\224\225\132,\226-\020\137{v\161\243\213l\229\129\199\143S\191\223\247\143\223L\170\229\196cO\195\229\001\005\243\142p\243\198c/\167\205g\1908\015\129v\195\240\186y\024\028\024\162\191\244\251'\001\170l\246\184q\018/\150x\238O\143\251\2377E\197\248H\\\015\207\251\237\239\020\187\176\128\138WY\212\2003[XF\016j\150\196j%\155u\150\163E\147$\026\132\158\205\1282\253u\179\152\186\199\240\130\228'\150T\142Bxz\216\187\228'hq \251\237i{\238\207\204R\021I[\188E\132\181:\151\171\b\170t|\223dy\"dl\001\160}\202\147Ex\214w\001$\249G\162}R\201\136\188?\162C\161\245\250\214Q\176u\236\223v\155o&\2294w\143\151\2258 /e\135\146\213\148\153\207\003\025o\155G\148\210\186@\224\225e8n_\201D\196\167\254\248B\169j\247\168-x\230\232\144#\198CZ\133F\248\240\220 NW!\136\167\244\207\026\016\192\199\195\230t\216\030\251\r$\170\203<\155\179\223\020\217<6\1776\155\163\1886\143\143\219\227\133\169\021Bk\226U6\183\005\146#\138\237\209\198\137\240\219\139\020\006\158X\152\200B\135P\251\254\184\213X\154l\158\020\005\130\1784\189\164\205\026\169h\150\192\187\012o\144\155\017\021\217\130\018\151\217bc\019]\129\246\197\133\184\023\210w\208\014g\238Q\163\173\179E\232W\147\005\158\183O\200\199\134e\213*\021:\209\164SH\011\144\161\180\160:G\132\190\152\243\005\148\020\159f\242\228\203\208\209iL|ygsPM\001l7\015\175\187\205\025\136)\225\249\130\028\003\020-\001T+b\127\218\158\238\190\179J\130XN#\156\219\254\133\"\007cgE*\137 \242\215\205y\020\255bN\022\187A\143A\248|9\r\175VB\201]\143&0\163\168\190\t\224q<\1464kH\147\180\003$9\024\017\234<[h;(\179%\171\190\202\150\255f\175\200\241\171\131$\192\164=\144~>A8r\187i\182\212j_\225\217W{\190\194H\180\140\021:u\132\01914\213\188\000z\0266\172G\006O\250\198Lhm\213\139l\153\244\rH\177\197\\\245v!Y\174\144\244v\143\174Q\020h\163\242\248r\218\178\247\151S\132\012\229\1328\195`\136\022<WJ\007\215\133B\223\2028\006h\169P(-\140\220\203\254es8h\026K\188\247\171\021\015={\153tJ\200\151T\006\132\n\153\213\nk\179\229\025\205x\231KC+\007ac'\133\208_XEH\224\139VQ\r\226n\003\199\160\011\142\021\140A\147&?Yg\156\216\171:[\233\132=\245\207\2189\001\132\t\027%\191\n\t\2313<\187\026wl\212\233\002\144m\234%\"\142\237`\230\1368\201&@\024\031\208\199Vw\154KgQ\2118\160\148\172n\167^\204@\171\251S/f\246\213\157\1697\017%L\189\011f\215\148\022H;\191\1464\243\235<\146\026-1\025\186\242F\158t\232\242\180*4\200\222\179\029\139\016\183\206\166\157\127\214X\001$\165\220\130\182z\0152\211\191\2360z\028\192/\242\006\252\155\201\021\233\247\195\165\135\166\248d\210E{[\237mWC\006\246x\227\168q!n\157y\209\135=\017*\143\217rH\168\t6\153\131\141\017m$\233\rh\"\182\213\230K\208\247FX\232\012+\206\227y5\227C\210\142\161\152\173\142,\002;\150\"\215\170\006\176\249@\165\166\208S4\141\183s\191g\014\202i\029\bU-\016\210&[ 8\203\236t\222>\177\015\174\"iCAj;\234C\007Y\157\239\230\002\194K/\159\161[i/\135\020njo\249`j\182#\173\162\225\149\011\222\157@%\198Cx{M*h\184\011\255\172\253\006\233]O\1957\197\004:\234\234\011S\134&\130\135\208\1411z\13029DS\\sLh\178u\236\186\243lm\007\232|\149\173\1479\173Fh;$W\217\218\143\187P\221\214=\222\140E\208\022@\144\\hQ\b\1554\bD5\\O\202.\179\181\150S\147}K\209\218\236\219\249\249\183\235\230\180\253\166,1\001~\171*]\133g\140\205,\202\210=\198\233jJ\230\241\165\223D1g\217\183:\180\173\178o\181L\144\142\23409\148\168ocI,\028\161\218IN``B\161k3\188\235\244h;\223\218NO:\153\200 \227n\243du\003\188\187\195\130\238\233i\191\029\181g\138\191\219\222\232\004Sy\227\250v\185\158l7B+\2556\212\000R\233\015\182U\001Hg,\000\190Sc%\1357\147\250@\249\134\249p\229\030\181>\016T\159[\255\236R-\166s\208\",\011\180\202\254\200\138\235\178?\230\029\210\255\166\168\023ky\174\248\140N\193\231:\231\243<\251#&\242V\240<\251\227_\181\1621\192\254qso\162\195\156\252\199\205]\165\172\000\227\244t\238_l\240\002\169\185\t\021M\237\143R\255\161\183\144\021\181\152\002\241\198\138_:B+\030C\244\031u\248G`\196e\187\bZ\193\031\205\000\207\208I\169\"n\171\145U\019\208'\211\131\192\215\162\197\243\021\235\022\024\002\246\155\235\133\021\177N\016\213\"\016\240\139\150\023\154\192w,\244i\246\157]%\022\235\236\187?A~,(\190\251\197\226\171\236;U\002\150\254Y\167\028\000\161\167\020\139\236;\213>\016Y,\162\149#\226\004\159\000\026\023Q\211\248\154\236;;\171v \205\172\186\142d\152d(\233\029M\027\141\236\187\155\t\152\175K_,'\242\164}\209\211\170F\204\178\239\1827\166\007\136\150\244\215:\251\238\249\180yE_\195\200\132%\218w:G/\252\179&\012 Q;\144\173\222FEz<'C\134\254\188\027N\023\027\016\213\167\019.\218\167'l\190Q\145I\211\194\027hU\166\191\207\179\239\006[\226\016\\gF\022\230\224&\159\169<\153\001\179\017 \214F\137\142JD'$\144\218H\241\182\246w\204c\223\249\229r\142\150\254]2%\177\253|\217\245\151s2)T\001\012m\1932\155\236Ol\201\179\236O\201\218.\207\254\020\027\223\218\017\218?\177V\249S2\200u\217\159F\011\177y\246\167\164\224\016\191fg\150}\207$\231\217\247f\170\169\179\239\191\143\227\2092\251~\243\000\157\253\181Of\248\t`\223RKy6\149\137X\239\142TS2\198\nL\t\236\237M\170\134\236\219\161\127\005\244\171\139\197\233\"\251^'\180\014\207:\161\149\r\168Pn\208\148\191O\231/\178M\207\1928\241}:\215W\000\018\211\196:\251~g\179\t\157\238\251\157U\007\016c\152\140 I:\247@L\187ZB\181}\159T\nj`@)\152W\186\137\131t\005\134r8\219\206\213\016\b\0219\207\254\204\138\\d\127\230\168\007\173\240\207\127\198P\137\230\242\231\1605\148S<\031\030\158\164\164\017<\148Z\185\196s,5r\180\212rG\164\139\148\018\137\140\202\018/\249\241g-O\145\227h}\181\137\164N\197P\255\254\220\191'E\141\020~e6\192I\139\017yH\138q\150\2539)F\188\024\022\152\2327\238Y\231\r\188\172\229\181\200\254\194\242Zf\1271\r\191\201\254\226\132Z7P>\221\179.\137\215\004|\131_e\127\137\133Td\127\177S\"\230\184\191\152,C\215\249K\210\142`\130\248K\"3dP\177\240L\021GTT4\237\191\\YY\139\236\007\202\186\202~\144\186\157e?\132:\133\145\229\135P\143\208\023\127\136\245\136\197\238\015Q\196\210\017i=b\160\249!\173G\190\148d\165\018Z_h\178\031\216\192\247\219g\134\158.\179\031P\023\170\194v\217\015Ris\252&\149\134tl\165A?\250!)\000dlx\183%\132t\180D\192\012&\201e\238\159uM\000@Jh\153\253\200\018Zg?b\161\159\215\005~\181\214g\217\143a\194_\150\254Y#\000\000%\233\148\172r0\140x\240\222\244\139\232\130\138\128\026\2491\148>d\251\145\165\134\023\158\194\1560\133<\177\014*G\168\218\176L\128\208\180\208\238~\188k\001Xv\150\017\214\157\176k\255x\223\002\144F\175\025N\208\176\158\130\006\240\163\029\191\145/\204O\161\145\213\019!UuY\128\140\170\011\223\189WN\006\214\196\137\025e\004\017\201\252\172U5\007\224U\rf,Q5`\014\2501\025\159k\208\007\180;\168\164?&:\200\138\244\137\149\130IJ\030\181pg\1426B\172\n\007i\129.\028\157\020\165\1431\020\215\138\209ZU\213\149Q\207\020\017\221\141\194\131\215U\183\193\b\253cjL`kM\141\t\140\236\176}\217\248\204\241\209\014\251\158\027\230\005,\177\133>\r\215\163m\198\237\204\225\151\254\178\183zQ\187\240xPo\208J\177\183vr\150\002%\148\205\224\182\183\"\132\233\244\016F\149,\246\rG\196\253\018\188\237-\018\024]\127\244c\243\132\141Y\158uI\187\242\128V7C\1321\000I\186\137\223\006\183\234cK:\140\018\181\127\014\005\204\"\023\192\172c\170\240\130\166Wg\127\197\203(\250\191j\197T\217_c\247\005\223\014\1410\005\2525Q\154\215\160\019\181k\006\224\238\018\023\027f\127u\246m>8\133\001\166\157\191\n\132\244\251\247\147m\231e\246W[\254P\182\254z\150\160\029\031l!\144\227\179\131\231\255av\242\236\127b\022\154\236\127\146\152\192\212\240y\2467\134/\178\191%\186\231\002t\024\006\170\236oa\180\171;<\235\\\131\178\248[L\165\005\145\204*d\155\241\003\134\223\191%%\217\t\029:d=\139\164\170\b5\228H\1813Db\214(`\239\006\150\t\178\017\247\182\026\236\222\254m\220\027a\205\251\155\157\141\234U\246\183\164T\192\215R\t\207!\018\188\143\205\168\020;_\177\137\221\015Xi\023\216\030\249\137\165Xf?\173\185c7\153`y\143\241\018T\225)\024\nA\149\129\154\144\170\002\213\145\170=U\202{\141\167\n\161\218\192\147X\186\240\158\240\166!$y\146\184\164\206\020r\149\165 \021Bb\187\239\167u\017B6\228\021!$*\rT\144\026\131-\168 u\195\252\021A\234Zb\tR\215-\169 u\189$\021\164\174)g\017\164\174\231\160J\r\185\"\165!\215\1644\228\140T\144\186f\254*\149zJ*H\221P\234*H\2210\239U\144\186\022*H\221P\150*H\221P\234*\200\210\176\030\170 K#\233\005Y\026\150D\165\1780\245:\200R\243\189ZK\144\229Yk\t\178\204j-A\230\189VY\144?\237e\225\217v\017\138\1769\188\245a\200\199\004\244S\232\138MxN^h<\168=\001\021a:,\n\251q\247\206G\140\254\242h\237\001\157\131\238m\163C\186\216\211;G\232Z\148\245\155t\253\130-:\145k\"t\232{lr\129L\130\225\181t0\133\248\137}\030\249K7@[\002vq\134(v\143)\132\202J\214kH}\151\132\192\150\194O;\024\017c\016\228\168\127\017K\235\012\021\216\255\174\002\160\025$\163\006\184\195\243el\131\195\235:\150 \196\133q\233zn\150\253\204\193\162\202~\222P\137\197\020\240\1793\216!w?k\245\002\141\021\135\002\2519\150\255\212\017\169V\143\145\255\231t\252\229KI\233\206\132\214JXd?'\027\196\b~w\243w\198\128\177\n\144\250\246rN6n!\235\206\239\222wx\244S\219\130\143\212\199&P\164\228Q']\210(\014\141\019I\155I\185!?]\025B\197\255\217\142\222X\030\252\156\212\003D\176\006G,z\127\134B\242\220\139\194\014\1796\169s\207\214\218UB\\\222\007\n\217f?\159\182\2081\130\026M\012q'\249\1312\246\2439\221Y\156\003\t\021\140\248\222\183{c\242\007\243}P*\207~au\215\217/\186\028\153\249g-\015\000aq\129j\249E\023\023%\158\181\218g\142\136\011\137\185\005\180\0294\022\213\020\024\214\228\b\017\027M\031m\231\023;SW \141\166\191\136dxc\217FLS.\"\1669\152\026\204\184\rL\"\236S\205\153\157[W\157:\130\154\023\202c4yH\171\171\135\169\127\214\176\000\172J\143\229\201/a\145\176v\143A\237\195\242\239\151\209\"\129b\218E\002\020\221_\198\139\004\012\021\191$\139\132\021\232t\145\192\226\181\144-\b\148\217\141\166\002\025\173\222\216B0-\016t\226_nm\164\171\000\026U\183eH\219EP\148\170\178\179\174t\155pV\007\"\231\248\164,)\025\230\245\252qx\024\246:\128\149\026@\141\169\243<`\214\158:\031\131w\"\171B\152\200K\132\208\245\b\242\232\\\157rt\254_\198\134\228\t\177\208#\145\031\172\0276\220%\182\227\216*\194\183\206'\168\163\176~\1994\244K\178\146h\003\160M\189\202\254\206N\221d\127\143\253s\158\253\221\180\029,M\254\158,\020\n\208\137\181\003\001\252\136\131\157\156\191'U\133x\147\237\147.\251\187f\014\188\208\214\176\164\251\007\197h\179\127\004Q\187\"\251G\020i\225\b\157\169!\247?L\019\233H\154\025\002K\181\127\152,`\179\248\031\161\233\195*\249\143DD\164\169\"\181\217?)F\151\2533&\189\204\254iSZ\128\180)\205\178\127&3=\172\145\255\228\234\006V\223\127&\233 RM\167\203\254\197t\166\217\191t(]\250g\237\240\004l\173cn\249W\148j\229\136X M\246\175\216bs\166p3\220\172\129Y\209WB\235\024Qe\255\194:\192\014\174s\"\215{\195\030\162\015\005\138\158\255\175P\253\165{\012C\n\236%\255\178;\0280\207\253\203&0iA'\211#t\206\127%\165\134\"\210R\195sh0\020\224z~\232_l\001\205<v\207abA\222\190\191\\\246\182-CQQ\248\222[]\246o\214\211,\251w\226^\213\128\0143\2064S7\172v\233\159u\250_\003\208*\243\132\175\178|\133\141\191\127;\163s;\151'Ux<\029j\006{\199\255Nz`\011\250\238\246DG\198\029\173w\005\220\1695\016}\183\181y\153\017\024\239\168\193n\254\239DO\200\229\189\187i:\206\157D\023\217\191\173\166\131\141\241\127'U\139\148\181j\249\028v\165\230uF\159D\232\027\216F\222b\182\217\163?M\209\1657\161\179\172\200z\218~F\176\233\132\248\203\245\215\205\t\134\162o&\179\206\209\167\195\245\1496\138\153\240\015\027\012\151\006\132\253\027\021zU\1959v\2147\155\207\003\180\031*\1921\209\249\202\226>\1972\001M\210\012\253\192\162\236A\015G\236\229\191\218\166\189N\184&BL\1716\163\200\254\195\2406\028\134\231\225\155\146\254[\027u\196.\253\179z:\175=`\203=\247\152\245[j=\166\142\216!P\226\144\020\162W7\021\136\162[\200\200\156\182e\024y7\137\n\135\165\200\230\142#vmQ\235\149\188\180\012u\196n-\1548\"O-G]\174\231Yh\017\208\220\229Q\018x<<\160\169\231\173\131\028\133\205TG\r\t\233k\160\246\175\211d3\208H\130\206*\000&m\031A\1977b)\195\138\181\1776ep\159\1586\175\166\141\181\132|\027E9\024=\020\138\222\221\181i\025\225\1687B\016[p\185\144\209<\tZz\004Zy4.\162t\183\175\195i\139vW\210\178\187\217\198\023\144\200s\223O\184\131\255\r\196\174\029\217M\171\156\206G\149\144\176\000\228\173\243T\015d\231\156\157\0039u\138\128'\139\137\243\146\td\238\188?\003Y\184=\249@\150no;\144\149\027^\002Y\187\001.\144\141\219\132\015d\235\182\218\003\217\185\205\218@N\157+\156'\203\137\243c\011d\238\220\214\002Y\184\141\130@\150\206\006\026\200\202\249\148\005\178v\206b\129l\22023\144\173[\137\004\178s\158\129\129\156\186\173VOV\019\183\016\011$\165*4\191U\225\150\254\129,\221\178?\144\149\243\139\td\237&\233@6n\197\030\200\2149\188\005\178s\206#\129\156:\031\019O\214\019\231\140\020HJ5\209\012\214\133\243>\n\164\212\160f\176\166T\019\205`];o\145@6n\162\015d\235\246\248\003\217\185M\209@N\221v\155'\155\137[\162\0062w\027\209\129,\156\186\028\200\146\0307*US\145T\169\154\218wZOR\170R+\180\161T\165\230\183\161T\165\230\183\161T\165\198\220R\170Rcn)U\173Q\181\148\170\212\236\183,\171R\179\223\178\172J\205~+Ri\246[\145J\179\223\138T\154\253V\164\210\236\183\"\149\214o'Riit\148\170\212\250\237(U\165\217\239(U\1652w\148\170\210\236w\148\170\210\236w\148\170\210\236w\148\170\210\236w\148\170\210\252v\148\170\210\252N)U\165\249\157R\170J\243;\021\1694\191S\145J\243;\021\1694\191S\145J\243;\021\1694\191S\145J\243;\165TS\205\224\148R\213!\131\000H\150JJ\rVJR\170\186V\146R\213\141\146\148\170n\149\164Tu\167$\165\170\167JR\170z\166$\165\170\231J\138T!\131\176q\147\0129\202\165wO\214J6n\r\016H\198\220F\1461\183\154\005\020,\026\191\202,\005[kTR\176\141f_\n\182\141$\019jC\246;\012\155\136\170URb\014\249\237D\170\165\203o\129R\134\181\216e\160\164ax\226\197\199tK\194\213]\221\150l\156M3S\018\1947\190_\131d\171h\154\137\146%\201\\\201\138d\161dM\178T\178!Y)\217\146\172\149dBM\163\228\148d\235\201\138\173\162i:%E\200\169\146\020\195O.$\025\179\159/H2\170\"\bY\177*\155\162P\146Q\021\165\146\204`Q)\201\152\139ZIf\176h\148d\006\011\0212g\006\011\021\146\211tS\168\144\156\166\155b\166\164H\1652\023\"\213BI\145j\169\164H\181RR\164\210\012r\154n\202\137\146\148\170\212\252r\154nJ\205/\167\233\166\212\252r\154nJ\205/\167\233\166\212\252r\154nJ\205/\167\233\166\212\252r\154nJ\205/\167\233\166\212\252\150\"\149\230\151skS\169\144\156[\155J\133\228\220\218T*$\231\214\166R!9\1836\149\n\201\222\215T*$\219yS\169\144\236nM\165Rq2m*\149\170\0221T\170Z\196\208Z\168E\012\173\133Z\196\208Z\168E\012\173\133Z\196\208Z\224d\218\212\154AN\166M\173\025\228d\218\212\154\193V\196\b%Ys\164jf\149\146\140\170])\201\168\186FIF5\237\148d\006gA\140Z\218s;U\1469\2344\176\180\231i\174$s4\159)\201\168\150A\200Zjp\025\202\025\237\128Zh\b\220\176\022\234y\016\178a\006\235E\1682\244s\144\203\137\146\012\188\204\149lH\022J\182$\227\187\140jY)9%\169b\176\232\234e\163dN\178U\178 \217)Y\146\156*)Ri\022Z\145j\174\164H\181PR\164Z*)Ri~[\145*\020{\195)\190^i~9\138\214+\205/\167\248z\165\249\229\020_\1754\191\156\226\235\149\230\151S|\189\210\252r\138\175W\154_N\241\245J\243\203\241\185^i~9\197\215+\205\239T\164\210\252b|^\207\139H\214$C\246\177%\t\178\138$\185:\138\182\028\220\234\245DI\138\177\206\149\164\024\235\144\193\022\003\212z\174\195H\203i\162\158WJ2\191\243\200\149\134\212(\201\132\230*\006\167\137z\222)\201\132\230\173\146\204\239<H\213q\154\168\231\133\146\172\133y\174$ka^*I\169\02210\165Z\196\192\"\198TI\017#\180\141\174\148tC\219\232*Ih\173$\019Z\004\169\166\028T\011\255n\147\023\024\160\176\019^\007\018UV\228~\129\214\228%\134\160\"\247k\174&\175\233\196?)\022JV$\151J\214$W\158d\167\195T\238\003\151y#3\172\015\\M\185\020*(s\216\200`s\181\214\153:K\1403 w=L3\155\227\230\155\146'q7\201\178\031\018\247\2092\194\245IoM#\016\170\247Kl.U\211\163\202\136\1867)\203\203&iyal\023\226\144\222\195\030\185y`\0282\209\244\199g {\143\173\233\129\014\012\255]z\139\206\137\030`\007\179\224\130\224\200\151\138Y\186ci\162J\213\143-MU\002\154\2040\244\235\230\130\127Rn\179\"\146\187\205\254\249\189\127\186\236`b\163\tB\237\000\156E\246\219g?d\226I\179I\237\002\244\211\230e{\222\1371\240\157]\203\133Js\015\1551\193\221\230\240e#\181\020#)G\156\209\139Ud\1391#\190X\1438\163\023;\199vb\169\240\251\r\n[e\245y;\208\0063\018\171\024qF\177\007\246\235\249z\218\232[\156\203#\156\190\178\158X\222\184!\172K\203\0295\136\181+\1327TU,\231\194\021\233o4R\158#*9z\219\161\163r\140\219\239\183\176U\238\191)\nj\014\254\184=G\029{\220\030\027\213\155x\220\030Lkn\165\030tx\219\158\206\155#\012\\\019*\152\129\180\193&\006\015\214Y\t\027\253\233QdG\211\011Y\194\199\023\011T\004^w\155\227\235\238z\217m\208`\233\020\005\140\182\195\130V\021>>\1566\143\175\219\139\248\226b\181\208\221\160\193e\030\005\199\133\172\225\158\184\243\197\151\166\183\176y\171\242)I\018EY\248\208\238m\208\"\019\205\206\226\133\137\030|\028`\002\220\246,\219\014}\226x}\218\\.\193\136G\197\234x=\127fmFcm\004\131\173/\"v\220\003\026/;@\133\190mPm\209\254<!r\218b\159\157\007\0026o\003\197zK,\245,B\197\157\149\146\227\253\219\027Ju\221a\171\001\143\167a\243\184\219\158Q\202T\018I\255\174\237\166\179\192p\194\216\247\194\234`\182\004\231`\184\221\127hx\by\130M1\026\018\217\247\137D\000\227\252\233\017%IK\160\148*\007\031\217\219\132\185\127FLnt\160\158\145\220\2320w\180\158\188F\211<\157\134\247\135\225\194\246\142\141\002!\1596\231\221\211\240N\223\003\2341\001r\181\201\139,\020\2425\202\235M\020\187\190\017\2401\195R\235#_V\138\248\184\151\165\">\234\229D\145\016\243\178PH\"^\134\136]\028\2112\146>\146\2334B!\022*\212\001{\223\245(\012\136\232\195\161\174\159\136{\251s\029QF\232\209\"\162\018\167\135\203\b_\223<\230\243\137\221\229\254\011L\244\235\142\250\028\145 \223$\146\200\149\201\182G\252~L\193+X\020\199\000z\n\185\161}!\224\154\027\143i\142\011C'\145\174\r\003\130\127\254\248\166h\167+\0032)/k\200\140\224\154\148/\204\011/\249qM\162RD[\132/G\169\180i\030\136'\169\180:\146\015gF9\235\020AM<lF`(\185\198\002\195\179o\003\011\141N3\223\006De\246\136\232\004R)\136\235\252\216\247ns\131{\141+\011$\251e\158\019\220\132[K\219\128.\138S\255F\0076\174\014\029\017\142eH\143wG@\141\230\149{\204j\021c\204\170\0224\155\156/\024K\207\175\156MfJm\246\2203\209\153\148\170a\224\220\1930\230\160W\022y\140-\153\140b\180~.Z\209\016\228 \012\218\1620\170\251\234\186a_:\127\028\222.\131L\001f0C\015\185\240\128\005\154x(?\142)\151\1961\156LM\007cT,1p\174F\015\173H\154\t\143\236\160\135\146g\213NGG\181\147\244\030Q]v\220\031\140\145ryy\189\209G1\192_\239i\139\t\030\180\197\004\180\218\"\024\159\169\145\239\194$E\179qr\021\014\139\245\163?\250\021\228\007\021\030VcTG&\130\170\022\134P\015\220\163\197\143\153\r\161\128<`&\014N\242\181!\147\150L\220KR\240\217\200:s\180\150\128\240MC\197^)\232\139W+\160\023<XExI\238\137\157\131\175\157\146^\001\196\212\025\230\224\135\184\157\153g\015\201\197&\165\208:?!\236\150\186\220\185\255\253\178E\144\029\021\005\204\178M\131H\183\143\155+\007\138\162d0\187E\136X\233\026\0184\209\142d\170Kb\016\0066\214!\167\242\162\201\243\148\244H\151\196\200*\224\2460z}1]+\231<\2361\169?)k\"2\028\135!]\212,\208#\031\182\182\028\153\162\245\203`Eo/\206\190\242\224\\\t\230\002mF^P\204\208\197\173$\184\134\200#\025\023\022\002F\133^Hh\217\177\181\161%?\236l\187Z\146\014-F\b\219d<\016\219\012\001w\188\029F\254\135\222\022%i\155Q\210{\148\194f\255\136Z\147\019\241(\163\254\248d\215\138\208\233\030z\227.\192\028\236\209\178C\003\226)y\001PChsOD\026\143`rx\027\250\227\005\250\014\020T\175\004s\149/l\206 \129-\191\219\019_\174n\185\230e\172\250=\027\156\199+\1701\213\165\243\255\141o\181\234\249W\194\005\253:\207\255\183\0006\166\144\029\140>2i\027i1\206F\158\188h\153\133c\158\182\143\151\128\205|d\018\246\182p`J\188e\219\162\245%/#\185\1752\185\187\192\163\253\030\225\1599(\020M(\129\024\204\023\221\249\130a\164h\216\243I^\223\222n\243U\025\222M\190\226\139^B\017\199\138Y\141CX\166\020\203\241\021cS\193\226\179\215\020\181\160\007\180\212\162\198\210\248!Y\226\225\173\225\129V\141\222\143\143\216\027\127\024l\243G\209\014\182\249\131\214u\007z\205oq\149\135dQ\215[\209R\176n\021\194\157\155\156\180\243H>\\\200/#p\232\159\136\020\006\177\163\176y5L\181\022\187\188\241\229<\002\182\145\181\014v\173\019b,\r\237\228X\025\196\011b\003%\146X\134\138\1780\160\147\197\"V\152.\179\157\014\147\221\220\002N\156\137\133\156\190\183\182P2)&\239K\218\171U\150tH$\178L\016\151\202<\193\\\133\205\018,I'\141\194e\018\195\189\183O-\187,^\181\225<_\138\149\131\188#M\227(5l\153\128\235\148\229\253p\242\020}\026\174P\216\029\175!\175\127zI\146\155y\236N\n%yX@\028\221,?\131,\2346\214\161\180\173.\136\160\241J.4\208\171\237\007x\241j\251\001i,\255.4u\022\254Y\210\231\204N[\191\131x\221'\214\237'\170\172S\193\206\219\015\025\146W\217#\245\1612{\180\158\130\r`3\143aM\252\168\247\244\181x\014J#q\1714::*\141\164\247\241\152w\007\242\248\196\201\251\248d\244\210.\183\184/\253\137\197\130\141\"\th\205\020d\188\157\221\248\194\227\144\143Hqxv\182d\239\tV,Z\247h\235l\225 \223D\132\194h\246\178=m\169D\227}\152\226\031\173\233\022Y\208;\233\150x\214\171\b\177Dz\028_E8\005\164\186Z\225\136x\239 \185\215\211\158\179=\018\241W\016\206\229)^AH:\014n\b\167\t\194\238\239\t\159\023\b /\209\172\202\167\254\133\198\029\150A\233\232\227shd\216\155!b\251\023\236\018\132\134\253\211\249\242A\211L\235\163\177m\019a\146\211?\208\240\030\173\1943\157\147\014\173C\b\219<<\016\219\007\001[\186\021\232\251\183).\201y|\229\218\003\011nl\t<&~\158\216.|\252\127]\174\184N\130X\142{\249\142\187pM\134\245\146n%\225\251\151+.\200\250\250\229\138,*:X\179\025\238\250\237\149g\164\164q\004\187T\209F\142Ln\202\200\1491z\163\153\006F4\151\207\002\148\198\193\230\182\027\0165\151p2\201Nf\001\t@\231\128>\006\241/\r\219\0000\147\254\198C\132f:7\185h<>\202\131\135\1999\240\177D\249=0\146\222\163\215Q\164\016Gu\217\185\127>\\\247\151\254m\015\195L\001K\134\195\208\185@M=\245\182\191\210\214\bC\138\167a\158\220\236\165m\149\024\220=\250\014m\132s\026\205\007\162\242pD\157\024\166\154\014\149\155g\182\139\023\139&\027\157\015\242]uip?\246\160\179\237\183T\222\164#S\167\223\236?o\177\014\226<\176(\028\244\132\254\136i\028\192\196\001\\&\157\028\146;D\015S\017Ck\221_\031\184\224sO\231k\127\241\194Z\200\155y\232S\242xx\196\200\028\135\028l\188?&\186\026\222\2426u\019\b\210\216\227\018\028\142\0079\218\002\227\190{<\240\196\215\230\244\193m\242\\!\1416\247\193h\0010AT\191\169\029\237TM*\244,vg1\\\230c\158\199)\148\\\214\198=Bw2\143\027)~~)\r$\021\233\241:\179\135\248\214\205\"\004\012\235\225I\136\204\152\184\151\0142#\236*wPb\022\242o\134\219\240\1728U\202\242vr\031\175\022\131\207\146\029\146\011\0079\155\143\1411a\248\248\230\196\2220tq\rAi\142/\167+\243)v\243G\030\246\185\158\184`y9\137\253\t*\020\193\211\000\130\206\230\158\152-xy\0174*O\207W\188\003\135\154\129\167y\024\155]\214\145\139\217\015\223\208\021Wi\158x\231\236\233\200\229\"';\143tA\186\136tI\186\140tE\186RZRo\215J\255yE\254$\208+^8\003\181'\144?\240\128\254\164V\250G\158\006\157ht\171\159\022\012?W\250g^\182\156\183\145\230Y\155X\024k^g(U\235H\230=W\242[!5\175\127\148\180T\150?\203\187\179@\2540c\185\230*\218\223\228e\173\131\159\190ch\205\231O\188ze\018\185.\031Zl?99\181X\127\250E\242\161\137\253\244/\169\021\173\196_$1\141\253\239\018\027K\225\237#\168\241\179i$\177\209v\166\174o!4\202gj\023\196\208\234F\203{)\163\017\156\152f\139[\190\221\021\203S\182n\166-\239\224I\188\229\157\0006bI\247m8\185\243\raP\147\006\021U/\214?^z}\137\016\138N\023\161\168\134\211\245\203\182wwa\"F(\000\219\011\213\n\154f\24024\189\015na\022\244\209\023J\212q*\224\215\019\"y\252`\001\163\021~\156\228Nm\150cNj\205\177|M\215#\016\015\129%\001\159=\171\206\1845\218T\217S\162\196\1476\198\168\006\228S\244\017\016\210\155\166\22895\241\205W\196\198&>(Q@\199\254\002\147\204[\206\196\r$1\155\005\228\1336\144I1\241\207\178s3)r\146\198\"\214\b\029\rb\164\205\242\167\225\235f\249#\t\239\163\165\146\194\237\157\185\175t\143\209\162\151\000\209\166\231alFo\220\254\182\188\252I<eF\156h\249\187\225\159\183/<5\2339\249\1523z3\240#\234\129\254\212\255\166\161*\003\142\"\b,h\007\007\005\167\006\028\133\247\1724\127\173\001G\225=\203m\237+\218Yt\244F\224]\031\174\230\141\185EGox^Zr\141\001G\225\003k'M\214\131\019\003\142\194{\022\007\165\173\130\181\001G\225\133\149v\001\216\222\1586v\234\175\214\014\176n \001\131\025p\180\133T-\"'\193\142\188\nn*\221\243\244\018\229\158\181\014\144q1\001\177\210x;n\185\203\162Gyd\146\175:H\253\176\015\247\167\178\029\209\252v\235\1640\187\199\176V\161\2298\128\142\174\243\187\028\251\238JB\156\184n\1845\173\184\215\205\254-F\174\128\152Mjnk\135r\145<\189\132<5JyEyM\192\234(\011\002H\145\214F\030\rj\r\237\205/R0\1781\0271\137\007{\158\135\224\148 \133\0202F\251K\193\217\209`|\217hX\019f\220\236\204\160\151=\196\201\001=B\r\005H\202\\^\143\238\031\173\002\165#F\183\145\019\r\151\215#x2\140\011\029\006n!\236\b\234\1298\132\n\016\199H\172\218\158\198\r}\222A\244\167']\184\195\154H\202\164Yd\134]8\202\166\026\144\152,\017\18735\023Z\141\193ho\219G\024|a\135z\219\136i*\238\178\206ox\244\235\1459\2053\205^\021Z\211\150\15584\136\160\203c\251)v\157\165\208q\246@\195\176\183\144\160V\236\222\209\130l\012\014\234v3\247\180\250\2214\004\220\030R\229\030\245\202\192\142i\029\007\236iQ^\252\\\207\024\n\142\215\131\179\187\197\162\\\163\252\183\188'\187\192\\\159\022r\155\1532\022\194\022\177\007b\t\019\240\155Ex\196|\252q\225\014Q8\173_\1430\127\026\176\202t\175\135'\n<\145,\002Qu\241\204\223\172\203\210\171'\208%\219,\185y\194\247\244JQ\223=\226\155\218\153#\148\200i+\137\169\219Z!}\185\012~q\014\181\251\169\255\220\203F\248\186\245\207\\\203\023\142\193\015&\185m\\X:\017ur\031b\141\184^\207;1\138\213S\188\144\236O\1609DS%4\182\167x\015=\250P\178\006FV\143\186\153\001\130F\148\167M0\145`X\024\208\178\194V\006\2496\131\232kv+cAz/\203\252\t\203P\158\237B\178\244X\178\146\012\001\141\185N_VW\128\016\179].2\208\241\133:*\154\247`\246\006\217\186\163\225\177XN#\233\235\179\205B\015\2465^F`0\136\201\220\154\137`\1789\243\226\180\028\219\143\158\250\149W\164\174\148r\1982\223\154\165@/\222\193\002\022O\016\180\201\171\153\007\131\147X\226?\134'\167\208\136'v\138\169~'\156w\024M\030_\237\017\219\149\162\222V\128dT\149\199+\182\196\144\133\203\166\0233-\138(\154\230!\1355\205s\218\178\166yJ._\211@\153|q\154\001;=)=\154\220\144p&\224\025\131\223\255\206FN\142m\198\012\154X?\235u\198\014\001\017\182z\212|\138\231\019\203\144'I\182\198\216\142\176\214\228\186\200\182zG=\222w\246\245`o_\006\192\218\218\021\188q\228\168o8\214\155C\184\190G\205\241<\250\184\007\163\181\166V\230\230q\247\145\222\179\208\181\000u\242\172\028\017Os\207,\160_\252X[T\231\216\169E\237\237\152\173e\232\023?r\139&\215^\150\150\163\223\246\160\244\166\134 \170=v\rn(cHg\207X\163d\252'=\218l\155|\210\195\209z4\030\242o\237^?\226\217\222\248\225\224\029\251\221\015\140\\[\245p\239\240l\170\021\239'\197\143W\019\219<\234\199:^\225\237\228\012>\228N|\220\017\157\183\026`\203Q\030\227\012\239\129\216(\177c(\136V-S\143\128\223\209\162\201\193\217\024\138v\154\187\000\190\020\027\031\193\022\011\233\016G\155+\022\2506f\027\133\216\193\159\216\223\167\0143e\017\1961%\025\018\128\209\254\245\170\127\217\rW\148K\017 \186\2188\239\027\206\169s\135b\178\026P\254o\187\222[\014\202\162\2409\213!\031\182n\031Gb \245\152\025\240C\185\134\204\181>\017\205Y\183V\192\171Ok\255J\184\027\171\245\137\235xWLZ\031$8@\147\028\159\005\224[wn\029A\225Z7\188.\146\137s?\218\224\235pD)\218K\007\004\012'\255A\216\175\196`\139\025\138\216\193\217)\161Vl\229\1471\177\173\204<\162\005\177\n\128\214q\225\017\2058\223\217\247o\236t\005\157\202\003\165\011\027\216>\017M\212\001\202@\232\183h\218\128\232\183hP\000\246[4\176\176n\015O\162\140\208\\\233\158\237\202\t\r4\209+\248\254\027'\128\243\248\014\14299\151\143\243V\138\000\225\018Ov\200fg\012\172\230\176\197\229\211-\253\179M\183 v\239\1629\006\150o\224\204\249`\147`\146\163\143\226\016\026\223)\143\2029\186\236\200\023)\183\241\0119\232eC\172a$\228n\167-\1525>>\238\135\1793\150\205\028\016\191\025\131I?\1334l\189J\025A!F\001\132\198\128\189\137\173^\180\133U\2546\189\213\n\139\004\231l\137q\202?&\221\206c\170S5\1586\029fA\168\255\140u\251\145\249.\026T\235\201\150\029\222\177\165\\A\"\155\185.\1466\020R\182{\145\156\197\239\127\242\007\005H\211[\209\149|\240\250D\215\144\024Na\128\132V\234\232\155I[\002\006\001\246\195\240\198\171\217f\004\169\027^\140\164\028=o\028p[\143\217\158?\198\018k,\163\190\136\211\254\019\143/P.\163m\1610\221\n\171\229\131\153\142:\210ZkxK>U\180FY\234\173/K\255\172S<J\230\130\212a\134\0270\206\232\194\144s\135\193\019{K\228\221\129nC\134\245\223\018i_\181y\179\005\232W\145\182\247\252`[\003\135\138\176\152\213\155\128\255\254(\150>\026L\221\179\029\027\022\030s6\213RI\186wO\184\149\022i\189S?\128\201\162\"\128z~\134\000\150j\244\029\144\017\017\171/\183v\229xj\190\241\180\022\2025\188\169\132\177\031|\154\018p*t\014#\20335\213&{Vk\195\n\207f*\016\026\017\028w\219\158\214!\216U\158\185\182\1386\180\149\003\018+\156\199\018[\219<{\182\246\153.{\142\170c\157='_\156Zg\207\198\231\021\157\2379\209\134\208\157\158\199N\1760[=\223:\193\194\162\243|\227\244\nM\245\217\154\030\144:\230\014J\194c\223\207\2164\153O\248\219\243\001\017<\239\249\128\151\004\1280\253s\162\218@\027\241\144j6\133\":\233Afz\131n\195T\192 \251=\230\241\225w\2312\232H\2500:\247E\201\223\235\230\217\029\004\014T\180\161\143\177hF\143\156hV\141X4$\207\156\1778e\152WR\182\026{g\206\162\155\224\163\183<\023\214<w29P1\152\199\142\215\163;\157\028\168\024\194co[w\004\217\019\209y\220C\252\138L\239\206!G:\134\"z:_\228\n&4\143\237\153:\019\150\249\207=\228v^W$\210\143\1501jQ\203\203Z\158\162\142\233h\163+\207\005\136m\1612\244\029M\185[\t?(\202\238m\167\163B\247\201\235\165\000V\251\157{$*\191\014Iu\223\218cQ\245u\200=\029\215\137hU\\\0236\153j\029d\021\\\135\168Z\2159R\213\219E\160\131v\235\194\171\142\231R\181S\181\011\016T[P\210\207\208/x\176L\190I\132\231D%C\031\138G\b\177Tx\030\158\213_\134\131\198\240\028\236>P\021\158\161\011\030\148]\145}\226P\202\235\188\241|\165\141\007\022K>\197rt\180\169\223\153\000\177~KC\223\171\223\165\240C\253\186\183mu\006$V\167C\210\234\172<\022\171\211!\247\170\211Id\171\211\133M\170\211A\247L\160\173plE\187\176Z\209.@\172\232y\160CE\187\240Z\209N\030[\209.@:f.\021\211A3\143\144\142\154\181\195|\027\241\017\237F\189\025\018\169\130\137H\1763\194\189c\158\236\169H\029\0319\247\151\025O\017b)\251b]\228H\134\003\1335\158\131\183\028\241x\182y\182&\153\154\2331\181\190\240Po2\225\204\167\021\209t\194\153O\025\179u\189k\133\142\158w\164\173\026\183\000mU8\210\238K\135\243\210=\238\017\147W \176`\242\160\185\131\1275\001\148~\255p\158\2175\004\172I/jjB\246T}\128,\230s\136\1369N\211\141#\226\231\016\017\199\232s\136\b\239?\135\152\203S\228\128N\246\n\016\210\1540`\014~\177\011\2149\233\225\192\029\174\228\016V\205x`\159\217\185\152\163\002\184\240\184\"\235\210#\135\235oOf\023v\186$\142\198\202\147\132\1884uM\026\017~\240\206\2434\210Ud\197xQ\197\208~\189\r\028K\186\151\196\233\178#m?\243\216\022\130\248\134%l\219\022<\016\027\131\000\246\254\128\153\003F7\b\172\028zs\135\192\218\225c\157\007\237\225k\223\154\172\201\186\253\164\0243v\231[\147(\255]\220\156\154\te\021F\"n\225\2150M\243\137BDh7\023\160%\190\216\205\133\025i\171K\179YcCp\239n`\145\199\168\253$@T}<\028\181\b\000\233\182\003\"\221\195\136\189\137_\174\208+CW\129\133\r\1457j\207\149\005\204\215/\160\204\025\134?+;\177\152Y\168\177|o\025\254\165\252\030\207\246\227D\132 j1\203oa\147$\182\000_\2267>\0176\153E\209\195\237\030\bF\213\023\187\007\130\237\180\023\029N\011>G\215Bt\178\019\175\151t\198\1596\011\230KV5\031\173Y\191\201\236F\177\015\016n\206\244dhF\165#\227\205\153+\007$r\251w\204m\154D\182t\186\228T\190\nD\024*\160\020Yd8q{\003\248r\030\240d\138\212\247\135\147\154\016\152\205\182\140\012\031C\219*\244\217\164\167\168\026( \129\030\162\197:\244%~$\021\028\187aQ#+W.\000\014C8\011\002S\130B\193\231k\238\176s\127|\241\231\204'\2294B~s\148~\158/v\251c\206\216O\155C\220`\226(\243\017\247\199\167\025\215\239X\214\239\238\127tuJF\234P\129\166k\199\1899\131\220\245\231.\179xb\148\129\236]\183\142\1427\234\1466\135\029\151$Gn \005\177\241\1687+\005\141\251?k\210\1631\016{\188\024\025/f\151m\150\237\018\015\166\181\161\173\153\164c\192=tIk\205\167p\188\166D\165\205\029\144z\169\020\249'qK\137,\187*v\220\133\227\166\011k\199Z\025\214\237\139s\199M.B\201\021{\221\156O\163\248\208\204\018\238m\148>W\231\235\235u\196\170Y\242\244\233\149\133\234\137\150\021\022\232\205'w+\022\214\233m\024\228\018\003\236\207=\200\185\249\249\"\192\238\212Q\192\023\020)\182D\190l\188\191\230\133\161\229f\167\004)\202\027\228y\140D\2237\139\030\253e\007\247x\020\006\189\248>\019mb{\195\2095\181\180v\005\242\135\027\168\232n\160\178\186\129b\002\t<\022:a\222H\157pS\177=+\248{\205sC\203\133Y\tRTc\164\156\140\145\024\183E\199\002[\222\141\188\150\153\138\011\142\255\136s\155\217m0l\179\237\210o:\163G\152o:c8\137\218k\235\136\248M\231:\219\217o:\131\159|\211\185\020ZcFhq]C\155\231^.\247\145j\247\152\248\241\027L}8 \2546j.\149RQm!\182\1873\192Z+XKR\245\026y\195\r\141\246\181\245|\214Z\206\229}\208\241\015k\207\221\216l\230\176\175\220\1834\159\213)w|\020|>\0191\194h<\018\164\179<Mp.h<D'\161\252H=\138`jX\250>\134\017\200\177E\197\197Q\163e\164\246$^g\232d _\146q\189$\247\182\151\r\192\163j\173,\191\211\213L\019\156\149\156\031+Y\198S\020dx\169q\143\246+h\168\190~{\189=W4\247\248\232\240\140\135\199'r\150\014\142'rV\014\024\157\200a0[\170\024\151\146\019\234\150N\n\132\201:GW\232}\242\152W\134(rK<\025\"\246N\015\140\251\186\135o\186\185\199\211\030\0140\185\230\031\229\153\232~\168P{\166\165\197\164\001\029\246\205\027\006\216\237\147\019\202\164m\246-\157d\031\165\233\253v\169\139\2401\159\026\162h\012Q\022\134\136\162{`\156}\015\223d\223\227i\246\t\030\135\215\22158*\021\020\204o\232\007\157y*\208\163%\222h\b\128\002\246%\245\243\204\133\169\135\143,\171 +\250\213W\164\237\167\232\167B\127\025x\180\201\187]\214\132\252\169L6\211\225r~\227\205Krw\005+Fn\174\224\161\169\157\174\0270x\218\190\128\234\210{P8D&\199hI\247\189\185\200\n\182\129]r\176\1826tR}\024\012\146\143\011\021\176+'\223\022r\133\005\161?\211\158\136x>\222v\220\233\228\213\132\238\217zw\005~\178\017\019\002\170R_\006\192\236\1485\030\227w\180\n\030w\233\169OO\179^]\128\150|6Z\210:3\151\018vmf\2535\n\146\2228\003A{\253~\020\226\141\019Z\151\245\169\195\205*\179\223E\169\155\172\183^.\016&X\015\197\025\201GT\022\221:r`,\223F\198<3\006G\186\220bU\176\r\134\199rm\185d+g\150pP*&R\204)\150\201\205c\186\0186\t*G\197J\158\151\025\163\178\234\193\198e\149r\184\237\127\185\238\229\208\136\138\209\166aN\220[\137r\148\150+%\162&\213$g\2429c4\248s\204\2492\225\255\254\184\221s\173\168QO\019\2543wX\177\154\012oc\213j\185\152pa\022\221\236\227\219\205]\190&>b\159T\172\"\169\174\221\230s\020\184H8\208\191c1$\005\217\243\000c\248\236\b+ \169\172=\134\163S\148\179\187\225iz)\011U\022\211K*\133\227\146r\146\140q\218\127\164\127\184\178\167)\251\018\139\004\131\165e\r\177\t\020IK<n\014\177H\146|{\131sI7\t\011\243\248]\204p\146\012f\222Gm1U\153\178`\2029\163Ehb\211\148}\230\022B\020%\141\215\184^!\215II\158\183\143<\199\164\002MS\230\254Y\229I\178q\030\030\251\237\229C\211K\132u\227\028?\201\153\162\219\164\209%\237\0006\167\199We\229)\235\250\020\019J\026\228\249\026{f\154\022\199\209\207\182\127-,\251\157\022\021\173\208\1485\012O\202I:\221\023\152f\152)\211\218\164\201\196\177\205\020:[Ld\152&\195\006\019K\219\180\024\228%\226&3\"k\140\202\bKQ#Cdu\174 \148\208x\028\174#\025|\155\n\131YWT\214\137\241\148Da\223|\130\t*jr\159-\235q\203\249q\172\148\006|\164\148zx\172\148\182\014\142J\169\007FJ)P\245oDQX\255F\178\140\187$Hk\025FI'N\157h\231v\178D\159\176\019\029G\027-N>\219\132\028\029S\"}\227\152\137\026\188q\171Cq\246\227\207\234\177\031\223\189wwb\241\224B\146\128\214\135\004\140_\233\129\141~h\237\223UvWE\135.\223Gg\022\188#7\207\021K\148\232\254\250\017\015X\128V\0079N\005\183\223E,3\185\175\019\219\160\247\238\234\172\133=\250\196\021\154^\162\135\163\000\142\024\131\130\251\031\134\236\163\236\129\241|?,\168x\180\006|Ha\142\006E\234a\224!\002\158\226\200#vIiw\005M\1734M\242\b0\137\128\161a\247\246{~EA\017/}\188\021\149Q|\014\023\179\240\022\022\144\234\192\190d\232\207\188\207i\027os\234\237\135\226\177\225\212\171\227\028\187\226\224\\\162\166\242d\190\239\b\211\149E\130w\020\135\007\192\178aG\237\215\189\167\190S\136P\149f4\128\147m\172\172\249\027\023\175\210c\182\229\140\177\196\197\011\025>c\011\203\238\249BR\221J\016\190\209d14\005%\192$;5\176=R@\216\127'\146\005\159x|qDNn8D\128\171U\129\209^\238}.m\157\221\244\165\210b\214\128\012\252\011\204,\231\196}\163\014\160\030V3\2046\251\149\170\249,\2515\185;%\007mv\241\022 \195\150\029\159\237\142\157\163\227\134\029h\235k=\201~\r\250\250\154\207\170\175O\029\161\006(\012\198\191\162\139\158\177g\227\2074\160\148\127\245\1990\180~\234u\150n`u\160\183\135h\155]\b=\186\018p%\224\205\157\128k\129\199vqHi\012MS&\176\027\157I\155g\191&\187\156K\210\161\128\132\176%\228\129XD\004\210\171[\016!zM\201\163\254\191&#\012*F;\004\n\200\174\"\139\140\215\132bT\193\204\1769\239^\251\196\2432'\028%\172A\250\t\180$\203\014\2273\208w?C8\023\134\203\021#\016\231+\130\209\023\000\0290q\195\154gw<\176\004\0289\1681Q\227\144%An\252\213\004\029\239\221.\b\166w\027.\001\217\018\175\133\142\005N\218\142\026\140w\236\030\\\001\179\163\200\220\208\201\004\212\128\241\246&\163\222\204=\166\2475\162\153\003\253\216\014\215\227\001z\192Ag\1716W\198\027\173Vo\209\142\213U\145EN|\167S\198\249\140\253\134\017w\n.6\226z3\192\179,\206\187\254i\131\005\255\016\235iba4\176\158#\147\187B:\r3\026M\215,\187xM\022\229\180\251(\245$\187\217:\145\234\184\221A_g\140\150\213\128\233v/\238H\167\215\164d\025\215W/)B7z\181\198\238U\246\154\\\2245%\237\1896\248\172^\027X\248\190\198a\007U\150:i\144m\020G\168!\175\169{eE\192\236M\162\022\019\215\012K'\217\129\020\233\133\159(\129\027\135\2285\154\019[\206\017\027jO\204h\014\005\2385\025]\026\210v\166\168\t\132\142)\\\219\248=\016[\191\000f\031q%\244h#\209\005\186\217Il\005\030\015\145\148\208\250\1402T\244\130\152\ne\189 \136\160\225\190\222\154\127;\229\140tme\140\181\237Y`D}{\030\160\145\198\205\1600#\234\213\141X\206\n0\232\173R\181\003\174\155p\166dR:\228=\190T\0179\\\245\212\tSs\215LM\153/\232\143\175\246\230*\022\164q\243@\235H\148y\180\226D\205\181t\210zP\166\253i\024oT\215\130\030\182\216\24776{V1\224HC\230\030\131\198\235\184\188\155U`\140\138*\224\227\240\019\143kas\246\016d\020A\bx\238\135s\012\140\210L\167k\012\222\214\178\141I\255\213\156lE\165\143\239xB\206\146\t\017\165\127{\199\019\2345\241\225(I\155\207+@8dYk4\0232\246\224\210\208I\029\160\001\r\024rb\185\162\152\006\012\248&G\029#cv\207\023^\018\128\253_\247\153r\180\23759\1951\028:\230T\169sy\195\231\152\001$t\182\1398\014\021\151(?\169`0\1342\243j\r\1980\157\190Z\243\240\204\210InP\186\1595\2069\168\247H\1732\0303i\022\217\222z1\020 \189? \180\132\189:.\016\183z\167\163\227:\137\244\171\244\138\143\205\016\\N\235\140\135\003n>\127\178^\004\252k\2239Yw\183!\198{o\171u\155\004\186\243\213\147\245\2366\196m4\211\016\232\1505\015\172\175}\249\004c\249M\136\219h\\9\232dY\145|x\018}b\238\159\2131f*\b\235\157\031\184\146\199\168k%@\212\182<\028u\171\000\132+Y\022\238\222\149\b\234\r9\158\245In\198\025\243M\132wC\141\249d\141\148\190\021\177\219if\177\144\170\185Q\255\214D\239h\238\139\133D\254z/&)0\145f7.\250\229\154\237r\172\239\175&\014\220\222\017l\217u\129y\147\208\"p\238--\150\235O\136\185\250$\203\t\031\238\222\252j\1941\165\211\139\250\206\215\176}\237\2216\255\020\165\131\214*^SH\213*A \131\210\003\187\233\222(=\228\168\2103wDz\202\024v\251\253H\021\194K\206_\021\170\224\222\250\171zZ_m#\169\158u0\007\209\182-\247\177\216\203\222f\002\143\143\185#\187\244\030\155\240P\016\159\212m\172\138\228p\n\014m\176g\206\004O|\212\220\155c\007\181\194\163\241]\168\236\002Y\2394\007\233.\022S\149\227C\152!yi\162\191@\001)${\135\012\128b\195\232\235\190\236\188O\143\128\179zh\203b\251L\231=\000\252z=f\162}\028FK\018v\028%`gG\212\155\t\142\228\246\159\007(\189\253\163q\201\207#\026\252\236\rt\199\162\176*\239\176\195\171\2249\183Xo\199(\176\190LN\029V\200b\156Y\177\005\135\162\218q\171\201\239\212\130=\188P\129w\023\138a\239\206\211\199A\220\248\022\134V\031\205\130w\234z\\\174\030+\208<\134}\188\236\179\192\1609p\143u\146cZ\r\023\232\200^\148\\\173\179^\193|\146\222\171S\004\154G\140\144\006\130\160\230\134/(\0079\231\130\246\164\1791\132\244\031X\200\177W\1607\156\243d\237\222Z\131\144\198E/\233@)\135O1\021hM75\195\198\147V\204$\"\247\234\165\200\190Z-`\253\030\011\189\204x\224\014\r\241`\239hYe\193\224I\029\192=\219{\158s\143\249]\224\202\147\209\203t\233\145\228\234\221\146\1607\0280\214p\t\012S\179w\1928:^\001C\154J\1899\2198\171\020K\239\145\018\220l\129\243]n\217a\208x\167s\158\140\031,\233u\135\165}\202;\233\129p0+\203\012z\199\220\130\241\214y\255\n\243\215o_\211TPu\001\181\241ws\007\135\152;G\142\227\196\158\tph?\180\031X\1882x\248\218\006k\165\135\193\011\139\016\027t\026\225\144Z+\016\166\218T\212u\132\019YW\030\015\175O=}#\237R\024\024\170\210\130.\"\156\148q\238\241\016\239\204\2117%;!\227cs\024\180\188\026 \214\145ae\232\196\145\129yr'\016)\197\241\252a}4X\014\191\025\219\209\156\209\156\206!4F~\191\234\137\r\140\241EK\001\170\220\206\161\136/\222\141\181D\029\197y\019\205`\180\028A\243\179nqU.t\024\176\161\226\031\1725\018:\239\225\198\026\137~~G\161X\173\220\187c\237\164\242\232\173\006\178\204#k\252Q\0186\205\209\026\017\163\223\193\2181:\190\222\127I=\199P\148\214\182\177\202\rmk\136\173\195\157f\228\027\135\168\147\0262j\164\002F\245\144\164\1575[\230\145\166\160Xa\181G^\183\207\152[\"\222$x:\138\004^\138\"&\239\149\006\243\219\193\174\204\145\005\153\233\204\181@\201NA-|\153\181\230h#4\229\221\152/\n\143\143\140\023\030\030/\166\171,5\b\178\245\016xC\019\183\203f\024\194<\158,\177\253\235\169\t\016\250\138\160I\004X>\030\018\0078\210\182\231Y:\169W\166|\148\027\168%\019x\180\238R\158\027:\b\1573\004\2407\021\181\142\242WXc\242$I\167O\188\138\231S\255\144x\026r\232\000\024i\012Q\156\229\247\219\023]\237\178(\140\129\000\233\141{$RI\244\0194\243\027\003\001l\143\007k \232\n\210\198@\128\138\176\022\001v\209\187\022\001N\023C\148g\ty\134\131\234>\140\133\026M\020\174M\016#5\250\167j\031\242\028Y\152db\012P\t\015V\003AF\162\235\024\136+['Z\2345\015\015f\160C.\174\143\187\168\007C\151#\224\143m\192\146v\184>\199\208\024\236\174\193\134=\023\"\242P\168\214\230\208\161V\172\205ae\233\164\188P$WS\127\020\208\223\128>\153\176\189\\\205\tVJw4\030\234\172Z\002i\135&x\246\n\164\248\019\207, \023\r4\146Q`\207\024\021\221\181\221\252@\154@\220\251{\011\024\011\208\1485\203\203XHP\185Wc\"A\145|>l_b\249b\137{0\193\145\155\247\148\143\232\205\251\203\140\170\025\250\235\209jm\029I,\217\228\000\2091X[`\0218\170\170\197 V\213rtT\181H\219\211\030\179\236\152\156\227\176t2\205\214`\232\231/\153\234\020@\172\244<\1797\185L\230 ]/\131\1309\201\142a\225\137\185\230\024\023\158\152\228\227\185\214\229\210\017\233\194\019\026\2171]x\242\165dZ\173\133\214\023P2\201m\137\1366\185\030\209\210I\014!\218\246\029\234\255oN\157v\031B?\154F\015Q\146\019\176S\210\193\180.\1325\173{ \154\214\t`\196\n:\026\171\208n\019\151\153\220B\227\1420q\1828\142W\147-\130\208Y\228\198P\187\246\248h\014\240p\250]\002XQ=\154\198\145;8u\153.\027\135F\160r\192x\022\194V\184\199\019\t|\164i\208\214\129\151\254u{\189D\152I\217zCi'\023(Z:\1697\190(\246\018\171?\179\248=\0264JT<\151\127\019\158\251\226S<3\238h\179\186Z\011\016\143\\w\134\190w\137W!\252\176\000so\219\163\235\001\137G\215\029\146\030]\159z,\030]w\200\189\163\235N\"{t\221\133Ml\030\014\178\007\212\029\162\007\212\023\142\2123\227\147@\135\003\234.\188\030Pw\169\218\003\234.@z_Y\161\152\030Po\"\164\137\205\028\230wJ\016\145XC Rj\rA0\187\005VF2\153<P\187\208\005d\245A\189\128\1660\140\158\214B\194\017+\153\253\19373\n\210I\006\219\146t\024V\133\176\227\170\007\226\192J \134GR\201e\153H*\185,\211\210Ic\230\139GL_\155W\186\137\155\017\148\215\176\134\027\026J\146a\028a-\015\131\217Qm\178\155\015\012\174V\014|\217]!\164\006\197\158tDGg\244\215\194\186w\012\165\253$gI\200\190\229\t|\207\012\187,\"\235f\0052\023\222x9\211y\244Ndud\221D\182\018\222\237G\022\161\152`\214\231g\0016\253\145J\205\132\153\184\152+\217\166\134\230W\151\002\018\236\128\172\134\139Q\145\214\134>\014j/\196\226!\193\195\209W\137\172\127\146\143\249\185\bY&\151\160b\173\002a\163\146$y}\240~\191\021W\176F\128\019\175\157\148\011c;\tq\190>\184;\213`7\016\018\179#TH\002\185\003\216\169]\b\150\221\187]R!J\213/!\163Qr\240\174\237\236\200o\248z\235\026\172+\149?\020jr}(\2024\185>\212\210IKo\201\184\216\029\164\133C\130\t\211\147\214\230\169P\220>\"tx\224\136\245\"\135\019JC'\135\017,C?D\178\206\220\197\030\206;\202+\180Xc\026T\190\155\168\172\218\177\006\026\252Pnr\007\0154Z<\232\186\1822dt;\0170^\174\003\210\168\131\136\213(\127\232\r\031V\207X\145\014z\134\016V\207\240@\2123V\217@\221q\157\r\225\004\005\006\205!\238:\023\203l\192f\193\201\173\153\234@Xw\199i\000\2399\207\206\193\140\194!j\235\194E\166?~\129\205\198!\185\1345\207\003`\229W\240\198\011tz\195\177\174\160\194\245\135;\n<\171\030\185r\132\030\238XW\022\b\006\202enQ\163@.\167\150\017\238D\132\029u\184\127o*\198\162\225\246\222T\172W\172+$\204\026\003\175\139\247*{\157\011\169\007LP#\161\140\144\142qj\198.\225p\175\014\016\187u`\198\251\018-^6\215O\206\178\224}\201\131\251\238\217/\206\187l\b\254\197\216\232\026l} \142\196\165\005\217\179;\200\1364q0^\147>\177\022f\185{\212\018\158;\218\b\186*\029\164\165\186ttR\158>\198P\146+F\155\028U\146\226\227E\204\152\133\135\027\239c\188nw\184g\217\253\237zd+\150\020\138\211\154\000!\184\250\003Cm\028\210\0113Y\202\233\133\153\148\231\016<Z&x\198\202\142n\173S\247\152\243\195\188\141{\182\251\246\185\131\196\191U\175\130l[\135\158\006\140!\214\251r\238\240\011\212\\\219\178\218\165\199\189[,T\139\225`\234sIyz\151\025\1742=\161\193\023@\172R\132\016NI\206\179\228;\226B\026\021\185%\0295\228I$\239\221\2374#;\232\199\242*Z\197\022\026\027\198\006\249\160JE\204\221\230\197\203\188\230$\159{\222\152\205\251\214\023$\173B\221: \234\211\002\164\234t\238\160=/\234\19545\164\170\181p\239i\214\146\019\171XK\200D\175\022\228\222\141P\146\011\171oKHU\183\133\029\175\131\234<\025\148m\t\236O=Rf\201\181\234\222\"W\244\233\156\192\1620D\2459wD\127\226e\148l\161\234x\205\241\218\017\218\166WKBf\202`\248\027\215~\190\231\2396\133\224\170!\160*\129\170W84K\186v\209\129\188\196\206\219pzz\022}M\026\017\003\159\158`O\127\188\238\0292'\130\157\005\b$\nN\142\246f\239\247\132%q\184\127\191'^\012\0316_w\254Y/\160b,cw\239\169\199\236h0\198\018#.2\236\156)\146h\163Am\141*\176g\026\160\015\r\170\015\213\2549\140\018\0287\0040\007\229\217\185\018\183n\212\154\255\152\007\237\158+\165\210\221\202Y\150~\242cR+\016\247+\167\017{\216\191o>\127\016\\(\024\144\185 \231\199\225\180u{\127\195\189C\025s\003\135\242\183\152\157\135\231\217\027?[6\201\2226\155\195[T\030;Ax\150+\250D\021\bl\215X3\144aT\173\241\028\150O\196_\182r\243g\145cB %W^`r\127K\214a\018\210,\195H[cv\014\026\027KX\014\132M\168\130\209Y\2516\131\248\179\192\226\164?\2504ME6\246\173\019?\232\005372\1963^$\204\225\132\r\189\201\172\218\206\220\157\182G\127A\r\230_%\211\163\251\203r\021Y\242}atV\005\2207\140\023\017\176\227\148\t\151(\190&-\213{\167\0063\n\190\137\194}\001y\030\001{\241\178\207M\184[\167\152\026z\156\159\181\225\185\015&w\006qgUZ\131\216,\173\012\158\228\201&\168\153\154Y\208\228\202\198\226\190\183\220\024\196\230Kp\1744\159\250gY\255\021\000\206\219xb_\234\253\156\220\170KQ\162A\158\148\191\127\165u\143yn\137'C\020\027C\196-J\015\140O\197{\248\230T\188\199\211S\241\004\191\152P\208\205\222\172}\022\025\141\n3j\200\026T\161\r\185\155C\209\242\147\019p\b\023/\227\168*\165\226\"\135\216\246K\220\165)\209~\156\223\2198d\tFt3f\021\165\135\028f\153\189\176\148\241\142\206U\136\148c\227\196\188\238\004\141\253_\226\025]*\200\214\159\220y\193@w/x\1551\145\244\248\000%=\249\015\020\179W;\"j\029\179\000%\237U\003\170\019\145\132\163\"\128hV\254\217\170\221S\143\185\169\128\170!w\022\029\150\204Z\185\007\237i\252\0160\145!\164\162\253\165\b\128\2173\234\004;\163\165@\018Y\245z\135T\t\140\137\255\169\127\228\183I\2099f\146)z\t\156\197\127\007\019\019\1283\239\189.xw\246\1551\157#\183\2017\130\230\164\195h/\132\029\212=\016Gu\002=\181\213\134\015\162O\215\153?\023q\179\207:S\206h\167U\025c\219\247\"\027\159\177\192\236\237\161\145E[\130\134\019i\176\135\130\130Y.\216\226JI\"=\226!\146:\031\240\153<\190\197/\021c\173.\192U\023\2319\019\024\206\027\222\159\031\2201\160\146\190I\238\249\011\153nr\\z|\148_\015\167\246\127X{<\154\150A\237\224\145\0077l\185\233\022r\229\129Q\177\248\183eB\028\197P\025\150\198b\192\209>@\235\163\186\176\248/\177F\176.r\248(83i;<c\182}\155\244\168BX\002\239'\219\217\016\t\247\161\209\021\231\242d\157\015\215\130\196m\236Zh\183\243=\225\137\014!\221\166v\227\t\211\235\\\132\218\237\011G\154\217\tM\198\190\128\245\227\155\241\153C\011K\174gA\187\028xH\243\248\210C3\251\157*R\184,\137\146Z\030'm\229-R\158\204|\202\\\165\204\235\155r\152\156-M\210o\234\192\007kO\242\201i(\239\145~v\135\227\217xu\237\128\240\209r\201\156C3\150K\254d\253\144S\016\243!\187\169\163\162\231\031/\149~;\rO\215G1\215\174I\252\202\227\171\159\229\022\021a\210\248\191}\n\187\005\011Bo\219\189x\n\210\145T\200S4\151\022\138D\003i)\024\214 \238Xl\217\026\218-ZP\012g\233\145\029\031\236\146 '\176\239\191\242\153C\180\015c]E\201$\183\185 \157\228\238\022\208\198F\136\134ll\132\179\2367j\221y\246\155\030\165\233\248|0\0140\004\204\233\187\130\228\200\201\186!v\227h\220\018\029\031\165cl\225\170\182\240\156O\018j\147P\143\150*\218\132\154Z\170,-\197\229T\164\162J\019\144\177^\020\240\223x\174\236+\240\255\250\206\141F\149pS\189JY_{\2316\248\233\184\229\181\014Fc\\g\191Y\147)\234Pu1\216\133\127\243.H\216\244\249-\025\024\016n\224\169J\204\238x\136\138\152!\163\154\"`r\031 \246m\228\214\189\004\143*\214\136\027\238\183sx\158\226\163\183\0287bB\250\171\177\\\136J\161\209\171\142\225\015\0278h\170\208(\1720\210\220\180\n\141\194\nC\219\171\195\186\136\141B;N\248\230\171\195\230\017\027\133\022NZ>\141B\163\176\142\225\175\255w\208D\161QXa\132\239\188:\168Vh\020\022\012\029T\023\153o\141\193\201\005\005\021\242Ba\2299\239,U\212\150*sK\197\214\027\144q\239\t\248M'\b\140\180\019\016\229E>\226m\140ED\160td\202-\022\191\007\178R\212\127\002d\190N\144\240y\015\003\2356M|71\220\197\144\225e\145\199\251\002a\250/\148z\216\156\229+\172+E\252\173\177\249B\145d\162\143\175\202\172\197\233p\149B:\145\149\252\146z`\133\155g\003\020\146\233\"if\192|\238\224{P\136hj\232\163s\213\017@.\186\r\249\154\025\140\166\160\162\181@\146\1796\163\189\017\170\224)9\247\191\000mv\239& \195\246F\157\233\166OI\252\201ox\"UO8K\134\132\027\185\193\173F\152q\132[\147\021\201e\198\165\025\155\216:3\1394O\219}\195I\150\222\205A\218\186\168MA[\0235K'^\006(\138\141l\bbn\020\019\1661\254\230\224y/\209[&S<\156\221N\t\157;\229>\b*\023Mf\191\177\132=\197S\216\213\1942\245\020}\165\176\222\141\223R\192\158\200)\245\138\"\219\236(aR9%k\250\169\208a\031\006\246\245\211\205\153\156\026\229\185\197\026\146\159\127\018\133\014\250\214\156\016*+*L\141\"QaB\218\219\023~`\199\173SY\133\158\230&\000+\186\139\136l\t\192\166\143\166`,\000\176\148\159\210\163\212\019\002\163\131\199\140\216\214\219\130\244\199V\252x\237A\1852\255\180^\173K\252\175[}\146ss\167\196Uya\232\164~)\148\156n\019\137\207\187\241\180\234\208t^\237\220\204\1532\226x=f\235\204\209\185\1853e\140\222\243\236\b::L\174\157\155C\021\027\189\2379az\237\220,\170\216(\180\227\164\217j#6\n\2378q\138\237\220D\026\193Qx\207\210I\182sSi\004G\225\029+-\172&b\163\208\158\019&\218\206\205\167\138\141B;\142N\181\157\155Q\021\027\133&\199\r\182\206\216_\240\022;@\189Q\233Z\007\208)vc\234\203\225\230P\147\028^:\241\011:\193\209|\021Is\r=\140\201'k0\193\194\235\020\015\205\147\024\184\252\200\249\224\226Y\186\199\232\012=\183\128\189\011\164&ct\r\133D\0043(\223\240kY\b\134\245\246\254\198\216\144{|dl\240\240\216\172P:xt\019\235\196\161\227\227\2263\011\167N\131S\207\210\176\030H\157\2289^\017\189qO\\\004<\177Zx\225\198\198\031\232\004\014O,\031\229\194\160i\236>\213\2448\251\210\129c;F\233\203u\236\254\232\243\142\156\159\250\145\023f\195\168hY\151\169Z\246\204\156-{tLr\234\225S\031Br\"\180\214\145\142\169\216\129\208\210\201@\136\238\218\211\139\142g)\249d=\251kA\252^\148c\243]\239\185*iF\196jt\211\132cE_$\156h\243,\150\165r\252nC1_\165\144=\1836MY6\162\130\172\212W g\228\151\228\228\011VY'\2354X#7\254\156\001;\213B\169\216\209P\002\201:\r\t%\231\007P{\201y\001K'e\142f\004Q\244\132\000\132S\029\031\239Xe\011\027\226\167\168a\229$\236\021\026\228\218k\137r\161G\247\0181\202\219\019\162\147\136\134\237z\003\217-x\003\223\219B\172\238\176\195V\226=\158\221R\004\223n\187B\252K8e;E\178\177\232\167\129\176\227\027\222N\206\031\160X\147\243\007\150N\202\031\177!\026\209}\140\230V84\205\222\186$\218\243\171\221\r\199f=\220\137\196o\015w\206\179Q\153N\"bo\220\139\232\189\018-\179\175\022\232\029\150-\2072\163\169\018\166\210\179U\216\187\236\172\n\251\220?[\157\017&\225\243\230)\234TB\250&\199w\159R\229\012&)~?ndK\1543\230\167\145-i\190\000h\245\243N\232\168\159\147\182wt0i{\t\135\165\019\175\030\166\006}\025\127\177-\129\020?v\216\249\022\232\016O\246S\208\195\246U\180\156\220?GsJ\138D\213/\224Q; \130%Q\232\176e\225\232\224\147Qy~\127\224\223\189^)\130\230\031\241k\252\204Z\233\224C\136\206\211\129\156\b\169\145;\178\239\237\233\204\198c\225\149\218\2096\136\135B\b'\138\158\251t9\184n\183\246\149.\128\225\165\214\0036P\192B\024'\138\238\139\2488\148\158fg\187\234\001\025V=\216\207r\207ISD\244f)\180\006\181{\223\2083e\234\030\237\197\157\030\186\2276\183\156;V\248\188.\026B\\R\021\142\208;\230\160e\157\1475VA1\019\169r\161\195T\001]G\201$\024^\219\162y\239\247v\166B\023\216>\014n\223\172\244\207\163\143\179\205\178p7\227\132\251i\231\237\214|\218\170\020z\212\005\011\001o\250\160\011;\238\132\168\251\240\017\139\198=\230\165%\158\rQ<\026\"\174\179=06\016y\248\198>\228q\187{^dw>Z\193p\201n\240\146\128\025\015P\143\201\181Z\150N\198\131\021\024\135\254q\216;\227\211<\146\209\250d\192\196Xdp\2212\173\004\251<\244h\141\156'\188\000\211\197\029<\153[\208d\183\246n\205\162\200F\1741\172\164\207r\193:;\024\031\227\166\178\007\204<\189tHt\192k,p\239\140\202\196\005\b\179\186\143\192|@s\229\016;\199/\003\020\029\237<\148\186\218\181\001\140\254u\030\186\231a\231E\181\142\030>tR\254\030\179\238t\030R\135\186\153\167\213\165n\165@p\170\243\175\168\027\157O\220\238\192\249 \233!\150I\004\245\020Ke0=\198\210y\208;\226!\178\231\139\222\149\015\197\237\188K\172f-\0013\0117\164\237\133m\029\001\222\b\164\215\230\229\030\177\159GZ/\154\004\142w\234\173\023\172I\225\216\207\"\225\133\137\133\237%|\181\255$\146c\219K\251\240Va\225$\153u\166\247[\184@<\133!JZ\233\200\189\179H\242\250\011\1619\002]\015&\188S&\164\b\172:\224\129\168\015\b\176\199R~o>\"\"\169\216Y\004s\219\2381-L\012\189\187d\216\172\0280\0267\027\135\222\012\156\173\195\199#'\171\200^iGAxl\208\029\025t\207^\204\128\136]b>q\143\016\213R\150(\nKl\r\017\135G\015\140G]\015\223\140\186\030O\135X\130IQq\012\221\241\230c\205\021\155n/\231\027\166\242\020U$KG\005\201\162\242\004{\199z^,na}'e\234+\203\0274\190\225yCl\007\139\\\160\168\1519A\140\b3\011\196\168<\172\193\230\134\142\161\136:}\001\155\197\208\172\229c\162T\169\249HW\148\133\135\165M\025z\127=n`OO\r-\228\217\153\012-\204.\200\231\150Nf2\148T\191\191\154o\199,\029\144\028x\022\240\208;\255\028\170\024\163\146b\234\195\249\198\164S9xd\209q\232\200{d\229\193\212\202\211d\247<?fY\234\244Q\011\157\030(\165\198\222s\204O\0123.\190\209\253\165\203\236\158\187\b3\201S\030\028#\250\223\227\148$\164\1530%\\\156.\235H\222\243W_\147\029\166Jy\213N\139\030\136\147\162\000\233\148\2168(N\136\002\220\155\014E\020;\025J\200d*\020\196N\132\002\23248\021J'\193\165'\195\020(\129u\002\148\228\236\244'\236\244\019\195k\133\174'\238\007|<a\030>\160}\167\238\238\211\016Lg\200R\017\157\031[\129\252\236\136\180\188\015w\177v\143\201N\0191wx\179\245\143V\145\134\129$\185n\028\237+1\188 q\238\006\159M/Y\b\150\206\199\220Q\029}w\015\245\151\220\t\201P\182WZ:\233\149\144r\216\247OW\145U|\1737\031^\193\239\002K\220\217S\030\202\132F'uIFA\162\255\197\139\177\248\2389\172\202`,\000\021\237B\200\182?\023ZL\220\163my\030|\146\157`\255\152|f\205`\250\153\181*;\171\169\t=\\tR\187X\153{\236\241\145\023`T\129:\240\220\236\210Sa\211K\238\229\134~\241\184\227\215\0141\217\207\166>D\252<R\224\132\152^_\232$\184\014\148\196\187R\234q\243\214\227%&\029\192\253\145\206Qy\160\006\190\015\011\159#\015\018[\b\138\022Cf\029H\137|\017(/;\183\019Cl\241|\194mV\026\031&^`4\200v\160X\027C\160\214\006r&Y\023\138/\132@\157\015\020\220\143\003\030\228\148\186yG\011\145\181\135\175=\222hq>E\2390\212Kb\210iI\007\181J\b\171V\t\192OR\216\017\157\2116\209\212\228L;\001\209\244c\021\216\147\019tl\183/\028\156\142\236\141\143b\228?X:4\157\025\026\007\142\198vv!k\007D2\238T\004?G\206\146\240Tr\007\025jQ\206p\220v\200\198s\238\244G\136j<\194\220\1799\248\011\179\185\195\226\193\\\014\210\241\144-g\177\235\227\142j5\029\211H\217\225\004E\156|S\214\210\201p\178\204\210\175\135\214\020\134\218\189\243D\195&\203\249\202\203H8\181'\014k\129\178B\207\0215b\163\rD\1592\152\145\207\031\195\245}\147\220\235\180\200\232\219\012\165\192\030\206\157\145||uG2\nO9W\005~\015JO\237\022\228X_^GGW^\210f\219\183%9\250>wA\236\230\235\220evIl\130k\210#\205|\193\216{\230)\201\2092\187$\230\195\181\161\1473\201\0190.\2390\127m\204=\231\151\r\015:K\212\159\169^\206\248 \202)\181\222H\237Fd\212\140\005\140\250)HwY'\214\205\023\235\149\015\134\154\193j<c\246\229\183\r0V\\\162\245\011f&\012H\198\188\143\166(@j\223G\147\020t\236!\207\234}\188\2498\228\156e\228\224\155\211\246xE.\030\205.\209XV:\"\189\171\005[\131\151\212+\129\178\154\243O\208\005.\137el.\180\026\208 \131=p\000s\228e{\239c\0033\0064\151\148\207H\142>\227\208\016\187s\233\235\172\b\140\241\197\001\147\00597\031~h\005\141\007\220%\226{7\028`\002\t\156\155\168\231d\029\248\225\222\139\249\174\240\212\160#\241+a\165\173\027\166\134\203\221\026Z\204*\229\220$\189\"\235\2466\004\236\006\\\146{q\026C'\157\130\001\247\219\183\029\207\133\022<\179\166d\208)$\141}\207E;v\016\236\029l\147\192\248mK\211Ad0\235F\225\020\242\158r,\012Ut\151B\169jIQ\162e\135A\169Z\242Ci\023\247\213Q\022\216%^8g\200x\225\156\128\241\1949!\207\182\025b\183\225\130\205\253\184\162\158\206\029\144,\189\b&G\028j\210aT\020\194\014\139\030\136\227\162\000q\220\129\185\159\244\200\255eA\144\166\166W\2044\163;\024\187\017/\185\136\177\181\204`\237Ob\187\185\146\017\237\193\1422\197\\\232Q3\157\tx\211g\\\216q\243ez\024\011\182\191\247\231\139\220\191Q:\224\153\135\017\011~W\014\164\251DP\231\030\229\164G\238\158GN\252Deg\253f5;U\206hA\171\140\241\242u\158\141w\233\165l\004\026\173L%\232)]--\020\211u\208$B\218Z\153=h\149\162\175\196\1876sf\196\031\015Y\242\241MN\147(\187 F\175\177\201z\149\185\215\204\249\145\214C\nL\0280\196\003%\157C\204\017\019\214\172;\180c\239\166/\020=\203\247\228\184\214\139\203\217\197\029n\\b\n\0275\195ux\233\030\227\171\0300k\241\169Cb\t\022\022\184\183\030\247\241\135\021\185\143\192\024\175}\000\187J\159\006(\174\211=\148\174\212\203\000\198\181\186\135\238\rH^T\187^\247\161\147\021\187\199\238\029\018o\028\203.\231}h\029\231|\144\184\164\159)\016\022\245\254\021o\237\147\163(\171\020\226\221\154g\217\160\246\012\029)}\030\236ar\031]X\167\1474\215_\162\233&ws\161\205&wsY:\153;\132\129nt\211I'\1291\234\163\001\031w\209\"\027/\014Z\143\140:(\003\234g\222\226G\181\188\162?q\144\247])=5$\228\211p}\216\251 \141\127\129GDX\141\206\172\230\160d\005Q90\172\230<\138\130\239\015[sx\136B\243\164c\1566\026\143\164\147\137\160o\201\023\205(\137\185\250\193\159(\161\204\201\181\2260I\\\172\003\011l9\201QDla]\236\247\160\217'\146\171\1700^$WUY:\169[F\132tP\252\191_\232N\251\178s\158c\171:a\232\157\209\236\144\0147a\155\128\197`]\128\014\253\147\135Z\129\158{\185W\006\214\024Rb\246\227B\149\004?\030\140\001T^\149{-\156tqw\1411\208\1411\220/\012S\211\133\203\192\030\003\r\182\021\246\015'\140\t[\185A\142\238\217\213W\185\186\021\184\252j\016{\162xz7\148se*\249\129\232\175\1785\161\213\215\195\216\1480D@\181\214y\0031\251c\237av\153g\0235\242 \247\244\031rn\1909\007\181@\006\143\221\153\129\130\203.b\208\251\b\131M\028E~\130\229\231\t\209\242\019\015B\236\159yiz\229\136\019w\128\2303G\240\016?\189a\233\003\202\207\214\242Ks=\215D\2541.\164\018 .\165<\028\023S\004\146E\131\000\226\216I\197\141\143ya\t\203)\030\012\017\173\232\030\024o\176x\248f\131\197\227\233\006\011\193]r\145\029J\207Z3\208s\237\002\027;\196\023]E\231B\216[y<\016\175\236 `OPO\133N\215\128\\_\222.i\230\236\2267\171\1399\007\130T\131\157\b\016TXGY\0296 Q\137%\018\156\179`j\184$7\131\161=$7\131Y:\025X\208<\174\227\219<8K_\199\215y,n\192\228d4\138\232}\187\255l\244\140\185Gt\162\rA\162\150VzD'Ky\231x\249\136[\195\165GTc\168\203\170\242\152j\128m\0004fF\196\155\185`.\195C\212?\1324\218QG:\202\156G\242\158f$\177\006\189H^\029\221\172S{\236k\136\029C&\228X\029\170s@\212\160\004H\245\167\194AQ{\018\224\158\238$Y\177\154\147\132L\244&A\238iM\"\180\213\153$\164V\164\176\163\1904\245d\208\150$\176V\169\200\161\223\205\153K\017ZeHB\007U\200\019\253\233I\020\205*\2275\202H\239\170\183\171\205\178\171\216s\n${5n\127\164\204e/\029H\1275\026,\029W\189\188\0121F\195\138'\226\229es\011\168\165\165\205\146\207\129\150\217\245i\019\135\143:\007\029o\027k\029\169gC {\240C\132\136\246\182\177E$\195\203X\016+\166\201\151\017\211l\204\012\022E[\231\017\246\002\228K\147\140\222I\180l\000\154\155\194 \164\222P\006)\173\155\164\144\241\187\196 \237\181?\136\199^'\006\221\225\234/(\195\166\247\213^P\182\154:\218$Kq\237\005e\171\185\163\147\024\151\014\211\011\202\214\160\211\011\202X\226\022\178\005\130\178\187\241C\134\140\246\150\162&\187o\030\198\171\246v\n\140\249\215x\135\025\nU\011\019\003\221\245\246#\198\235\000\026\147\\+!G7?A\250DeD]\208\002\023n\r\130\2335\210r\137\246\1329P\200\190[\218\176v\168)\r\030.'bX\255)\226\025\0319\218\137\217z\130\154\211\011\173X\012\161\223\179J\223\244\011<$\208\139\147-ot(\158\200\150\235\207\022u \236\199\135\231c0\232\144\018\185p\194\133\015X\135yD\239OCcx\027;\226\007\204\159\164\128\bI\2492\003\206\187\158\151\239_\199\159\202\134\194w3\253a\239\252f\246\155\141\177d\242C\219\192\b\183\017/xc9]G\248\230\171\153s\212{\248$1\223O\238\179j\003\160\131\000\146\183\163\029\138F\135\021>\219\030\235\232\216eI\223\180\186\002\224=\191\231\004\015\030\207\th}\157\193\184\023I\158\221\198a1\027E\158}\230\016\223d\159u/\173\198\179\221JsttP\"mo)nAs\179`IF\220\030(\r\217\212# \154$\005\140&IG\202).h\192s\165\162V,\152}g=!\2421\196/\187ad\251\028\167\025DiF=\168A\201\151\1581\183~6\186%\172\203\159oT\2039\177\027\205rAt\172X.\001\218\194\153\130\150\239Fpw%\140\t2\131N\218\133\002\\\196\154O\131M\150\t\199\158G\153&\156\248\141\1624.\015v\000\147\219oW\217\231\176\150A\158\172Yc\141\176\232\130\246\195I\232\238\014\nm(\208\182\253\016;oN\246\174x\172\211=\022\186\136\002\182\159\000L\006^4A\187Vo!\144\184\152\222\253\206\248j\204\180Y\tL\235\180:\207\254\023\135U\190`#\152e\159u\208ES\n\147\031L\242\159\163\202\143\018\183s1\236F\159\237\196\182\174\178wVr\155\189\135a\005Y\198\246c\156\197\166 \237\225\1415h{x\195\210\137\188\01124\154\014\212x\012\237V\001\180\017\018\188\024?\220\154\194}\150\139\245\184@g\180\159?\238Oa\200\205\230=\238\0202\205\209g$%\246\247\248%\202hM\175RF\250\026v\244\222\205g\134\150\217{\236\185\141#\212M\029\195\240\187\153\207;\146f\139\r\235\144w\211\211\161;\189\219\221,l\161\188o\2416\231\004\222B\157\195\\\252\158tV\006\136\229\138\252l\205\189\169\144,hJ0\245\137\203\130\189\024R\000\253H!&Z\003\248\181\012\240\229\212\227\208\169\182\167\212\016\131\157\165\251<S\015\208~o\195\004\011\011\236<_a\218\024*\023\b\195\214A\\\242\235E\155 \254\210p\158\131\227\150\1514\"\019\184\243\129\1779\030.\210\145 \241$\030\143\164\223\132\177\236\165c3k_\139bQ\222\134\177\236<\176y\1918\239\232\026\217\180\154\175\240\213\024\229\243,\244W\2431\189\019\200\242}$\242^\2486\030o\212\245hO\135\141\232\192\229P\r\230\179p\190\208\129\177\153x\137\205\246c\019\234\243\1273\222u_\015\162y\245\217\128\190\248\181\140\214\227\016\150\137\170\176\006\241\233\004\180\2375Bk7\129\204\201\176\1422\178&\215i\001\218\190m\233D\169C\129\012\242a\146)\031\018\191\023\1780\146\134\141 \024<\223u\188F|\162o\230\220B~\183g\229\016*\142\222h\131\031GY(\1733\174=1\221\252nf\224r\153\253n\221\173\139,\250Sb\149\245\187\029\133\0164\025\133\230\217\239\201\137\014\232\004\191\243\002%\236Y$\158\142\024\184\213\173\017\133\252\187\145uUf\252\016\016\244\208\143\205\230)\014\216\213*\179\183\165C\195\253\208\149\2492\211\139\211\011\226f$+\178\228\026uy\205\154\178H\219\201\163\002m\231\rK'\019\14504\153\028\212a\195\2335\236\186R\220\155\169\169\012\160M\226\006L\218\194\002\\\171\218\195B\022mT0\220|\164\211D\155}\216\149>\178\151T\144\163u\025\\g\031F\001\172f$\229F\2488\133-\139\b\166\186!\203r\188S\188\150\208\247f\194&e\140f\194Y\202\029\2394\163a%\252\209\1503\020\146\143\219\237i,\193?nv\167\161\155|\220w\174\192\252\251\241\021\231\n4\215\143{\206\021S\137\204mY\014\023g7\137\005\1356a\026\"\243/\174\169,\243\180O\0191\179\173\1447\167\195;F\128\253\023t\129\015\244\205\232b1K\240\244\195X\194\179\023\151U,\200\211]\011\014:\028\160\212\0170Wl|\212\158M\217\179R\156\r\224\210\199%\202\0202\004\229\1295\226\183)\230\149{\012\214\022,\165>z\171\003\163\020\172\2245\249\209\233\016\169\244\199\015\140\211\152+\216\135\211\2051\n\145\0127\200\219 \031\204\150\135\184N3d\\\150\t\024\151eB&K\172\194#\246\190\140\245\028\166\250\143\228@8\026\205\016E\238\024\143\237\246\157\161\147\145\165!C[\003*\236\230\206kh{\0317\151^\175n\192d\028\193x$\031+q\231\019P\017\131\029'EX3\160I\n\031\186\141V0\203\031\241\219\187X\165\169\t\1565\2496\188lQ\201\007\214\000\239e\154\165\144\189`\020\245J\1598\024\191>\194d\133\146\177\147\021D\t\203\0146\2028q!\011\201\137oDq5\005\140A 9\000\222\024:)\224\154\012mJ\019P\231\135\254\197\142\177s\143\245\195\165\127\238\147\143f`J\003o\223_\160\135X\184\141\240\189\183\166d\143\171\177\014\160\021\251\006L\170\145\169\155a\133\003\227\213\142\030\028I\237<\185\\\147\014\006\227u\246\133s\235,\251b\015\171A\223\248\162Fd\242B\2409\158\237\133\003\164\141SgGr\228\212\201\168n\157:[A\163S\167\132\026;u2\186\222\156\225*\132\030\029\225\154\000\180>\158\140\233\183\2373\022\220\230\192*jX\208\244\174@\140\214_6\167\223\204\166<S\252\144\179O\203\198=\198\161!\001\226\224\224\2258<\000\176\218\018r\026L\22909|\1373\245\212\017~\166F\171\207\0018\199O>\186o\172\195.\242\197~c\221\211a\190\198\174\213\151\196\128\131\212\238zN\162K}\217\222;\025\141\006\144\156\176E\252\201\t[\210'\217\189\154\200S\220\254q\180\217\191j\004\b[R\142\178{J\001\137\155J\014Iw\149\\\180v\179\200!\201n\145\131\236\174\144C\204\206\143\003\236y\023\135\132\237\029GI7\250u\224\183\206\168\011\172#x\028\142\030\135\021z\017q'\0030\180}\239\180\134l$\231\017Q)\187\173\237N3\002b\244\183W\201\023Dm\2291\158\251\181\215\n\231N\245-\179/\201\17724\224\228X\025\233\227`\238\003G\019\180^\"\236\024\201\196\bQ\147\0191\b\159\156\136\001\173\227<\222\029\187\005`A\244%n\176!C\137?<\"O\252\225g\217\127\252\231\127\"\179\255\023e5<\198"
let parse_glyphlist i =
let parse_line l =
let len = String.length l in
if len = 0 then None else
if l.[0] = '#' then None else
(* Find semicolon. Bail or extract name *)
let semipos =
try Some (String.index l ';') with Not_found -> None
in
match semipos with
| None -> None
| Some semipos ->
let name = String.sub l 0 semipos in
(* Read codes, one or more, space-delimited, four chars each. *)
let codes = ref []
and pos = ref (semipos + 1) in
try
while true do
codes := int_of_string ("0x" ^ String.sub l !pos 4)::!codes;
pos += 5
done;
Some ("", [])
with
_ -> Some ("/" ^ name, rev !codes)
in
let out = ref [] in
try
while true do
match parse_line (Pdfio.read_line i) with
| None -> ()
| Some (s, is) -> out := (s, is)::!out
done;
[]
with
End_of_file -> rev !out
let glyphmap =
memoize
(fun () ->
parse_glyphlist
(Pdfio.input_of_string
(Pdfio.string_of_bytes
(Pdfcodec.decode_flate
(Pdfio.bytes_of_string glyphlist_src)))))
(*let _ =
iter
(fun (k, v) ->
Printf.printf "%s = " k;
iter (Printf.printf "%X ") v;
flprint "\n")
glyphmap*)
let name_to_pdf =
[
(* New items from ISO Standard D.3... These appear in annotation text, even though it's a text string. *)
(* FIXME: Should we add all the codepoints, even those called undefined, to allow failures to be tracked? *)
"/controlCR", 0o015; "/controlLF", 0o012; "/controlHT", 0o013;
(* Original items from 1.6 spec *)
"/A", 0o101; "/AE", 0o306; "/Aacute", 0o301; "/Acircumflex", 0o302;
"/Adieresis", 0o304; "/Agrave", 0o300; "/Aring", 0o305; "/Atilde", 0o303;
"/B", 0o102; "/C", 0o103; "/Ccedilla", 0o307; "/D", 0o104; "/E", 0o105;
"/Eacute", 0o311; "/Ecircumflex", 0o312; "/Edieresis", 0o313; "/Egrave",
0o310; "/Eth", 0o320; "/Euro", 0o240; "/F", 0o106; "/G", 0o107; "/H", 0o110;
"/I", 0o111; "/Iacute", 0o315; "/Icircumflex", 0o316; "/Idieresis", 0o317;
"/Igrave", 0o314; "/J", 0o112; "/K", 0o113; "/L", 0o114; "/Lslash", 0o225;
"/M", 0o115; "/N", 0o116; "/Ntilde", 0o321; "/O", 0o117; "/OE", 0o226;
"/Oacute", 0o323; "/Ocircumflex", 0o324; "/Odieresis", 0o326; "/Ograve",
0o322; "/Oslash", 0o330; "/Otilde", 0o325; "/P", 0o120; "/Q", 0o121; "/R",
0o122; "/S", 0o123; "/Scaron", 0o227; "/T", 0o124; "/Thorn", 0o336; "/U",
0o125; "/Uacute", 0o332; "/Ucircumflex", 0o333; "/Udieresis", 0o334;
"/Ugrave", 0o331; "/V", 0o126; "/W", 0o127; "/X", 0o130; "/Y", 0o131;
"/Yacute", 0o335; "/Ydieresis", 0o230; "/Z", 0o132; "/Zcaron", 0o231; "/a",
0o141; "/aacute", 0o341; "/acircumflex", 0o342; "/acute", 0o264;
"/adieresis", 0o344; "/ae", 0o346; "/agrave", 0o340; "/ampersand", 0o046;
"/aring", 0o345; "/asciicircum", 0o136; "/asciitilde", 0o176; "/asterisk",
0o052; "/at", 0o100; "/atilde", 0o343; "/b", 0o142; "/backslash", 0o134;
"/bar", 0o174; "/braceleft", 0o173; "/braceright", 0o175; "/bracketleft",
0o133; "/bracketright", 0o135; "/breve", 0o030; "/brokenbar", 0o246;
"/bullet", 0o200; "/c", 0o143; "/caron", 0o031; "/ccedilla", 0o347;
"/cedilla", 0o270; "/cent", 0o242; "/circumflex", 0o032; "/colon", 0o072;
"/comma", 0o054; "/copyright", 0o251; "/currency", 0o244; "/d", 0o144;
"/dagger", 0o201; "/daggerdbl", 0o202; "/degree", 0o260; "/dieresis", 0o250;
"/divide", 0o367; "/dollar", 0o044; "/dotaccent", 0o033; "/dotlessi", 0o232;
"/e", 0o145; "/eacute", 0o351; "/ecircumflex", 0o352; "/edieresis", 0o353;
"/egrave", 0o350; "/eight", 0o070; "/ellipsis", 0o203; "/emdash", 0o204;
"/endash", 0o205; "/equal", 0o075; "/eth", 0o360; "/exclam", 0o041;
"/exclamdown", 0o241; "/f", 0o146; "/fi", 0o223; "/five", 0o065; "/fl",
0o223; "/florin", 0o206; "/four", 0o064; "/fraction", 0o207; "/g", 0o147;
"/germandbls", 0o337; "/grave", 0o140; "/greater", 0o076; "/guillemotleft",
0o253; "/guillemotright", 0o273; "/guilsinglleft", 0o210; "/guilsinglright",
0o211; "/h", 0o150; "/hungarumlaut", 0o034; "/hyphen", 0o055; "/i", 0o151;
"/iacute", 0o355; "/icircumflex", 0o356; "/idieresis", 0o357; "/igrave",
0o354; "/j", 0o152; "/k", 0o153; "/l", 0o154; "/less", 0o074; "/logicalnot",
0o254; "/lslash", 0o233; "/m", 0o155; "/macron", 0o257; "/minus", 0o212;
"/mu", 0o265; "/multiply", 0o327; "/n", 0o156; "/nine", 0o071; "/ntilde",
0o361; "/numbersign", 0o043; "/o", 0o157; "/oacute", 0o363; "/ocircumflex",
0o364; "/odieresis", 0o366; "/oe", 0o234; "/ogonek", 0o035; "/ograve", 0o362;
"/one", 0o061; "/onehalf", 0o275; "/onequarter", 0o274; "/onesuperior",
0o271; "/ordfeminine", 0o252; "/ordmasculine", 0o272; "/oslash", 0o370;
"/otilde", 0o365; "/p", 0o160; "/paragraph", 0o266; "/parenleft", 0o050;
"/parenright", 0o051; "/percent", 0o045; "/period", 0o056; "/periodcentered",
0o267; "/perthousand", 0o213; "/plus", 0o053; "/plusminus", 0o261; "/q",
0o161; "/question", 0o077; "/questiondown", 0o277; "/quotedbl", 0o042;
"/quotedblbase", 0o214; "/quotedblleft", 0o215; "/quotedblright", 0o216;
"/quoteleft", 0o217; "/quoteright", 0o220; "/quotesinglbase", 0o221;
"/quotesingle", 0o047; "/r", 0o162; "/registered", 0o256; "/ring", 0o036;
"/s", 0o163; "/scaron", 0o235; "/section", 0o247; "/semicolon", 0o073;
"/seven", 0o067; "/six", 0o066; "/slash", 0o057; "/space", 0o040;
"/sterling", 0o243; "/t", 0o164; "/thorn", 0o376; "/three", 0o063;
"/threequarters", 0o276; "/threesuperior", 0o263; "/tilde", 0o037;
"/trademark", 0o222; "/two", 0o062; "/twosuperior", 0o262; "/u", 0o165;
"/uacute", 0o372; "/ucircumflex", 0o373; "/udieresis", 0o374; "/ugrave",
0o371; "/underscore", 0o137; "/v", 0o166; "/w", 0o167; "/x", 0o170; "/y",
0o171; "/yacute", 0o375; "/ydieresis", 0o377; "/yen", 0o245; "/z", 0o172;
"/zcaron", 0o236; "/zero", 0o060]
(* Standard encoding *)
let name_to_standard =
["/A", 0o101; "/AE", 0o341; "/B", 0o102; "/C", 0o103; "/D", 0o104; "/E",
0o105; "/F", 0o106; "/G", 0o107; "/H", 0o110; "/I", 0o111; "/J", 0o112; "/K",
0o113; "/L", 0o114; "/Lslash", 0o350; "/M", 0o115; "/N", 0o116; "/O", 0o117;
"/OE", 0o352; "/Oslash", 0o351; "/P", 0o120; "/Q", 0o121; "/R", 0o122; "/S",
0o123; "/T", 0o124; "/U", 0o125; "/V", 0o126; "/W", 0o127; "/X", 0o130; "/Y",
0o131; "/Z", 0o132; "/a", 0o141; "/acute", 0o302; "/ae", 0o361; "/ampersand",
0o046; "/asciicircum", 0o136; "/asciitilde", 0o176; "/asterisk", 0o052; "/at",
0o100; "/b", 0o142; "/backslash", 0o134; "/bar", 0o174; "/braceleft", 0o173;
"/braceright", 0o175; "/bracketleft", 0o133; "/bracketright", 0o135; "/breve",
0o306; "/bullet", 0o267; "/c", 0o143; "/caron", 0o317; "/cedilla", 0o313;
"/cent", 0o242; "/circumflex", 0o303; "/colon", 0o072; "/comma", 0o054;
"/currency", 0o250; "/d", 0o144; "/dagger", 0o262; "/daggerdbl", 0o263;
"/dieresis", 0o310; "/dollar", 0o044; "/dotaccent", 0o307; "/dottlessi",
0o365; "/e", 0o145; "/eight", 0o070; "/ellipsis", 0o274; "/emdash", 0o320;
"/endash", 0o261; "/equal", 0o075; "/exclam", 0o041; "/exclamdown", 0o241;
"/f", 0o146; "/fi", 0o256; "/five", 0o065; "/fl", 0o257; "/florin", 0o246;
"/four", 0o064; "/fraction", 0o244; "/g", 0o147; "/germandbls", 0o373;
"/grave", 0o301; "/greater", 0o076; "/guillemotleft", 0o253;
"/guillemotright", 0o273; "/guilsinglleft", 0o254; "/guilsinglright", 0o255;
"/h", 0o150; "/hungarumlaut", 0o315; "/hyphen", 0o055; "/i", 0o151; "/j",
0o152; "/k", 0o153; "/l", 0o154; "/less", 0o074; "/lslash", 0o370; "/m",
0o155; "/macron", 0o305; "/n", 0o156; "/nine", 0o071; "/numbersign", 0o043;
"/o", 0o157; "/oe", 0o372; "/ogonek", 0o316; "/one", 0o061; "/ordfeminine",
0o343; "/ordmasculine", 0o353; "/oslash", 0o361; "/p", 0o160; "/paragraph",
0o266; "/parenleft", 0o050; "/parenright", 0o051; "/percent", 0o045;
"/period", 0o056; "/periodcentered", 0o264; "/perthousand", 0o275; "/plus",
0o053; "/q", 0o161; "/question", 0o077; "/questiondown", 0o277; "/quotedbl",
0o042; "/quotedblbase", 0o271; "/quotedblleft", 0o252; "/quotedblright",
0o272; "/quoteleft", 0o140; "/quoteright", 0o047; "/quotesinglbase", 0o270;
"/quotesingle", 0o251; "/r", 0o162; "/ring", 0o312; "/s", 0o163; "/section",
0o247; "/semicolon", 0o073; "/seven", 0o067; "/six", 0o066; "/slash", 0o057;
"/space", 0o040; "/sterling", 0o243; "/t", 0o164; "/three", 0o063; "/tilde",
0o304; "/two", 0o062; "/u", 0o165; "/underscore", 0o137; "/v", 0o166; "/w",
0o167; "/x", 0o170; "/y", 0o171; "/yen", 0o245; "/z", 0o172; "/zero", 0o060]
(* Mac Roman Encoding *)
let name_to_macroman =
["/A", 0o101; "/AE", 0o256; "/Aacute", 0o347; "/Acircumflex", 0o345;
"/Adieresis", 0o200; "/Agrave", 0o313; "/Aring", 0o201; "/Atilde", 0o314;
"/B", 0o102; "/C", 0o103; "/Ccedilla", 0o202; "/D", 0o104; "/E", 0o105;
"/Eacute", 0o203; "/Ecircumflex", 0o346; "/Edieresis", 0o350; "/Egrave",
0o351; "/F", 0o106; "/G", 0o107; "/H", 0o110; "/I", 0o111; "/Iacute", 0o352;
"/Icircumflex", 0o353; "/Idieresis", 0o354; "/Igrave", 0o355; "/J", 0o112;
"/K", 0o113; "/L", 0o114; "/M", 0o115; "/N", 0o116; "/Ntilde", 0o204; "/O",
0o117; "/OE", 0o316; "/Oacute", 0o356; "/Ocircumflex", 0o357; "/Odieresis",
0o205; "/Ograve", 0o361; "/Oslash", 0o257; "/Otilde", 0o315; "/P", 0o120;
"/Q", 0o121; "/R", 0o122; "/S", 0o123; "/T", 0o124; "/U", 0o125; "/Uacute",
0o362; "/Ucircumflex", 0o363; "/Udieresis", 0o206; "/Ugrave", 0o364; "/V",
0o126; "/W", 0o127; "/X", 0o130; "/Y", 0o131; "/Ydieresis", 0o331; "/Z",
0o132; "/a", 0o141; "/aacute", 0o207; "/acircumflex", 0o211; "/acute", 0o253;
"/adieresis", 0o212; "/ae", 0o276; "/agrave", 0o210; "/ampersand", 0o046;
"/aring", 0o214; "/asciicircum", 0o136; "/asciitilde", 0o176; "/asterisk",
0o052; "/at", 0o100; "/atilde", 0o213; "/b", 0o142; "/backslash", 0o134;
"/bar", 0o174; "/braceleft", 0o173; "/braceright", 0o175; "/bracketleft",
0o133; "/bracketright", 0o135; "/breve", 0o371; "/bullet", 0o245; "/c", 0o143;
"/caron", 0o377; "/ccedilla", 0o215; "/cedilla", 0o374; "/cent", 0o242;
"/circumflex", 0o366; "/colon", 0o072; "/comma", 0o054; "/copyright", 0o251;
"/currency", 0o333; "/d", 0o144; "/dagger", 0o240; "/daggerdbl", 0o340;
"/degree", 0o241; "/dieresis", 0o254; "/divide", 0o326; "/dollar", 0o044;
"/dotaccent", 0o372; "/dotlessi", 0o365; "/e", 0o145; "/eacute", 0o216;
"/ecircumflex", 0o220; "/edieresis", 0o221; "/egrave", 0o217; "/eight", 0o070;
"/ellipsis", 0o311; "/emdash", 0o321; "/endash", 0o320; "/equal", 0o075;
"/exclam", 0o041; "/exclamdown", 0o301; "/f", 0o146; "/fi", 0o336; "/five",
0o065; "/fl", 0o337; "/florin", 0o304; "/four", 0o064; "/fraction", 0o332;
"/g", 0o147; "/germandbls", 0o247; "/grave", 0o140; "/greater", 0o076;
"/guillemotleft", 0o307; "/guillemotright", 0o310; "/guilsinglleft", 0o334;
"/guilsinglright", 0o335; "/h", 0o150; "/hungrumlaut", 0o375; "/hyphen",
0o055; "/i", 0o151; "/iacute", 0o222; "/icircumflex", 0o224; "/idieresis",
0o225; "/igrave", 0o223; "/j", 0o152; "/k", 0o153; "/l", 0o154; "/less",
0o074; "/logicalnot", 0o302; "/m", 0o155; "/macron", 0o370; "/mu", 0o265;
"/n", 0o156; "/nine", 0o071; "/ntilde", 0o226; "/numbersign", 0o043; "/o",
0o157; "/oacute", 0o227; "/ocircumflex", 0o231; "/odieresis", 0o232; "/oe",
0o317; "/ogonek", 0o376; "/one", 0o061; "/ordfeminine", 0o273;
"/ordmasculine", 0o274; "/oslash", 0o277; "/otilde", 0o233; "/p", 0o160;
"/paragraph", 0o246; "/parenleft", 0o050; "/parenright", 0o051; "/percent",
0o045; "/period", 0o056; "/periodcentered", 0o341; "/perthousand", 0o344;
"/plus", 0o053; "/plusminus", 0o261; "/q", 0o161; "/question", 0o077;
"/questiondown", 0o300; "/quotedbl", 0o042; "/quotedblbase", 0o343;
"/quotedblleft", 0o322; "/quotedblright", 0o323; "/quoteleft", 0o324;
"/quoteright", 0o325; "/quotesinglbase", 0o342; "/quotesingle", 0o047; "/r",
0o162; "/registered", 0o250; "/ring", 0o373; "/s", 0o163; "/section", 0o244;
"/semicolon", 0o073; "/seven", 0o067; "/six", 0o066; "/slash", 0o057;
"/space", 0o040; "/sterling", 0o243; "/t", 0o164; "/three", 0o063; "/tilde",
0o367; "/trademark", 0o252; "/two", 0o062; "/u", 0o165; "/uacute", 0o234;
"/ucircumflex", 0o236; "/udieresis", 0o237; "/ugrave", 0o235; "/underscore",
0o137; "/v", 0o166; "/w", 0o167; "/x", 0o170; "/y", 0o171; "/ydieresis",
0o330; "/yen", 0o264; "/z", 0o172; "/zero", 0o060; (*"/space", 0o312*)] (*FIXME: see below*)
(* Win Ansi Encoding *)
let name_to_win =
["/A", 0o101; "/AE", 0o306; "/Aacute", 0o301; "/Acircumflex", 0o302;
"/Adieresis", 0o304; "/Agrave", 0o300; "/Aring", 0o305; "/Atilde", 0o303;
"/B", 0o102; "/C", 0o103; "/Ccedilla", 0o307; "/D", 0o104; "/E", 0o105;
"/Eacute", 0o311; "/Ecircumflex", 0o312; "/Edieresis", 0o313; "/Egrave",
0o310; "/Eth", 0o320; "/Euro", 0o200; "/F", 0o106; "/G", 0o107; "/H", 0o110;
"/I", 0o111; "/Iacute", 0o315; "/Icircumflex", 0o316; "/Idieresis", 0o317;
"/Igrave", 0o314; "/J", 0o112; "/K", 0o113; "/L", 0o114; "/M", 0o115; "/N",
0o116; "/Ntilde", 0o321; "/O", 0o117; "/OE", 0o214; "/Oacute", 0o323;
"/Ocircumflex", 0o324; "/Odieresis", 0o326; "/Ograve", 0o322; "/Oslash",
0o330; "/Otilde", 0o325; "/P", 0o120; "/Q", 0o121; "/R", 0o122; "/S", 0o123;
"/Scaron", 0o212; "/T", 0o124; "/Thorn", 0o336; "/U", 0o125; "/Uacute", 0o332;
"/Ucircumflex", 0o333; "/Udieresis", 0o334; "/Ugrave", 0o331; "/V", 0o126;
"/W", 0o127; "/X", 0o130; "/Y", 0o131; "/Yacute", 0o335; "/Ydieresis", 0o237;
"/Z", 0o132; "/Zcaron", 0o216; "/a", 0o141; "/aacute", 0o341; "/acircumflex",
0o342; "/acute", 0o264; "/adieresis", 0o344; "/ae", 0o346; "/agrave", 0o340;
"/ampersand", 0o046; "/aring", 0o345; "/asciicircum", 0o136; "/asciitilde",
0o176; "/asterisk", 0o052; "/at", 0o100; "/atilde", 0o343; "/b", 0o142;
"/backslash", 0o134; "/bar", 0o174; "/braceleft", 0o173; "/braceright", 0o175;
"/bracketleft", 0o133; "/bracketright", 0o135; "/brokenbar", 0o246; "/bullet",
0o225; "/c", 0o143; "/ccedilla", 0o347; "/cedilla", 0o270; "/cent", 0o242;
"/circumflex", 0o210; "/colon", 0o072; "/comma", 0o054; "/copyright", 0o251;
"/currency", 0o244; "/d", 0o144; "/dagger", 0o206; "/daggerdbl", 0o207;
"/degree", 0o260; "/dieresis", 0o250; "/divide", 0o367; "/dollar",0o044; "/e",
0o145; "/eacute", 0o351; "/ecircumflex", 0o352; "/edieresis", 0o353;
"/egrave", 0o350; "/eight", 0o070; "/ellipsis", 0o205; "/emdash", 0o227;
"/endash", 0o226; "/equal", 0o075; "/eth", 0o360; "/exclam", 0o041;
"/exclamdown", 0o241; "/f", 0o146; "/five", 0o065; "/florin", 0o203; "/four",
0o064; "/g", 0o147; "/germandbls", 0o337; "/grave", 0o140; "/greater", 0o076;
"/guillemotleft", 0o253; "/guillemotright", 0o273; "/guilsinglleft", 0o213;
"/guilsinglright", 0o233; "/h", 0o150; "/hyphen", 0o055; "/i", 0o151;
"/iacute", 0o355; "/icircumflex", 0o356; "/idieresis", 0o357; "/igrave",
0o354; "/j", 0o152; "/k", 0o153; "/l", 0o154; "/less", 0o074; "/logicalnot",
0o254; "/m", 0o155; "/macron", 0o257; "/mu", 0o265; "/multiply", 0o327; "/n",
0o156; "/nine", 0o071; "/ntilde", 0o361; "/numbersign", 0o043; "/o", 0o157;
"/oacute", 0o363; "/ocircumflex", 0o364; "/odieresis", 0o366; "/oe", 0o234;
"/ograve", 0o362; "/one", 0o061; "/onehalf", 0o275; "/onequarter", 0o274;
"/onesuperior", 0o271; "/ordfeminine", 0o252; "/ordmasculine", 0o272;
"/oslash", 0o370; "/otilde", 0o365; "/p", 0o160; "/paragraph", 0o266;
"/parenleft", 0o050; "/parenright", 0o051; "/percent", 0o045; "/period",
0o056; "/periodcentered", 0o267; "/perthousand", 0o211; "/plus", 0o053;
"/plusminus", 0o261; "/q", 0o161; "/question", 0o077; "/questiondown", 0o277;
"/quotedbl", 0o042; "/quotedblbase", 0o204; "/quotedblleft", 0o223;
"/quotedblright", 0o224; "/quoteleft", 0o221; "/quoteright", 0o222;
"/quotesinglbase", 0o202; "/quotesingle", 0o047; "/r", 0o162; "/registered",
0o256; "/s", 0o163; "/scaron", 0o232; "/section", 0o247; "/semicolon", 0o073;
"/seven", 0o067; "/six", 0o066; "/slash", 0o057; "/space", 0o040; "/sterling",
0o243; "/t", 0o164; "/thorn", 0o376; "/three", 0o063; "/threequarters", 0o276;
"/threesuperior", 0o263; "/tilde", 0o230; "/trademark", 0o231; "/two", 0o062;
"/twosuperior", 0o262; "/u", 0o165; "/uacute", 0o372; "/ucircumflex", 0o373;
"/udieresis", 0o374; "/ugrave", 0o371; "/underscore", 0o137; "/v", 0o166;
"/w", 0o167; "/x", 0o170; "/y", 0o171; "/yacute", 0o375; "/ydieresis", 0o377;
"/yen", 0o245; "/z", 0o172; "/zcaron", 0o236; "/zero", 0o060;(* "/space", 0o240;
"/hyphen", 0o255*)] (*FIXME: need these rules back in, but only in the reverse.. To make 1-to-1?*)
(* Mac Expert Encoding *)
let name_to_macexpert =
["/AEsmall", 0o276; "/Aacutesmall", 0o207; "/Acircumflexsmall", 0o211;
"/Acutesmall", 0o047; "/Adieresissmall", 0o212; "/Agravesmall", 0o210;
"/Aringsmall", 0o214; "/Asmall", 0o141; "/Atildesmall", 0o213; "/Brevesmall",
0o363; "/Bsmall", 0o142; "/Caronsmall", 0o256; "/Ccedillasmall", 0o215;
"/Cedillasmall", 0o311; "/Circumflexsmall", 0o136; "/Csmall", 0o143;
"/Dieresissmall", 0o254; "/Dotaccentsmall", 0o372; "/Dsmall", 0o144;
"/Eacutesmall", 0o216; "/Ecircumflexsmall", 0o220; "/Edieresissmall", 0o221;
"/Egravesmall", 0o217; "/Esmall", 0o145; "/Ethsmall", 0o104; "/Fsmall", 0o146;
"/Gravesmall", 0o140; "/Gsmall", 0o147; "/Hsmall", 0o150;
"/Hungarumlautsmall", 0o042; "/Iacutesmall", 0o222; "/Icircumflexsmall",
0o224; "/Idieresissmall", 0o225; "/Igravesmall", 0o223; "/Ismall", 0o151;
"/Jsmall", 0o152; "/Ksmall", 0o153; "/Lslashsmall", 0o302; "/Lsmall", 0o154;
"/Macronsmall", 0o364; "/Msmall", 0o155; "/Nsmall", 0o156; "/Ntildesmall",
0o226; "/OEsmall", 0o317; "/Oacutesmall", 0o227; "/Ocircumflexsmall", 0o231;
"/Odieresissmall", 0o232; "/Ogoneksmall", 0o362; "/Ogravesmall", 0o230;
"/Oslashsmall", 0o277; "/Osmall", 0o157; "/Otildesmall", 0o233; "/Psmall",
0o160; "/Qsmall", 0o161; "/Ringsmall", 0o373; "/Rsmall", 0o162;
"/Scaronsmall", 0o247; "/Ssmall", 0o163; "/Thornsmall", 0o271; "/Tildesmall",
0o176; "/Tsmall", 0o164; "/Uacutesmall", 0o234; "/Ucircumflexsmall", 0o236;
"/Udieresissmall", 0o237; "/Ugravesmall", 0o235; "/Usmall", 0o165; "/Vsmall",
0o166; "/Wsmall", 0o167; "/Xsmall", 0o170; "/Yacutesmall", 0o264;
"/Ydieresissmall", 0o330; "/Ysmall", 0o171; "/Zcaronsmall", 0o275; "/Zsmall",
0o172; "/ampersandsmall", 0o046; "/asuperior", 0o201; "/bsuperior", 0o365;
"/centinferior", 0o251; "/centoldstyle", 0o043; "/centsuperior", 0o202;
"/colon", 0o072; "/colonmonetary", 0o173; "/comma", 0o054; "/commainferior",
0o262; "/commasuperior", 0o370; "/dollarinferior", 0o266; "/dollaroldstyle",
0o044; "/dsuperior", 0o353; "/eightinferior", 0o245; "/eightoldstyle", 0o070;
"/eightsuperior", 0o241; "/esuperior", 0o344; "/exclamdownsmall", 0o326;
"/exclamsmall", 0o041; "/ff", 0o126; "/ffi", 0o131; "/ffl", 0o132; "/fi",
0o127; "/figuredash", 0o320; "/fiveeighths", 0o114; "/fiveinferior", 0o260;
"/fiveoldstyle", 0o065; "/fivesuperior", 0o336; "/fl", 0o130; "/fourinferior",
0o242; "/fouroldstyle", 0o064; "/foursuperior", 0o335; "/fraction", 0o057;
"/hyphen", 0o055; "/hypheninferior", 0o137; "/hyphensuperior", 0o137;
"/isuperior", 0o351; "/lsuperior", 0o361; "/msuperior", 0o367;
"/nineinferior", 0o273; "/nineoldstyle", 0o071; "/ninesuperior", 0o341;
"/nsuperior", 0o366; "/onedotenleader", 0o053; "/oneeighth", 0o112;
"/onefitted", 0o174; "/onehalf", 0o110; "/oneinferior", 0o301; "/oneoldstyle",
0o061; "/onequarter", 0o107; "/onesuperior", 0o332; "/onethird", 0o116;
"/osuperior", 0o257; "/parenleftinferior", 0o133; "/parenleftsuperior", 0o050;
"/parenrightinferior", 0o135; "/parenrightsuperior", 0o051; "/period", 0o056;
"/periodinferior", 0o263; "/periodsuperior", 0o371; "/questiondownsmall",
0o300; "/questionsmall", 0o077; "/rsuperior", 0o345; "/rupiah", 0o175;
"/semicolon", 0o073; "/seveneighths", 0o115; "/seveninferior", 0o246;
"/sevenoldstyle", 0o067; "/sevensuperior", 0o340; "/sixinferior", 0o244;
"/sixoldstyle", 0o066; "/sixsuperior", 0o337; "/space", 0o040; "/ssuperior",
0o352; "/threeeighths", 0o113; "/threeinferior", 0o243; "/threeoldstyle",
0o063; "/threequarters", 0o111; "/threequartersemdash", 0o075;
"/threesuperior", 0o334; "/tsuperior", 0o346; "/twodotenleader", 0o052;
"/twoinferior", 0o252; "/twooldstyle", 0o062; "/twosuperior", 0o333;
"/twothirds", 0o117; "/zeroinferior", 0o274; "/zerooldstyle", 0o060;
"/zerosuperior", 0o342]
(* Symbol Encoding *)
let name_to_symbol =
["/Alpha", 0o101; "/Beta", 0o102; "/Chi", 0o103; "/Delta", 0o104; "/Epsilon",
0o105; "/Eta", 0o110; "/Euro", 0o240; "/Gamma", 0o107; "/Ifraktur", 0o301;
"/Iota", 0o111; "/Kappa", 0o113; "/Lambda", 0o114; "/Mu", 0o115; "/Nu", 0o116;
"/Omega", 0o127; "/Omicron", 0o117; "/Phi", 0o106; "/Pi", 0o120; "/Psi",
0o131; "/Rfraktur", 0o302; "/Rho", 0o122; "/Sigma", 0o123; "/Tau", 0o124;
"/Theta", 0o121; "/Upsilon", 0o125; "/Upsilon1", 0o241; "/Xi", 0o130; "/Zeta",
0o132; "/aleph", 0o300; "/alpha", 0o141; "/ampersand", 0o046; "/angle", 0o320;
"/angleleft", 0o341; "/angleright", 0o361; "/approxequal", 0o273;
"/arrowboth", 0o253; "/arrowdblboth", 0o333; "/arrowdbldown", 0o337;
"/arrowdblleft", 0o334; "/arrowdblright", 0o336; "/arrowhorizex", 0o276;
"/arrowleft", 0o254; "/arrowright", 0o256; "/arrowup", 0o255; "/arrowvertex",
0o275; "/asteriskmath", 0o052; "/bar", 0o174; "/beta", 0o142; "/braceleft",
0o173; "/braceright", 0o175; "/bracelefttp", 0o354; "/braceleftmid", 0o355;
"/braceleftbt", 0o376; "/bracerighttp", 0o374; "/bracerightmid", 0o375;
"/bracerightbt", 0o376; "/braceex", 0o357; "/bracketleft", 0o133;
"/bracketright", 0o135; "/bracketlefttp", 0o351; "/bracketleftex", 0o352;
"/bracketleftbt", 0o353; "/bracketrighttp", 0o371; "/brackerrightex", 0o372;
"/bracketrightbt", 0o373; "/bullet", 0o267; "/carriagereturn", 0o277; "/chi",
0o143; "/circlemultiply", 0o304; "/circleplus", 0o305; "/club", 0o247;
"/colon", 0o072; "/comma", 0o054; "/congruent", 0o100; "/copyrightsans",
0o343; "/copyrightserif", 0o323; "/degree", 0o260; "/delta", 0o144;
"/diamond", 0o250; "/divide", 0o270; "/dotmath", 0o327; "/eight", 0o070;
"/element", 0o316; "/ellipsis", 0o274; "/emptyset", 0o306; "/epsilon", 0o145;
"/equal", 0o075; "/equivalence", 0o272; "/eta", 0o150; "/exclam", 0o041;
"/existential", 0o044; "/five", 0o065; "/florin", 0o246; "/four", 0o064;
"/fraction", 0o244; "/gamma", 0o147; "/gradient", 0o321; "/greater", 0o076;
"/greaterequal", 0o263; "/heart", 0o251; "/infinity", 0o245; "/integral",
0o362; "/integraltp", 0o363; "/integralex", 0o364; "/integralbt", 0o365;
"/intersection", 0o307; "/iota", 0o151; "/kappa", 0o153; "/lambda", 0o154;
"/less", 0o074; "/lessequal", 0o243; "/logicaland", 0o331; "/logicalnot",
0o330; "/logicalor", 0o332; "/lozenge", 0o340; "/minus", 0o055; "/minute",
0o242; "/mu", 0o155; "/multiply", 0o264; "/nine", 0o071; "/notelement", 0o317;
"/notequal", 0o271; "/notsubset", 0o313; "/nu", 0o156; "/numbersign", 0o043;
"/omega", 0o167; "/omega1", 0o166; "/omicron", 0o157; "/one", 0o061;
"/parenleft", 0o050; "/parenright", 0o051; "/parenlefttp", 0o346;
"/parenleftex", 0o347; "/parenleftbt", 0o350; "/parenrighttp", 0o366;
"/parenrightex", 0o367; "/parenrightbt", 0o370; "/partialdiff", 0o266;
"/percent", 0o045; "/period", 0o056; "/perpendicular", 0o136; "/phi", 0o146;
"/phi1", 0o152; "/pi", 0o160; "/plus", 0o153; "/plusminus", 0o261; "/product",
0o325; "/propersubset", 0o314; "/propersuperset", 0o311; "/proportional",
0o265; "/psi", 0o171; "/question", 0o077; "/radical", 0o326; "/radicalex",
0o140; "/reflexsubset", 0o315; "/reflexsuperset", 0o312; "/registersans",
0o342; "/registerserif", 0o322; "/rho", 0o162; "/second", 0o262; "/semicolon",
0o073; "/seven", 0o067; "/sigma", 0o163; "/sigma1", 0o126; "/similar", 0o176;
"/six", 0o066; "/slash", 0o157; "/space", 0o040; "/spade", 0o252; "/suchthat",
0o047; "/summation", 0o345; "/tau", 0o164; "/therefore", 0o134; "/theta",
0o161; "/theta1", 0o112; "/three", 0o063; "/trademarksans", 0o344;
"/trademarkserif", 0o324; "/two", 0o062; "/underscore", 0o137; "/union",
0o310; "/universal", 0o042; "/upsilon", 0o165; "/weierstrass", 0o303; "/xi",
0o303; "/zero", 0o060; "/zeta", 0o172]
(* 6. Dingbats encoding *)
let name_to_dingbats =
["/space", 0o040; "/a1", 0o041; "/a2", 0o042; "/a202", 0o043; "/a3", 0o044;
"/a4", 0o045; "/a5", 0o046; "/a119", 0o047; "/a118", 0o050; "/a117", 0o051;
"/a11", 0o052; "/a12", 0o053; "/a13", 0o054; "/a14", 0o055; "/a15", 0o056;
"/a16", 0o057; "/a105", 0o060; "/a17", 0o061; "/a18", 0o062; "/a19", 0o063;
"/a20", 0o064; "/a21", 0o065; "/a22", 0o066; "/a23", 0o067; "/a24", 0o070;
"/a25", 0o071; "/a26", 0o072; "/a27", 0o073; "/a28", 0o074; "/a6", 0o075;
"/a7", 0o076; "/a8", 0o077; "/a9", 0o100; "/a10", 0o101; "/a29", 0o102;
"/a30", 0o103; "/a31", 0o104; "/a32", 0o105; "/a33", 0o106; "/a34", 0o107;
"/a35", 0o110; "/a36", 0o111; "/a37", 0o112; "/a38", 0o113; "/a39", 0o114;
"/a40", 0o115; "/a41", 0o116; "/a42", 0o117; "/a43", 0o120; "/a44", 0o121;
"/a45", 0o122; "/a46", 0o123; "/a47", 0o124; "/a48", 0o125; "/a49", 0o126;
"/a50", 0o127; "/a51", 0o130; "/a52", 0o131; "/a53", 0o132; "/a54", 0o133;
"/a55", 0o134; "/a56", 0o135; "/a57", 0o136; "/a58", 0o137; "/a59", 0o140;
"/a60", 0o141; "/a61", 0o142; "/a62", 0o143; "/a63", 0o144; "/a64", 0o145;
"/a65", 0o146; "/a66", 0o147; "/a67", 0o150; "/a68", 0o151; "/a69", 0o152;
"/a70", 0o153; "/a71", 0o154; "/a72", 0o155; "/a73", 0o156; "/a74", 0o157;
"/a203", 0o160; "/a75", 0o161; "/a204", 0o162; "/a76", 0o163; "/a77", 0o164;
"/a78", 0o165; "/a79", 0o166; "/a81", 0o167; "/a82", 0o170; "/a83", 0o171;
"/a84", 0o172; "/a97", 0o173; "/a98", 0o174; "/a99", 0o175; "/a100", 0o176;
"/a101", 0o241; "/a102", 0o242; "/a103", 0o243; "/a104", 0o244; "/a106",
0o245; "/a107", 0o246; "/a108", 0o247; "/a112", 0o250; "/a111", 0o251;
"/a110", 0o252; "/a109", 0o253; "/a120", 0o254; "/a121", 0o255; "/a122",
0o256; "/a123", 0o257; "/a124", 0o260; "/a125", 0o261; "/a126", 0o262;
"/a127", 0o263; "/a128", 0o264; "/a129", 0o265; "/a130", 0o266; "/a131",
0o267; "/a132", 0o270; "/a133", 0o271; "/a134", 0o272; "/a135", 0o273;
"/a136", 0o274; "/a137", 0o275; "/a138", 0o276; "/a139", 0o277; "/a140",
0o300; "/a141", 0o301; "/a142", 0o302; "/a143", 0o303; "/a144", 0o304;
"/a145", 0o305; "/a146", 0o306; "/a147", 0o307; "/a148", 0o310; "/a149",
0o311; "/a150", 0o312; "/a151", 0o313; "/a152", 0o314; "/a153", 0O315;
"/a154", 0o316; "/a155", 0o317; "/a156", 0o320; "/a157", 0o321; "/a158",
0o322; "/a159", 0o323; "/a160", 0o324; "/a161", 0o325; "/a163", 0o326;
"/a164", 0o327; "/a196", 0o330; "/a165", 0o331; "/a192", 0o332; "/a166",
0o333; "/a167", 0o334; "/a168", 0o335; "/a169", 0o336; "/a170", 0o337;
"/a171", 0o340; "/a172", 0o341; "/a173", 0o342; "/a162", 0o343; "/a174",
0o344; "/a175", 0o345; "/a176", 0o346; "/a177", 0o347; "/a178", 0o350;
"/a179", 0o351; "/a193", 0o352; "/a180", 0o353; "/a199", 0o354; "/a181",
0o355; "/a200", 0o356; "/a182", 0o357; "/a201", 0o361; "/a183", 0o362;
"/a184", 0o363; "/a197", 0o364; "/a185", 0o365; "/a194", 0o366; "/a198",
0o367; "/a186", 0o370; "/a195", 0o371; "/a187", 0o372; "/a188", 0o373;
"/a189", 0o374; "/a190", 0o375; "/a191", 0o376]
(* Unicode equivalents for some of the PDF ZapfDingbats Encoding (Heuristic!). *)
let dingbatmap_arr =
[|"/a100", [0x275E]; "/a101", [0x2761]; "/a102", [0x2762]; "/a103", [0x2763];
"/a104", [0x2764]; "/a105", [0x2710]; "/a106", [0x2765]; "/a107", [0x2766];
"/a108", [0x2767]; "/a109", [0x2660]; "/a10", [0x2721]; "/a110", [0x2665];
"/a111", [0x2666]; "/a112", [0x2663]; "/a117", [0x2709]; "/a118", [0x2708];
"/a119", [0x2707]; "/a11", [0x261B]; "/a120", [0x2460]; "/a121", [0x2461];
"/a122", [0x2462]; "/a123", [0x2463]; "/a124", [0x2464]; "/a125", [0x2465];
"/a126", [0x2466]; "/a127", [0x2467]; "/a128", [0x2468]; "/a129", [0x2469];
"/a12", [0x261E]; "/a130", [0x2776]; "/a131", [0x2777]; "/a132", [0x2778];
"/a133", [0x2779]; "/a134", [0x277A]; "/a135", [0x277B]; "/a136", [0x277C];
"/a137", [0x277D]; "/a138", [0x277E]; "/a139", [0x277F]; "/a13", [0x270C];
"/a140", [0x2780]; "/a141", [0x2781]; "/a142", [0x2782]; "/a143", [0x2783];
"/a144", [0x2784]; "/a145", [0x2785]; "/a146", [0x2786]; "/a147", [0x2787];
"/a148", [0x2788]; "/a149", [0x2789]; "/a14", [0x270D]; "/a150", [0x278A];
"/a151", [0x278B]; "/a152", [0x278C]; "/a153", [0x278D]; "/a154", [0x278E];
"/a155", [0x278F]; "/a156", [0x2790]; "/a157", [0x2791]; "/a158", [0x2792];
"/a159", [0x2793]; "/a15", [0x270E]; "/a160", [0x2794]; "/a161", [0x2192];
"/a162", [0x27A3]; "/a163", [0x2194]; "/a164", [0x2195]; "/a165", [0x2799];
"/a166", [0x279B]; "/a167", [0x279C]; "/a168", [0x279D]; "/a169", [0x279E];
"/a16", [0x270F]; "/a170", [0x279F]; "/a171", [0x27A0]; "/a172", [0x27A1];
"/a173", [0x27A2]; "/a174", [0x27A4]; "/a175", [0x27A5]; "/a176", [0x27A6];
"/a177", [0x27A7]; "/a178", [0x27A8]; "/a179", [0x27A9]; "/a17", [0x2711];
"/a180", [0x27AB]; "/a181", [0x27AD]; "/a182", [0x27AF]; "/a183", [0x27B2];
"/a184", [0x27B3]; "/a185", [0x27B5]; "/a186", [0x27B8]; "/a187", [0x27BA];
"/a188", [0x27BB]; "/a189", [0x27BC]; "/a18", [0x2712]; "/a190", [0x27BD];
"/a191", [0x27BE]; "/a192", [0x279A]; "/a193", [0x27AA]; "/a194", [0x27B6];
"/a195", [0x27B9]; "/a196", [0x2798]; "/a197", [0x27B4]; "/a198", [0x27B7];
"/a199", [0x27AC]; "/a19", [0x2713]; "/a1", [0x2701]; "/a200", [0x27AE];
"/a201", [0x27B1]; "/a202", [0x2703]; "/a203", [0x2750]; "/a204", [0x2752];
"/a205", [0x276E]; "/a206", [0x2770]; "/a20", [0x2714]; "/a21", [0x2715];
"/a22", [0x2716]; "/a23", [0x2717]; "/a24", [0x2718]; "/a25", [0x2719];
"/a26", [0x271A]; "/a27", [0x271B]; "/a28", [0x271C]; "/a29", [0x2722];
"/a2", [0x2702]; "/a30", [0x2723]; "/a31", [0x2724]; "/a32", [0x2725];
"/a33", [0x2726]; "/a34", [0x2727]; "/a35", [0x2605]; "/a36", [0x2729];
"/a37", [0x272A]; "/a38", [0x272B]; "/a39", [0x272C]; "/a3", [0x2704];
"/a40", [0x272D]; "/a41", [0x272E]; "/a42", [0x272F]; "/a43", [0x2730];
"/a44", [0x2731]; "/a45", [0x2732]; "/a46", [0x2733]; "/a47", [0x2734];
"/a48", [0x2735]; "/a49", [0x2736]; "/a4", [0x260E]; "/a50", [0x2737];
"/a51", [0x2738]; "/a52", [0x2739]; "/a53", [0x273A]; "/a54", [0x273B];
"/a55", [0x273C]; "/a56", [0x273D]; "/a57", [0x273E]; "/a58", [0x273F];
"/a59", [0x2740]; "/a5", [0x2706]; "/a60", [0x2741]; "/a61", [0x2742];
"/a62", [0x2743]; "/a63", [0x2744]; "/a64", [0x2745]; "/a65", [0x2746];
"/a66", [0x2747]; "/a67", [0x2748]; "/a68", [0x2749]; "/a69", [0x274A];
"/a6", [0x271D]; "/a70", [0x274B]; "/a71", [0x25CF]; "/a72", [0x274D];
"/a73", [0x25A0]; "/a74", [0x274F]; "/a75", [0x2751]; "/a76", [0x25B2];
"/a77", [0x25BC]; "/a78", [0x25C6]; "/a79", [0x2756]; "/a7", [0x271E];
"/a81", [0x25D7]; "/a82", [0x2758]; "/a83", [0x2759]; "/a84", [0x275A];
"/a85", [0x276F]; "/a86", [0x2771]; "/a87", [0x2772]; "/a88", [0x2773];
"/a89", [0x2768]; "/a8", [0x271F]; "/a90", [0x2769]; "/a91", [0x276C];
"/a92", [0x276D]; "/a93", [0x276A]; "/a94", [0x276B]; "/a95", [0x2774];
"/a96", [0x2775]; "/a97", [0x275B]; "/a98", [0x275C]; "/a99", [0x275D];
"/a9", [0x2720]|]
let dingbatmap = Array.to_list dingbatmap_arr
(* Ditto truetype. Heuristic! *)
let truetypemap_arr =
[|"/G20", [0x0020]; "/G21", [0x0021]; "/G22", [0x0022]; "/G23", [0x0023];
"/G24", [0x0024]; "/G25", [0x0025]; "/G26", [0x0026]; "/G27", [0x0027];
"/G28", [0x0028]; "/G29", [0x0029]; "/G2a", [0x002A]; "/G2b", [0x002B];
"/G2c", [0x002C]; "/G2d", [0x002D]; "/G2e", [0x002E]; "/G2f", [0x002F];
"/G30", [0x0030]; "/G31", [0x0031]; "/G32", [0x0032]; "/G33", [0x0033];
"/G34", [0x0034]; "/G35", [0x0035]; "/G36", [0x0036]; "/G37", [0x0037];
"/G38", [0x0038]; "/G39", [0x0039]; "/G3a", [0x003A]; "/G3b", [0x003B];
"/G3c", [0x003C]; "/G3d", [0x003D]; "/G3e", [0x003E]; "/G3f", [0x003F];
"/G40", [0x0040]; "/G41", [0x0041]; "/G42", [0x0042]; "/G43", [0x0043];
"/G44", [0x0044]; "/G45", [0x0045]; "/G46", [0x0046]; "/G47", [0x0047];
"/G48", [0x0048]; "/G49", [0x0049]; "/G4a", [0x004A]; "/G4b", [0x004B];
"/G4c", [0x004C]; "/G4d", [0x004D]; "/G4e", [0x004E]; "/G4f", [0x004F];
"/G50", [0x0050]; "/G51", [0x0051]; "/G52", [0x0052]; "/G53", [0x0053];
"/G54", [0x0054]; "/G55", [0x0055]; "/G56", [0x0056]; "/G57", [0x0057];
"/G58", [0x0058]; "/G59", [0x0059]; "/G5a", [0x005A]; "/G5b", [0x005B];
"/G5c", [0x005C]; "/G5d", [0x005D]; "/G5e", [0x005E]; "/G5f", [0x005F];
"/G60", [0x0060]; "/G61", [0x0061]; "/G62", [0x0062]; "/G63", [0x0063];
"/G64", [0x0064]; "/G65", [0x0065]; "/G66", [0x0066]; "/G67", [0x0067];
"/G68", [0x0068]; "/G69", [0x0069]; "/G6a", [0x006A]; "/G6b", [0x006B];
"/G6c", [0x006C]; "/G6d", [0x006D]; "/G6e", [0x006E]; "/G6f", [0x006F];
"/G70", [0x0070]; "/G71", [0x0071]; "/G72", [0x0072]; "/G73", [0x0073];
"/G74", [0x0074]; "/G75", [0x0075]; "/G76", [0x0076]; "/G77", [0x0077];
"/G78", [0x0078]; "/G79", [0x0079]; "/G7a", [0x007A]; "/G7b", [0x007B];
"/G7c", [0x007C]; "/G7d", [0x007D]; "/G7e", [0x007E]; "/Ga0", [0x00A0];
"/Ga1", [0x00A1]; "/Ga2", [0x00A2]; "/Ga3", [0x00A3]; "/Ga4", [0x00A4];
"/Ga5", [0x00A5]; "/Ga6", [0x00A6]; "/Ga7", [0x00A7]; "/Ga8", [0x00A8];
"/Ga9", [0x00A9]; "/Gaa", [0x00AA]; "/Gab", [0x00AB]; "/Gac", [0x00AC];
"/Gad", [0x00AD]; "/Gae", [0x00AE]; "/Gaf", [0x00AF]; "/Gb0", [0x00B0];
"/Gb1", [0x00B1]; "/Gb2", [0x00B2]; "/Gb3", [0x00B3]; "/Gb4", [0x00B4];
"/Gb5", [0x00B5]; "/Gb6", [0x00B6]; "/Gb7", [0x00B7]; "/Gb8", [0x00B8];
"/Gb9", [0x00B9]; "/Gba", [0x00BA]; "/Gbb", [0x00BB]; "/Gbc", [0x00BC];
"/Gbd", [0x00BD]; "/Gbe", [0x00BE]; "/Gbf", [0x00BF]; "/Gc0", [0x00C0];
"/Gc1", [0x00C1]; "/Gc2", [0x00C2]; "/Gc3", [0x00C3]; "/Gc4", [0x00C4];
"/Gc5", [0x00C5]; "/Gc6", [0x00C6]; "/Gc7", [0x00C7]; "/Gc8", [0x00C8];
"/Gc9", [0x00C9]; "/Gca", [0x00CA]; "/Gcb", [0x00CB]; "/Gcc", [0x00CC];
"/Gcd", [0x00CD]; "/Gce", [0x00CE]; "/Gcf", [0x00CF]; "/Gd0", [0x00D0];
"/Gd1", [0x00D1]; "/Gd2", [0x00D2]; "/Gd3", [0x00D3]; "/Gd4", [0x00D4];
"/Gd5", [0x00D5]; "/Gd6", [0x00D6]; "/Gd7", [0x00D7]; "/Gd8", [0x00D8];
"/Gd9", [0x00D9]; "/Gda", [0x00DA]; "/Gdb", [0x00DB]; "/Gdc", [0x00DC];
"/Gdd", [0x00DD]; "/Gde", [0x00DE]; "/Gdf", [0x00DF]; "/Ge0", [0x00E0];
"/Ge1", [0x00E1]; "/Ge2", [0x00E2]; "/Ge3", [0x00E3]; "/Ge4", [0x00E4];
"/Ge5", [0x00E5]; "/Ge6", [0x00E6]; "/Ge7", [0x00E7]; "/Ge8", [0x00E8];
"/Ge9", [0x00E9]; "/Gea", [0x00EA]; "/Geb", [0x00EB]; "/Gec", [0x00EC];
"/Ged", [0x00ED]; "/Gee", [0x00EE]; "/Gef", [0x00EF]; "/Gf0", [0x00F0];
"/Gf1", [0x00F1]; "/Gf2", [0x00F2]; "/Gf3", [0x00F3]; "/Gf4", [0x00F4];
"/Gf5", [0x00F5]; "/Gf6", [0x00F6]; "/Gf7", [0x00F7]; "/Gf8", [0x00F8];
"/Gf9", [0x00F9]; "/Gfa", [0x00FA]; "/Gfb", [0x00FB]; "/Gfc", [0x00FC];
"/Gfd", [0x00FD]; "/Gfe", [0x00FE]; "/Gff", [0x00FF]; "/G82", [0x201A];
"/G83", [0x0192]; "/G84", [0x201E]; "/G85", [0x2026]; "/G86", [0x2020];
"/G87", [0x2021]; "/G88", [0x02C6]; "/G89", [0x2030]; "/G8a", [0x0160];
"/G8b", [0x2039]; "/G8c", [0x0152]; "/G91", [0x2018]; "/G92", [0x2019];
"/G93", [0x201C]; "/G94", [0x201D]; "/G95", [0x2022]; "/G96", [0x2013];
"/G97", [0x2014]; "/G98", [0x02DC]; "/G99", [0x2122]; "/G9a", [0x0161];
"/G9b", [0x203A]; "/G9c", [0x0153]; "/G9f", [0x0178]; "/G2A", [0x002A];
"/G2B", [0x002B]; "/G2C", [0x002C]; "/G2D", [0x002D]; "/G2E", [0x002E];
"/G2F", [0x002F]; "/G3A", [0x003A]; "/G3B", [0x003B]; "/G3C", [0x003C];
"/G3D", [0x003D]; "/G3E", [0x003E]; "/G3F", [0x003F]; "/G4A", [0x004A];
"/G4B", [0x004B]; "/G4C", [0x004C]; "/G4D", [0x004D]; "/G4E", [0x004E];
"/G4F", [0x004F]; "/G5A", [0x005A]; "/G5B", [0x005B]; "/G5C", [0x005C];
"/G5D", [0x005D]; "/G5E", [0x005E]; "/G5F", [0x005F]; "/G6A", [0x006A];
"/G6B", [0x006B]; "/G6C", [0x006C]; "/G6D", [0x002D]; "/G6E", [0x006E];
"/G6F", [0x006F]; "/G7A", [0x007A]; "/G7B", [0x007B]; "/G7C", [0x007C];
"/G7D", [0x007D]; "/G7E", [0x007E]; "/G8A", [0x008A]; "/G8B", [0x008B];
"/G8C", [0x008C]; "/G9A", [0x009A]; "/G9B", [0x009B]; "/G9C", [0x009C];
"/GA0", [0x00A0]; "/GA1", [0x00A1]; "/GA2", [0x00A2]; "/GA3", [0x00A3];
"/GA4", [0x00A4]; "/GA5", [0x00A5]; "/GA6", [0x00A6]; "/GA7", [0x00A7];
"/GA8", [0x00A8]; "/GA9", [0x00A9]; "/GAA", [0x00AA]; "/GAB", [0x00AB];
"/GAC", [0x00AC]; "/GAD", [0x00AD]; "/GAE", [0x00AE]; "/GAF", [0x00AF];
"/GB0", [0x00B0]; "/GB1", [0x00B1]; "/GB2", [0x00B2]; "/GB3", [0x00B3];
"/GB4", [0x00B4]; "/GB5", [0x00B5]; "/GA6", [0x00B6]; "/GB7", [0x00B7];
"/GB8", [0x00B8]; "/GB9", [0x00B9]; "/GBA", [0x00BA]; "/GBB", [0x00BB];
"/GBC", [0x00BC]; "/GBD", [0x00BD]; "/GBE", [0x00BE]; "/GBF", [0x00BF];
"/GC0", [0x00C0]; "/GC1", [0x00C1]; "/GC2", [0x00C2]; "/GC3", [0x00C3];
"/GC4", [0x00C4]; "/GC5", [0x00C5]; "/GC6", [0x00C6]; "/GC7", [0x00C7];
"/GC8", [0x00C8]; "/GC9", [0x00C9]; "/GCA", [0x00CA]; "/GCB", [0x00CB];
"/GCC", [0x00CC]; "/GCD", [0x00CD]; "/GCE", [0x00CE]; "/GCF", [0x00CF];
"/GD0", [0x00D0]; "/GD1", [0x00D1]; "/GD2", [0x00D2]; "/GD3", [0x00D3];
"/GD4", [0x00D4]; "/GD5", [0x00D5]; "/GD6", [0x00D6]; "/GD7", [0x00D7];
"/GD8", [0x00D8]; "/GD9", [0x00D9]; "/GDA", [0x00DA]; "/GDB", [0x00DB];
"/GDC", [0x00DC]; "/GDD", [0x00DD]; "/GDE", [0x00DE]; "/GDF", [0x00DF];
"/GE0", [0x00E0]; "/GE1", [0x00E1]; "/GE2", [0x00E2]; "/GE3", [0x00E3];
"/GE4", [0x00E4]; "/GE5", [0x00E5]; "/GE6", [0x00E6]; "/GE7", [0x00E7];
"/GE8", [0x00E8]; "/GE9", [0x00E9]; "/GEA", [0x00EA]; "/GEB", [0x00EB];
"/GEC", [0x00EC]; "/GED", [0x00ED]; "/GEE", [0x00EE]; "/GEF", [0x00EF];
"/GF0", [0x00F0]; "/GF1", [0x00F1]; "/GF2", [0x00F2]; "/GF3", [0x00F3];
"/GF4", [0x00F4]; "/GF5", [0x00F5]; "/GF6", [0x00F6]; "/GF7", [0x00F7];
"/GF8", [0x00F8]; "/GF9", [0x00F9]; "/GFA", [0x00FA]; "/GFB", [0x00FB];
"/GFC", [0x00FC]; "/GFD", [0x00FD]; "/GFE", [0x00FE]; "/GFF", [0x00FF]|]
let truetypemap = Array.to_list truetypemap_arr
(* The reverse glyph map is not a 1-1 mapping. So we need special version of
hashtable_of_dictionary which a) prefers glyphs with alphabetic names over
those earlier in the map which have numeric names b) Doesn't overwrite any
entry already there, preserving any intelligence which might be in the ordering
of the glyph map *)
let revglyph_hashtable_of_dictionary pairs =
let contains_digit s =
mem true (map isdigit (explode s))
in
let table = Hashtbl.create (length pairs) in
iter
(fun (k, v) ->
try
if contains_digit (Hashtbl.find table k) && not (contains_digit v)
then Hashtbl.replace table k v
with
Not_found -> Hashtbl.add table k v)
pairs;
table
let glyph_hashes =
memoize (fun () -> hashtable_of_dictionary (glyphmap () @ dingbatmap @ truetypemap))
let reverse_glyph_hashes =
memoize (fun () -> revglyph_hashtable_of_dictionary (map (fun (a, b) -> (b, a)) (glyphmap ())))
let name_to_pdf_hashes =
hashtable_of_dictionary name_to_pdf
let reverse_name_to_pdf_hashes =
hashtable_of_dictionary (map (fun (a, b) -> (b, a)) name_to_pdf)